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

Lyndon Brown jnqnfe at gmail.com
Wed Sep 23 21:10:44 CEST 2020


I'll leave it to others perhaps to evaluate the patch set, but indeed
the current menus in the 4.0 redesign have been feeling a bit off to
me, lacking in a little polish perhaps. In one respect it's the grey
background matching the main window panel rather than typical white of
menus. In another it's inconsistent alignment between those entries
with icons and those without (I prefer the consistent alignment of the
text in the v3.0 menus). There's also inconsistency in height of
entries. And I'm not sure whether the size of tick and arrow icons are
a little large.

Sorry, I hope I do not offend with such critical feedback.

I see what you mean about the limitation of the menu being restricted
to the bounds of the window size. If you make the window small the menu
is restricted in height forcing scrolling, which isn't even obvious
since the scrollbar (for me) doesn't appear until you actually start
scrolling, and then gives a rather weird bouncing affects once you hit
the bottom.


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