[vlc-devel] menu work - CSD?

Pierre Lamot pierre at videolabs.io
Thu Sep 24 09:40:10 CEST 2020


On 2020-09-23 21:12, Lyndon Brown wrote:
> 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.


Yes we do have plans to implement CSD.

CSD will be an optional feature (like it's done in firefox for 
instance).
We are still evaluating way to do it. either using 5.15 functionalities 
(but
this mean that this will be unavailable when your Qt version is older) 
or with a
custom implementation which would be available everywhere but it 
probably requires
a lot more work to have something complete.

> 
> 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
>> 
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list