[vlc-devel] [PATCH 00/18] qml: native menus

Pierre Lamot pierre at videolabs.io
Wed Sep 23 14:27:34 CEST 2020


this patchset brings back native menu in the UI.

The rational to ditch qml Menus is:

* QML menus are limited to the window frame of the UI (as they are drawn within
  QML the OpenGL context).

* Non-native look'n feel (requires a lot of customisation).

* UX is a bit off, navigating between submenus is not really smooth (submenus
  close themselves with no latency as soon as the mouse leaves the submenu area)

* Mixing static and dynamic menu entries or having optional entries often
  requires a lot of hacks.

* Native menus brings back functionalities that haven't been ported yet (like lua
  scripts and Renderer selection).

Qt.labs.plateform menus was a potential alternative, but it's a bit hit and
miss. Some functionalities are missing and it suffers from the same drawback
regarding dynamic entries.

At the moment QML menus are kept for the MenuBar version (for the --no-medialib
version)

Fatih Uzunoglu (1):
  qt: clean MainUI

Pierre Lamot (17):
  qt: move gridView mode property to MainInterface
  qt: remove obsolete menu entries
  qt: use Qt modern style connections when building menus
  qt: allow to specify whether CheckableListMenu should use a
    QActionGroup
  qml: move color scheme to main interface
  qt: remove obsolete settings class
  qt: make Role enum of medialib models public
  qt: allow passing media options when playing/enqueueing medialibrary
    items
  qt: playlistItem bool operator return true when it has an actual
    content
  qt: bring back native menu for intf dialog popup menu
  qml: pass mouse position to contextMenuButtonClicked signal
  qml: use a native implementation for the main dropdown menu
  qml: use a native implementation for medialibrary contextual menu
  qml: use a native implementation for network contextual menu
  qml: use a native implementation for playlist contextual menu
  qml: factorize mouse interaction in grid views
  qml: right clicking selected items in table view should not reset
    selection

 modules/gui/qt/Makefile.am                    |   8 +-
 modules/gui/qt/dialogs/dialogs_provider.cpp   |  13 +-
 .../gui/qt/dialogs/toolbar/toolbareditor.cpp  |   2 -
 .../gui/qt/maininterface/main_interface.cpp   |  24 +-
 .../gui/qt/maininterface/main_interface.hpp   |  19 +-
 modules/gui/qt/maininterface/mainui.cpp       |  52 +--
 modules/gui/qt/maininterface/mainui.hpp       |  33 --
 .../qt/maininterface/qml/BannerSources.qml    |  18 +-
 modules/gui/qt/medialibrary/medialib.cpp      |  64 ++-
 modules/gui/qt/medialibrary/medialib.hpp      |  21 +-
 .../gui/qt/medialibrary/mlalbumtrackmodel.cpp |  20 -
 .../gui/qt/medialibrary/mlalbumtrackmodel.hpp |  17 +
 modules/gui/qt/medialibrary/mlartistmodel.cpp |  12 -
 modules/gui/qt/medialibrary/mlartistmodel.hpp |  10 +
 modules/gui/qt/medialibrary/mlbasemodel.hpp   |   2 +
 modules/gui/qt/medialibrary/mlgenremodel.cpp  |  12 -
 modules/gui/qt/medialibrary/mlgenremodel.hpp  |  12 +
 modules/gui/qt/medialibrary/mlvideomodel.cpp  |  22 -
 modules/gui/qt/medialibrary/mlvideomodel.hpp  |  20 +
 .../gui/qt/medialibrary/qml/MusicAlbums.qml   |  56 +--
 .../gui/qt/medialibrary/qml/MusicArtist.qml   |  62 ++-
 .../medialibrary/qml/MusicArtistsDisplay.qml  |  46 +--
 .../gui/qt/medialibrary/qml/MusicGenres.qml   |  48 +--
 .../qml/MusicTrackListDisplay.qml             |   9 +
 .../medialibrary/qml/MusicTracksDisplay.qml   |  28 --
 .../gui/qt/medialibrary/qml/VideoDisplay.qml  |  97 ++---
 .../qt/medialibrary/qml/VideoListDisplay.qml  |   7 -
 modules/gui/qt/menus/custom_menus.cpp         |  15 +-
 modules/gui/qt/menus/custom_menus.hpp         |  11 +-
 modules/gui/qt/menus/menus.cpp                | 168 ++++----
 modules/gui/qt/menus/menus.hpp                |   4 +-
 modules/gui/qt/menus/qml/ViewMenu.qml         |  16 +-
 modules/gui/qt/menus/qml_menu_wrapper.cpp     | 377 ++++++++++++++++++
 modules/gui/qt/menus/qml_menu_wrapper.hpp     | 163 ++++++++
 modules/gui/qt/network/networkdevicemodel.cpp |  14 -
 modules/gui/qt/network/networkdevicemodel.hpp |  11 +
 modules/gui/qt/network/networkmediamodel.cpp  |  16 -
 modules/gui/qt/network/networkmediamodel.hpp  |  12 +
 .../qt/network/qml/NetworkBrowseDisplay.qml   |  89 +----
 modules/gui/qt/player/qml/ControlButtons.qml  |  18 +-
 modules/gui/qt/player/qml/Player.qml          |   7 -
 modules/gui/qt/playlist/media.hpp             |   9 +-
 modules/gui/qt/playlist/playlist_item.cpp     |   2 +-
 modules/gui/qt/playlist/qml/PLItem.qml        |   8 +-
 .../gui/qt/playlist/qml/PlaylistListView.qml  | 155 +------
 modules/gui/qt/style/VLCColors.qml            |   8 +-
 modules/gui/qt/util/color_scheme_model.cpp    | 106 +++++
 modules/gui/qt/util/color_scheme_model.hpp    |  50 +++
 modules/gui/qt/util/settings.cpp              |  37 --
 modules/gui/qt/util/settings.hpp              |  52 ---
 modules/gui/qt/widgets/qml/ExpandGridView.qml |  12 +
 modules/gui/qt/widgets/qml/GridItem.qml       |   8 +-
 .../qt/widgets/qml/KeyNavigableTableView.qml  |  12 +-
 53 files changed, 1176 insertions(+), 938 deletions(-)
 create mode 100644 modules/gui/qt/menus/qml_menu_wrapper.cpp
 create mode 100644 modules/gui/qt/menus/qml_menu_wrapper.hpp
 create mode 100644 modules/gui/qt/util/color_scheme_model.cpp
 create mode 100644 modules/gui/qt/util/color_scheme_model.hpp
 delete mode 100644 modules/gui/qt/util/settings.cpp
 delete mode 100644 modules/gui/qt/util/settings.hpp

-- 
2.25.1



More information about the vlc-devel mailing list