[vlc-devel] menu work - CSD?

Lyndon Brown jnqnfe at gmail.com
Wed Sep 23 21:12:25 CEST 2020


Without meaning to derail discussion of the proposed change, on the
topic of menus, I though I'd just take the opportunity to ask whether
there are any plans in terms of adoption of CSD, now that Qt 5.15
finally has brought support for it?

I'm a fan of "modern" CSD designs, and if done well, it might be a very
welcome enhancement to the v4.0 redesign.


On Wed, 2020-09-23 at 14:27 +0200, Pierre Lamot wrote:
> 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
> 



More information about the vlc-devel mailing list