View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017066 | Scribus | User Interface | public | 2023-12-01 20:04 | 2023-12-13 11:27 |
Reporter | guiodic | Assigned To | nitramr | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 1.7.0.svn | ||||
Summary | 0017066: Add icons to tabs | ||||
Description | Tab labels often get cut off if the side panel is too narrow (see attached picture). It would be useful to have icons on the tabs so that they are immediately identifiable | ||||
Tags | No tags attached. | ||||
Patch | Yes | ||||
|
|
|
yeah, it makes sense! do you (or anybody else) have suggestions on how those icons could look like? (no idea if martin already have plans for this in the Indigo UI project) |
|
Yes, Martin has already plans. :D The attached patch implements a tab UI like in Inkscape. Only the active tab have an icon, text and a close button. The patch also contains the latest version (4.2.0) of the Advanced Docking System. To achieve the icon only tab I made a small modifaction of the ADS, but I will submit a pull request to the original project too. If you have proposals for palette icons, let me know. Icons from top left to bottom right: 1. Arrange Pages 2. Frame Properties 3. Content Properties 4. Layers 5. Align & Distribute 6. Action History 7. Outline 8. Bookmarks 9. Scrapbook 10. Symbols 11. Inline Items 12. Custom Shapes ads_2023-12-02_01.patch (57,704 bytes)
Index: resources/iconsets/1_7_0/16/panel-action-history.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-action-history.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-action-history.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2H4V4H2V2ZM6 12L10 9L10 11.0163C12.704 11.1935 14.8437 12.7941 14.9918 14.7799C13.9158 13.7067 12.0817 13 10 12.9999L10 15L6 12ZM14 2H5V4H14V2ZM5 5H14V7H5V5ZM4 5H2V7H4V5ZM2 8H4V10H2V8ZM7 8H5V10H7V8Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-align-distribute.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-align-distribute.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-align-distribute.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3 0H2V15H3V0ZM8 2H4V5H8V2ZM13 6H4V9H13V6ZM4 10H10V13H4V10Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-bookmarks.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-bookmarks.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-bookmarks.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14 0H3V1H2V4H3V6H2V9H3V11H2V14H3V15H14V0ZM3 13H4V12H3V13ZM3 8V7H4V8H3ZM3 3H4V2H3V3ZM8 3.00004H12V10L10 8.00004L8 10V3.00004Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-content-properties.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-content-properties.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-content-properties.svg (Arbeitskopie) @@ -0,0 +1,11 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<g clip-path="url(#clip0_1137_49)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3 0H0V3H1V12H0V15H3V14H8V13H3V12H2V3H3V2H12V3H13V8H14V3H15V0H12V1H3V0Z" fill-opacity="0.4"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7 4H3V7H7V4ZM13.25 9H11.75V10.1144C11.3962 10.2256 11.0763 10.4132 10.8097 10.6581L9.84393 10.1005L9.09393 11.3995L10.0592 11.9568C10.0205 12.1317 10 12.3135 10 12.5C10 12.6865 10.0205 12.8683 10.0592 13.0432L9.09396 13.6005L9.84396 14.8995L10.8097 14.342C11.0763 14.5868 11.3962 14.7744 11.75 14.8856V16H13.25V14.8855C13.6039 14.7744 13.9238 14.5868 14.1904 14.342L15.1561 14.8995L15.9061 13.6005L14.9409 13.0432C14.9796 12.8683 15 12.6865 15 12.5C15 12.3135 14.9796 12.1317 14.9409 11.9568L15.9061 11.3995L15.1561 10.1005L14.1904 10.6581C13.9238 10.4132 13.6039 10.2256 13.25 10.1145V9ZM13.5 12.5C13.5 13.0523 13.0523 13.5 12.5 13.5C11.9477 13.5 11.5 13.0523 11.5 12.5C11.5 11.9477 11.9477 11.5 12.5 11.5C13.0523 11.5 13.5 11.9477 13.5 12.5ZM8 4H12V5H8V4ZM12 6H8V7H12V6ZM3 8H10V9H3V8ZM8 10H3V11H8V10Z"/> +</g> +<defs> +<clipPath id="clip0_1137_49"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> Index: resources/iconsets/1_7_0/16/panel-custom-shapes.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-custom-shapes.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-custom-shapes.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path d="M8 1L10.3176 5.60851L15.5 6.34752L11.75 9.93475L12.6353 15L8 12.6085L3.36474 15L4.25 9.93475L0.5 6.34752L5.68237 5.60851L8 1Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-frame-properties.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-frame-properties.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-frame-properties.svg (Arbeitskopie) @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<g clip-path="url(#clip0_1137_23)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H3V1H12V0H15V3H14V8H13V3H12V2H3V3H2V12H3V13H8V14H3V15H0V12H1V3H0V0ZM13.25 9H11.75V10.1144C11.3962 10.2256 11.0763 10.4132 10.8097 10.6581L9.84393 10.1005L9.09393 11.3995L10.0592 11.9568C10.0205 12.1317 10 12.3135 10 12.5C10 12.6865 10.0205 12.8683 10.0592 13.0432L9.09396 13.6005L9.84396 14.8995L10.8097 14.342C11.0763 14.5868 11.3962 14.7744 11.75 14.8856V16H13.25V14.8855C13.6039 14.7744 13.9238 14.5868 14.1904 14.342L15.1561 14.8995L15.9061 13.6005L14.9409 13.0432C14.9796 12.8683 15 12.6865 15 12.5C15 12.3135 14.9796 12.1317 14.9409 11.9568L15.9061 11.3995L15.1561 10.1005L14.1904 10.6581C13.9238 10.4132 13.6039 10.2256 13.25 10.1145V9ZM13.5 12.5C13.5 13.0523 13.0523 13.5 12.5 13.5C11.9477 13.5 11.5 13.0523 11.5 12.5C11.5 11.9477 11.9477 11.5 12.5 11.5C13.0523 11.5 13.5 11.9477 13.5 12.5Z"/> +</g> +<defs> +<clipPath id="clip0_1137_23"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> Index: resources/iconsets/1_7_0/16/panel-inline-items.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-inline-items.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-inline-items.svg (Arbeitskopie) @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1H16V2H0V1ZM0 3H9V4H0V3ZM6 5H0V6H6V5ZM0 7H5V8H0V7ZM7 9H0V10H7V9ZM0 11H7V12H0V11ZM16 13H0V14H16V13Z"/> +<path d="M11 3L12.5451 5.96262L16 6.43769L13.5 8.74377L14.0902 12L11 10.4626L7.90983 12L8.5 8.74377L6 6.43769L9.45491 5.96262L11 3Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-layers.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-layers.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-layers.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8 2L1 7L8 12L15 7L8 2ZM1 9L1.7 8.5L8 13L14.3 8.5L15 9L8 14L1 9Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-outline.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-outline.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-outline.svg (Arbeitskopie) @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M1 2H6V5H1V2ZM7 7H15V10H7V7ZM15 12H7V15H15V12Z"/> +<path d="M3 6H4V8H6V9H4V13H6V14H3V6Z" fill-opacity="0.4"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-page.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-page.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-page.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3.79289 0H15V15H0V3.79289L3.79289 0ZM4.20711 1L1 4.20711V14H14V1H4.20711Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-scrapbook.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-scrapbook.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-scrapbook.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14 0H3V1H2V4H3V6H2V9H3V11H2V14H3V15H14V0ZM3 13H4V12H3V13ZM3 8V7H4V8H3ZM3 3H4V2H3V3ZM5 3H12V6H5V3Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-symbols.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-symbols.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-symbols.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M6 1H1V15H6V1ZM10 1H7V15H10V1ZM11 1H15V15H11V1ZM5 11H2V13H5V11ZM8 11H9V13H8V11ZM14 11H12V13H14V11Z"/> +</svg> Index: resources/iconsets/1_7_0/1_7_0.xml =================================================================== --- resources/iconsets/1_7_0/1_7_0.xml (Revision 25845) +++ resources/iconsets/1_7_0/1_7_0.xml (Arbeitskopie) @@ -555,14 +560,27 @@ <icon id="22/zoom.png" file="16/tool-zoom.svg" /> <icon id="wizard.png" file="16/tool-copy-style.svg" /> <icon id="wizard16.png" file="16/tool-copy-style.svg" /> - <!-- Red onLight="#E54545" onDark="#FF6666" --> <icon id="16/insert-barcode.png" file="16/tool-insert-barcode.svg" /> - <icon id="22/insert-barcode.png" file="16/tool-insert-barcode.svg" /> - - <!-- Windows --> - <icon id="close" file="16/action-close.svg" /> - <icon id="dock-float" file="16/action-window-float.svg" /> - <icon id="menu-down" file="16/action-menu-down.svg" /> - - </icons> -</iconset> + <icon id="22/insert-barcode.png" file="16/tool-insert-barcode.svg" /> + + <!-- Windows --> + <icon id="close" file="16/action-close.svg" /> + <icon id="dock-float" file="16/action-window-float.svg" /> + <icon id="menu-down" file="16/action-menu-down.svg" /> + + <!-- Panels --> + <icon id="panel-action-history" file="16/panel-action-history.svg" /> + <icon id="panel-align-distribute" file="16/panel-align-distribute.svg" /> + <icon id="panel-bookmarks" file="16/panel-bookmarks.svg" /> + <icon id="panel-content-properties" file="16/panel-content-properties.svg" /> + <icon id="panel-custom-shapes" file="16/panel-custom-shapes.svg" /> + <icon id="panel-frame-properties" file="16/panel-frame-properties.svg" /> + <icon id="panel-inline-items" file="16/panel-inline-items.svg" /> + <icon id="panel-layers" file="16/panel-layers.svg" /> + <icon id="panel-outline" file="16/panel-outline.svg" /> + <icon id="panel-page" file="16/panel-page.svg" /> + <icon id="panel-scrapbook" file="16/panel-scrapbook.svg" /> + <icon id="panel-symbols" file="16/panel-symbols.svg" /> + + </icons> +</iconset> Index: scribus/plugins/shapes/shapepalette.cpp =================================================================== --- scribus/plugins/shapes/shapepalette.cpp (Revision 25845) +++ scribus/plugins/shapes/shapepalette.cpp (Arbeitskopie) @@ -280,7 +280,7 @@ } } -ShapePalette::ShapePalette(QWidget *parent) : DockPanelBase("Shap", parent) +ShapePalette::ShapePalette(QWidget *parent) : DockPanelBase("Shap", "panel-custom-shapes", parent) { setMinimumSize( QSize( 220, 240 ) ); setObjectName(QString::fromLocal8Bit("Shap")); Index: scribus/scribus.cpp =================================================================== --- scribus/scribus.cpp (Revision 25845) +++ scribus/scribus.cpp (Arbeitskopie) @@ -292,11 +292,13 @@ CDockManager::setConfigFlag(CDockManager::OpaqueSplitterResize, true); CDockManager::setConfigFlag(CDockManager::TabCloseButtonIsToolButton, true); CDockManager::setConfigFlag(CDockManager::AllTabsHaveCloseButton, false); - CDockManager::setConfigFlag(CDockManager::DockAreaDynamicTabsMenuButtonVisibility, true); +// CDockManager::setConfigFlag(CDockManager::DockAreaDynamicTabsMenuButtonVisibility, true); CDockManager::setConfigFlag(CDockManager::DockAreaHasCloseButton, false); - CDockManager::setConfigFlag(CDockManager::DockAreaHasUndockButton, false); + CDockManager::setConfigFlag(CDockManager::DockAreaHasUndockButton, false); CDockManager::setConfigFlag(CDockManager::DockAreaHideDisabledButtons, true); CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); + CDockManager::setConfigFlag(CDockManager::DisableTabTextEliding, true); + CDockManager::setConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab, true); // Documentation: https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/blob/master/doc/user-guide.md#auto-hide-configuration-flags // CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); Index: scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt (Arbeitskopie) @@ -1,9 +1,13 @@ ###<< Scribus -set(ADS_VERSION "4.1.1") +set(ADS_VERSION "4.2.0") ###>> Scribus cmake_minimum_required(VERSION 3.5) +if (POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif (POLICY CMP0091) + # By default, the version information is extracted from the git index. However, # we can override this behavior by explicitly setting ADS_VERSION and # skipping the git checks. This is useful for cases where this project is being Index: scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md (Arbeitskopie) @@ -27,10 +27,16 @@ - [`FloatingContainerForceNativeTitleBar` (Linux only)](#floatingcontainerforcenativetitlebar-linux-only) - [`FloatingContainerForceQWidgetTitleBar` (Linux only)](#floatingcontainerforceqwidgettitlebar-linux-only) - [`MiddleMouseButtonClosesTab`](#middlemousebuttonclosestab) + - [`DisableTabTextEliding`](#disabletabtexteliding) - [Auto-Hide Configuration Flags](#auto-hide-configuration-flags) - [Auto Hide Dock Widgets](#auto-hide-dock-widgets) - [Pinning Auto-Hide Widgets to a certain border](#pinning-auto-hide-widgets-to-a-certain-border) - [Show / Hide Auto-Hide Widgets via Mouse Over](#show--hide-auto-hide-widgets-via-mouse-over) + - [Drag \& Drop to Auto-Hide](#drag--drop-to-auto-hide) + - [Auto-Hide Tab Insertion Order](#auto-hide-tab-insertion-order) + - [Auto-Hide Tab Sorting](#auto-hide-tab-sorting) + - [Auto-Hide Drag to Float / Dock](#auto-hide-drag-to-float--dock) + - [Auto-Hide Context Menu](#auto-hide-context-menu) - [Adding Auto Hide Widgets](#adding-auto-hide-widgets) - [Setting Auto-Hide Flags](#setting-auto-hide-flags) - [`AutoHideFeatureEnabled`](#autohidefeatureenabled) @@ -40,6 +46,8 @@ - [`AutoHideSideBarsIconOnly`](#autohidesidebarsicononly) - [`AutoHideShowOnMouseOver`](#autohideshowonmouseover) - [`AutoHideCloseButtonCollapsesDock`](#autohideclosebuttoncollapsesdock) + - [`AutoHideHasCloseButton`](#autohidehasclosebutton) + - [`AutoHideHasMinimizeButton`](#autohidehasminimizebutton) - [DockWidget Feature Flags](#dockwidget-feature-flags) - [`DockWidgetClosable`](#dockwidgetclosable) - [`DockWidgetMovable`](#dockwidgetmovable) @@ -467,6 +475,17 @@ ![MiddleMouseButtonClosesTab true](cfg_flag_MiddleMouseButtonClosesTab.gif) +### `DisableTabTextEliding` + +Set this flag to disable eliding of tab texts in dock area tabs: + +![DisableTabTextEliding true](cfg_flag_DisableTabTextEliding_true.png) + +The flag is disabled by default and the text in all tabs is elided to show as +many tabs as possible even if there is not much space: + +![DisableTabTextEliding false](cfg_flag_DisableTabTextEliding_false.png) + ## Auto-Hide Configuration Flags ### Auto Hide Dock Widgets @@ -503,6 +522,59 @@ collapsed if the mouse cursor leaves the Auto-Hide widget. Showing and hiding by mouse click still works if this feature is enabled. +### Drag & Drop to Auto-Hide + +You can easily drag any dock widget or any floating widget to the +borders of a window to pin it as a auto-hide tab in one of the 4 sidebars. +If you drag a dock widget close the one of the four window borders, special +drop overlays will be shown to indicate the drop area for auto-hide widgets: + +![Auo-Hide drag to Sidebar](AutoHide_Drag_to_Sidebar.gif) + +Of course, this also works with dock areas: + +![Auo-Hide drag Dock Area](AutoHide_Drag_DockArea.gif) + +If you drag a dock widget or dock area into a sidebar, then you even have +control over where tabs are inserted. Simply drag your mouse over a specific +auto-hide tab, and your dragged dock widget will be inserted before this tab. +Drag to the sidebar area behind the last tab, and the dragged widget will be +appended as last tab. In the following screen capture, the **Image Viewer 1** will +be inserted before the **Table 0** Auto-Hide tab and the **Image Viewer 2** +is appended behind the last tab: + +![Auo-Hide tab insert order](AutoHide_Tab_Insert_Order.gif) + +### Auto-Hide Tab Insertion Order + +It is also possible to drag Auto-Hide tabs to a new auto-hide position. +That means, you can drag them to a different border or sidebar: + +![Auto-Hide change sidebar](AutoHide_Change_Sidebar.gif) + +### Auto-Hide Tab Sorting + +You can drag Auto-Hide tabs to a new position in the current sidebar +to sort them: + +![Auo-Hide sort tabs](AutoHide_Sort_Tabs.gif) + +### Auto-Hide Drag to Float / Dock + +But that is not all. You can also simply move Auto-Hide tabs to another +floating widget or dock them via drag and drop: + +![Auo-Hide drag to float or dock](AutoHide_Drag_to_Float_or_Dock.gif) + +### Auto-Hide Context Menu + +All Auto-Hide tabs now have a context menu, that provides all the functionality +that you know from Dock widget tabs. With the **Pin To...** item from the +context menu it is very easy to move an Auto-Hide tab to a different Auto-Hide +sidebar: + +![Auo-Hide context menu](AutoHide_Context_Menu.png) + ### Adding Auto Hide Widgets Adding an auto hide widget is similar to adding a dock widget, simply call @@ -605,6 +677,24 @@ ![AutoHideCloseButtonCollapsesDock true](cfg_flag_AutoHideCloseButtonCollapsesDock_true.gif) +If you enable the `AutoHideHasMinimizeButton` flag, you should disable this +flag our you will have two buttons with minimize functionality. + +### `AutoHideHasCloseButton` + +If this flag is set (default), then each auto hide widget has a close button: + +![AutoHideHasCloseButton](cfg_flag_AutoHideHasCloseButton.png) + +The functionality of the close button (close or minimize) is configured by the +`AutoHideCloseButtonCollapsesDock` flag. + +### `AutoHideHasMinimizeButton` + +If this flag is set (disabled by default), then each auto hide widget has a minimize button. + +![AutoHideHasMinimizeButton](cfg_flag_AutoHideHasMinimizeButton.png) + ## DockWidget Feature Flags ### `DockWidgetClosable` Index: scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml (Arbeitskopie) @@ -1,12 +1,12 @@ # Specify the build system. [build-system] -requires = ["sip >=6.0.2, <6.3", "PyQt-builder >=1.6, <2", "PyQt5==5.15.4", "PyQt5-sip<13,>=12.8"] +requires = ["sip >=6.0.2", "PyQt-builder >=1.6", "PyQt5>=5.15", "PyQt5-sip>=12.8"] build-backend = "sipbuild.api" # Specify the PEP 566 metadata for the project. [tool.sip.metadata] name = "PyQtAds" -version = "4.0.2" +version = "4.4.1" summary = "Python bindings for Qt Advanced Docking System" home-page = "https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/" license = "LGPL v2.1" @@ -16,8 +16,10 @@ [tool.sip.project] tag-prefix = "QtAds" +dunder-init = true [tool.sip.bindings.ads] +pep484-pyi = true define-macros = ["ADS_SHARED_EXPORT"] sip-file = "ads.sip" include-dirs = ["src"] Index: scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip (Arbeitskopie) @@ -1,4 +1,6 @@ %Module(name=PyQtAds, call_super_init=True, keyword_arguments="Optional", use_limited_api=True) +%HideNamespace(name=ads) + %Import QtCore/QtCoremod.sip %DefaultSupertype sip.simplewrapper Index: scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp (Arbeitskopie) @@ -478,7 +478,7 @@ case DraggingFloatingWidget: ev->accept(); d->FloatingWidget->finishDragging(); - if (d->DockWidget->isAutoHide() && d->DragStartOrientation != orientation()) + if (d->DockWidget->autoHideDockContainer() && d->DragStartOrientation != orientation()) { d->DockWidget->autoHideDockContainer()->resetToInitialDockWidgetSize(); } Index: scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt (Arbeitskopie) @@ -85,7 +85,12 @@ Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) if (UNIX AND NOT APPLE) - target_link_libraries(${library_name} PUBLIC xcb) + if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + find_package(X11 REQUIRED) + target_link_libraries(${library_name} PUBLIC X11::xcb) + else() + target_link_libraries(${library_name} PUBLIC xcb) + endif() endif() set_target_properties(${library_name} PROPERTIES AUTOMOC ON @@ -93,6 +98,7 @@ CXX_EXTENSIONS OFF VERSION ${VERSION_SHORT} EXPORT_NAME ${library_name} + DEBUG_POSTFIX "d" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin" Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp (Arbeitskopie) @@ -72,10 +72,11 @@ QPointer<CTitleBarButton> AutoHideButton; QPointer<CTitleBarButton> UndockButton; QPointer<CTitleBarButton> CloseButton; + QPointer<CTitleBarButton> MinimizeButton; QBoxLayout* Layout; CDockAreaWidget* DockArea; CDockAreaTabBar* TabBar; - CElidingLabel* AutoHideTitleLabel; + CElidingLabel* AutoHideTitleLabel = nullptr; bool MenuOutdated = true; QMenu* TabsMenu; QList<tTitleBarButton*> DockWidgetActionsButtons; @@ -218,6 +219,17 @@ Layout->addWidget(AutoHideButton, 0); _this->connect(AutoHideButton, SIGNAL(clicked()), SLOT(onAutoHideButtonClicked())); + // Minimize button + MinimizeButton = new CTitleBarButton(testAutoHideConfigFlag(CDockManager::AutoHideHasMinimizeButton)); + MinimizeButton->setObjectName("dockAreaMinimizeButton"); + MinimizeButton->setAutoRaise(true); + MinimizeButton->setVisible(false); + internal::setButtonIcon(MinimizeButton, QStyle::SP_TitleBarMinButton, ads::DockAreaMinimizeIcon); + internal::setToolTip(MinimizeButton, QObject::tr("Minimize")); + MinimizeButton->setSizePolicy(ButtonSizePolicy); + Layout->addWidget(MinimizeButton, 0); + _this->connect(MinimizeButton, SIGNAL(clicked()), SLOT(minimizeAutoHideContainer())); + // Close button CloseButton = new CTitleBarButton(testConfigFlag(CDockManager::DockAreaHasCloseButton)); CloseButton->setObjectName("dockAreaCloseButton"); @@ -236,7 +248,10 @@ { AutoHideTitleLabel = new CElidingLabel(""); AutoHideTitleLabel->setObjectName("autoHideTitleLabel"); - Layout->addWidget(AutoHideTitleLabel); + // At position 0 is the tab bar - insert behind tab bar + Layout->insertWidget(1, AutoHideTitleLabel); + AutoHideTitleLabel->setVisible(false); // Default hidden + Layout->insertWidget(2 ,new CSpacerWidget(_this)); } @@ -324,10 +339,8 @@ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); d->createTabBar(); + d->createButtons(); d->createAutoHideTitleLabel(); - d->AutoHideTitleLabel->setVisible(false); // Default hidden - d->Layout->addWidget(new CSpacerWidget(this)); - d->createButtons(); setFocusPolicy(Qt::NoFocus); } @@ -432,6 +445,24 @@ //============================================================================ +void CDockAreaTitleBar::onAutoHideCloseActionTriggered() +{ + d->DockArea->closeArea(); +} + + +//============================================================================ +void CDockAreaTitleBar::minimizeAutoHideContainer() +{ + auto AutoHideContainer = d->DockArea->autoHideDockContainer(); + if (AutoHideContainer) + { + AutoHideContainer->collapseView(true); + } +} + + +//============================================================================ void CDockAreaTitleBar::onUndockButtonClicked() { if (d->DockArea->features().testFlag(CDockWidget::DockWidgetFloatable)) @@ -547,6 +578,7 @@ case TitleBarButtonUndock: return d->UndockButton; case TitleBarButtonClose: return d->CloseButton; case TitleBarButtonAutoHide: return d->AutoHideButton; + case TitleBarButtonMinimize: return d->MinimizeButton; default: return nullptr; } @@ -735,7 +767,17 @@ } Menu.addSeparator(); } - Action = Menu.addAction(isAutoHide ? tr("Close") : tr("Close Group"), this, SLOT(onCloseButtonClicked())); + + if (isAutoHide) + { + Action = Menu.addAction(tr("Minimize"), this, SLOT(minimizeAutoHideContainer())); + Action = Menu.addAction(tr("Close"), this, SLOT(onAutoHideCloseActionTriggered())); + } + else + { + Action = Menu.addAction(isAutoHide ? tr("Close") : tr("Close Group"), this, SLOT(onCloseButtonClicked())); + } + Action->setEnabled(d->DockArea->features().testFlag(CDockWidget::DockWidgetClosable)); if (!isAutoHide && !isTopLevelArea) { @@ -782,7 +824,8 @@ case TitleBarButtonClose: if (d->DockArea->isAutoHide()) { - return tr("Close"); + bool Minimize = CDockManager::testAutoHideConfigFlag(CDockManager::AutoHideCloseButtonCollapsesDock); + return Minimize ? tr("Minimize") : tr("Close"); } if (CDockManager::testConfigFlag(CDockManager::DockAreaCloseButtonClosesTab)) @@ -802,7 +845,17 @@ return QString(); } + //============================================================================ +void CDockAreaTitleBar::showAutoHideControls(bool Show) +{ + d->TabBar->setVisible(!Show); // Auto hide toolbar never has tabs + d->MinimizeButton->setVisible(Show); + d->AutoHideTitleLabel->setVisible(Show); +} + + +//============================================================================ CTitleBarButton::CTitleBarButton(bool showInTitleBar, QWidget* parent) : tTitleBarButton(parent), ShowInTitleBar(showInTitleBar), @@ -858,6 +911,7 @@ setStyleSheet("border: none; background: none;"); } + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h (Arbeitskopie) @@ -97,6 +97,8 @@ private Q_SLOTS: void onTabsMenuAboutToShow(); void onCloseButtonClicked(); + void onAutoHideCloseActionTriggered(); + void minimizeAutoHideContainer(); void onUndockButtonClicked(); void onTabsMenuActionTriggered(QAction* Action); void onCurrentTabChanged(int Index); @@ -208,6 +210,11 @@ */ void setAreaFloating(); + /** + * Call this function, to create all the required auto hide controls + */ + void showAutoHideControls(bool Show); + Q_SIGNALS: /** * This signal is emitted if a tab in the tab bar is clicked by the user Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp (Arbeitskopie) @@ -390,20 +390,29 @@ return; } - if (IsTopLevel) + bool IsAutoHide = _this->isAutoHide(); + if (IsAutoHide) { + bool ShowCloseButton = CDockManager::autoHideConfigFlags().testFlag(CDockManager::AutoHideHasCloseButton); + TitleBar->button(TitleBarButtonClose)->setVisible(ShowCloseButton); + TitleBar->button(TitleBarButtonAutoHide)->setVisible(true); + TitleBar->button(TitleBarButtonUndock)->setVisible(false); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(false); + } + else if (IsTopLevel) + { TitleBar->button(TitleBarButtonClose)->setVisible(!container->isFloating()); TitleBar->button(TitleBarButtonAutoHide)->setVisible(!container->isFloating()); // Undock and tabs should never show when auto hidden - TitleBar->button(TitleBarButtonUndock)->setVisible(!container->isFloating() && !_this->isAutoHide()); - TitleBar->button(TitleBarButtonTabsMenu)->setVisible(!_this->isAutoHide()); + TitleBar->button(TitleBarButtonUndock)->setVisible(!container->isFloating()); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(true); } else { TitleBar->button(TitleBarButtonClose)->setVisible(true); TitleBar->button(TitleBarButtonAutoHide)->setVisible(true); - TitleBar->button(TitleBarButtonUndock)->setVisible(!_this->isAutoHide()); - TitleBar->button(TitleBarButtonTabsMenu)->setVisible(!_this->isAutoHide()); + TitleBar->button(TitleBarButtonUndock)->setVisible(true); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(true); } } @@ -847,9 +856,7 @@ if (isAutoHideFeatureEnabled()) { - auto tabBar = d->TitleBar->tabBar(); - tabBar->setVisible(!IsAutoHide); // Never show tab bar when auto hidden - d->TitleBar->autoHideTitleLabel()->setVisible(IsAutoHide); // Always show when auto hidden, never otherwise + d->TitleBar->showAutoHideControls(IsAutoHide); updateTitleBarButtonVisibility(Container->topLevelDockArea() == this); } } Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp (Arbeitskopie) @@ -1932,10 +1932,11 @@ NewRootSplitter = d->newSplitter(Qt::Horizontal); } - d->Layout->replaceWidget(d->RootSplitter, NewRootSplitter); + QLayoutItem* li = d->Layout->replaceWidget(d->RootSplitter, NewRootSplitter); auto OldRoot = d->RootSplitter; d->RootSplitter = qobject_cast<CDockSplitter*>(NewRootSplitter); OldRoot->deleteLater(); + delete li; return true; } Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp (Arbeitskopie) @@ -118,6 +118,10 @@ CDockFocusController* FocusController = nullptr; CDockWidget* CentralWidget = nullptr; bool IsLeavingMinimized = false; + Qt::ToolButtonStyle ToolBarStyleDocked = Qt::ToolButtonIconOnly; + Qt::ToolButtonStyle ToolBarStyleFloating = Qt::ToolButtonTextUnderIcon; + QSize ToolBarIconSizeDocked = QSize(16, 16); + QSize ToolBarIconSizeFloating = QSize(24, 24); /** * Private data constructor @@ -1361,6 +1365,63 @@ return FloatingContainersTitle; } + +//=========================================================================== +void CDockManager::setDockWidgetToolBarStyle(Qt::ToolButtonStyle Style, CDockWidget::eState State) +{ + if (CDockWidget::StateFloating == State) + { + d->ToolBarStyleFloating = Style; + } + else + { + d->ToolBarStyleDocked = Style; + } +} + + +//=========================================================================== +Qt::ToolButtonStyle CDockManager::dockWidgetToolBarStyle(CDockWidget::eState State) const +{ + if (CDockWidget::StateFloating == State) + { + return d->ToolBarStyleFloating; + } + else + { + return d->ToolBarStyleDocked; + } +} + + +//=========================================================================== +void CDockManager::setDockWidgetToolBarIconSize(const QSize& IconSize, CDockWidget::eState State) +{ + if (CDockWidget::StateFloating == State) + { + d->ToolBarIconSizeFloating = IconSize; + } + else + { + d->ToolBarIconSizeDocked = IconSize; + } +} + + +//=========================================================================== +QSize CDockManager::dockWidgetToolBarIconSize(CDockWidget::eState State) const +{ + if (CDockWidget::StateFloating == State) + { + return d->ToolBarIconSizeFloating; + } + else + { + return d->ToolBarIconSizeDocked; + } +} + + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h (Arbeitskopie) @@ -212,7 +212,9 @@ FloatingContainerForceQWidgetTitleBar = 0x1000000,//!< Linux only ! Forces all FloatingContainer to use a QWidget based title bar. //!< If neither this nor FloatingContainerForceNativeTitleBar is set (the default) native titlebars are used except on known bad systems. //! Users can overwrite this by setting the environment variable ADS_UseNativeTitle to "1" or "0". - MiddleMouseButtonClosesTab = 0x2000000, //! If the flag is set, the user can use the mouse middle button to close the tab under the mouse + MiddleMouseButtonClosesTab = 0x2000000, //! If the flag is set, the user can use the mouse middle button to close the tab under the mouse + DisableTabTextEliding = 0x4000000, //! Set this flag to disable eliding of tab texts in dock area tabs + ShowTabTextOnlyForActiveTab = 0x8000000, //! Set this flag to show label texts in dock area tabs only for active tabs DefaultDockAreaButtons = DockAreaHasCloseButton | DockAreaHasUndockButton @@ -250,10 +252,13 @@ AutoHideSideBarsIconOnly = 0x10,///< show only icons in auto hide side tab - if a tab has no icon, then the text will be shown AutoHideShowOnMouseOver = 0x20, ///< show the auto hide window on mouse over tab and hide it if mouse leaves auto hide container AutoHideCloseButtonCollapsesDock = 0x40, ///< Close button of an auto hide container collapses the dock instead of hiding it completely + AutoHideHasCloseButton = 0x80, //< If the flag is set an auto hide title bar has a close button + AutoHideHasMinimizeButton = 0x100, ///< if this flag is set, the auto hide title bar has a minimize button to collapse the dock widget DefaultAutoHideConfig = AutoHideFeatureEnabled | DockAreaHasAutoHideButton | AutoHideCloseButtonCollapsesDock + | AutoHideHasCloseButton }; Q_DECLARE_FLAGS(AutoHideFlags, eAutoHideFlag) @@ -626,6 +631,36 @@ */ static QString floatingContainersTitle(); + /** + * This function sets the tool button style for the given dock widget state. + * It is possible to switch the tool button style depending on the state. + * If a dock widget is floating, then here are more space and it is + * possible to select a style that requires more space like + * Qt::ToolButtonTextUnderIcon. For the docked state Qt::ToolButtonIconOnly + * might be better. + */ + void setDockWidgetToolBarStyle(Qt::ToolButtonStyle Style, CDockWidget::eState State); + + /** + * Returns the tool button style for the given docking state. + * \see setToolBarStyle() + */ + Qt::ToolButtonStyle dockWidgetToolBarStyle(CDockWidget::eState State) const; + + /** + * This function sets the tool button icon size for the given state. + * If a dock widget is floating, there is more space and increasing the + * icon size is possible. For docked widgets, small icon sizes, eg. 16 x 16 + * might be better. + */ + void setDockWidgetToolBarIconSize(const QSize& IconSize, CDockWidget::eState State); + + /** + * Returns the icon size for a given docking state. + * \see setToolBarIconSize() + */ + QSize dockWidgetToolBarIconSize(CDockWidget::eState State) const; + public Q_SLOTS: /** * Opens the perspective with the given name. Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp (Arbeitskopie) @@ -95,6 +95,7 @@ CDockWidget::eMinimumSizeHintMode MinimumSizeHintMode = CDockWidget::MinimumSizeHintFromDockWidget; WidgetFactory* Factory = nullptr; QPointer<CAutoHideTab> SideTabWidget; + CDockWidget::eToolBarStyleSource ToolBarStyleSource = CDockWidget::ToolBarStyleFromDockManager; /** * Private data constructor @@ -139,6 +140,11 @@ * returns true on success. */ bool createWidgetFromFactory(); + + /** + * Use the dock manager toolbar style and icon size for the different states + */ + void setToolBarStyleFromDockManager(); }; // struct DockWidgetPrivate @@ -213,6 +219,12 @@ if (Features.testFlag(CDockWidget::DeleteContentOnClose)) { + if (ScrollArea) + { + ScrollArea->takeWidget(); + delete ScrollArea; + ScrollArea = nullptr; + } Widget->deleteLater(); Widget = nullptr; } @@ -326,6 +338,22 @@ //============================================================================ +void DockWidgetPrivate::setToolBarStyleFromDockManager() +{ + if (!DockManager) + { + return; + } + auto State = CDockWidget::StateDocked; + _this->setToolBarIconSize(DockManager->dockWidgetToolBarIconSize(State), State); + _this->setToolBarStyle(DockManager->dockWidgetToolBarStyle(State), State); + State = CDockWidget::StateFloating; + _this->setToolBarIconSize(DockManager->dockWidgetToolBarIconSize(State), State); + _this->setToolBarStyle(DockManager->dockWidgetToolBarStyle(State), State); +} + + +//============================================================================ CDockWidget::CDockWidget(const QString &title, QWidget *parent) : QFrame(parent), d(new DockWidgetPrivate(this)) @@ -358,7 +386,21 @@ delete d; } +//============================================================================ +void CDockWidget::setToggleViewAction(QAction* action) +{ + if (!action) + { + return; + } + d->ToggleViewAction->setParent(nullptr); + delete d->ToggleViewAction; + d->ToggleViewAction = action; + d->ToggleViewAction->setParent(this); + connect(d->ToggleViewAction, &QAction::triggered, this, &CDockWidget::toggleView); +} + //============================================================================ void CDockWidget::setToggleViewActionChecked(bool Checked) { @@ -503,6 +545,15 @@ void CDockWidget::setDockManager(CDockManager* DockManager) { d->DockManager = DockManager; + if (!DockManager) + { + return; + } + + if (ToolBarStyleFromDockManager == d->ToolBarStyleSource) + { + d->setToolBarStyleFromDockManager(); + } } @@ -1264,6 +1315,24 @@ } +//============================================================================ +void CDockWidget::setToolBarStyleSource(eToolBarStyleSource Source) +{ + d->ToolBarStyleSource = Source; + if (ToolBarStyleFromDockManager == d->ToolBarStyleSource) + { + d->setToolBarStyleFromDockManager(); + } +} + + +//============================================================================ +CDockWidget::eToolBarStyleSource CDockWidget::toolBarStyleSource() const +{ + return d->ToolBarStyleSource; +} + + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h (Arbeitskopie) @@ -176,6 +176,12 @@ StateFloating }; + enum eToolBarStyleSource + { + ToolBarStyleFromDockManager, + ToolBarStyleFromDockWidget + }; + /** * Sets the widget for the dock widget to widget. * The InsertMode defines how the widget is inserted into the dock widget. @@ -410,6 +416,12 @@ QAction* toggleViewAction() const; /** + * Use provided action to be the default toggle view action for this dock widget. + * This dock widget now owns the action. + */ + void setToggleViewAction(QAction* action); + + /** * Configures the behavior of the toggle view action. * \see eToggleViewActionMode for a detailed description */ @@ -468,6 +480,17 @@ void setToolBar(QToolBar* ToolBar); /** + * Configures, if the dock widget uses the global tool bar styles from + * dock manager or if it uses its own tool bar style + */ + void setToolBarStyleSource(eToolBarStyleSource Source); + + /** + * Returns the configured tool bar style source + */ + eToolBarStyleSource toolBarStyleSource() const; + + /** * This function sets the tool button style for the given dock widget state. * It is possible to switch the tool button style depending on the state. * If a dock widget is floating, then here are more space and it is Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp (Arbeitskopie) @@ -245,7 +245,14 @@ void DockWidgetTabPrivate::createLayout() { TitleLabel = new tTabLabel(); - TitleLabel->setElideMode(Qt::ElideRight); + if (CDockManager::testConfigFlag(CDockManager::DisableTabTextEliding)) + { + TitleLabel->setElideMode(Qt::ElideNone); + } + else + { + TitleLabel->setElideMode(Qt::ElideRight); + } TitleLabel->setText(DockWidget->windowTitle()); TitleLabel->setObjectName("dockWidgetTabLabel"); TitleLabel->setAlignment(Qt::AlignCenter); @@ -573,6 +580,14 @@ { d->updateCloseButtonVisibility(active); + if(CDockManager::testConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab) && !d->Icon.isNull()) + { + if(active) + d->TitleLabel->setVisible(true); + else + d->TitleLabel->setVisible(false); + } + // Focus related stuff if (CDockManager::testConfigFlag(CDockManager::FocusHighlighting) && !d->DockWidget->dockManager()->isRestoringState()) { Index: scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp (Arbeitskopie) @@ -662,7 +662,6 @@ #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QDockWidget::setWidget(d->DockContainer); - QDockWidget::setFloating(true); QDockWidget::setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); Index: scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc (Arbeitskopie) @@ -20,5 +20,8 @@ <file>images/vs-pin-button-pinned-focused.svg</file> <file>images/vs-pin-button_45.svg</file> <file>images/pin-button-big.svg</file> + <file>images/minimize-button.svg</file> + <file>images/minimize-button-focused.svg</file> + <file>images/vs-pin-button-disabled.svg</file> </qresource> </RCC> Index: scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h (Arbeitskopie) @@ -107,7 +107,8 @@ TitleBarButtonTabsMenu, TitleBarButtonUndock, TitleBarButtonClose, - TitleBarButtonAutoHide + TitleBarButtonAutoHide, + TitleBarButtonMinimize }; /** @@ -131,6 +132,7 @@ DockAreaMenuIcon, //!< DockAreaMenuIcon DockAreaUndockIcon,//!< DockAreaUndockIcon DockAreaCloseIcon, //!< DockAreaCloseIcon + DockAreaMinimizeIcon, IconCount, //!< just a delimiter for range checks }; Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css (Arbeitskopie) @@ -288,7 +288,8 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; qproperty-iconSize: 16px; } @@ -298,6 +299,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css (Arbeitskopie) @@ -324,8 +324,9 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); - qproperty-iconSize: 16px; + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; + qproperty-iconSize: 16px; } ads--CAutoHideDockContainer #dockAreaAutoHideButton { @@ -334,6 +335,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css (Arbeitskopie) @@ -326,16 +326,24 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; qproperty-iconSize: 16px; } + ads--CAutoHideDockContainer #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button-pinned-focused.svg); + qproperty-icon: url(:/ads/images/vs-pin-button-pinned-focused.svg), qproperty-iconSize: 16px; } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css (Arbeitskopie) @@ -401,8 +401,9 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); - qproperty-iconSize: 16px; + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; + qproperty-iconSize: 16px; } ads--CAutoHideDockContainer #dockAreaAutoHideButton { @@ -411,6 +412,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/ui/aligndistribute.cpp =================================================================== --- scribus/ui/aligndistribute.cpp (Revision 25845) +++ scribus/ui/aligndistribute.cpp (Arbeitskopie) @@ -56,7 +56,7 @@ // ============================= -AlignDistributePalette::AlignDistributePalette(QWidget* parent) : DockPanelBase("AlignDistributePalette", parent) +AlignDistributePalette::AlignDistributePalette(QWidget* parent) : DockPanelBase("AlignDistributePalette", "panel-align-distribute", parent) { setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); setObjectName("AlignDistributePalette"); Index: scribus/ui/bookmarkpalette.cpp =================================================================== --- scribus/ui/bookmarkpalette.cpp (Revision 25845) +++ scribus/ui/bookmarkpalette.cpp (Arbeitskopie) @@ -25,7 +25,7 @@ #include "bookmarkpalette.h" -BookPalette::BookPalette(QWidget* parent) : DockPanelBase( "Books", parent ) +BookPalette::BookPalette(QWidget* parent) : DockPanelBase( "Books", "panel-bookmarks", parent ) { setObjectName(QString::fromLocal8Bit("Books")); setContentsMargins(3, 3, 3, 3); Index: scribus/ui/contentpalette.cpp =================================================================== --- scribus/ui/contentpalette.cpp (Revision 25845) +++ scribus/ui/contentpalette.cpp (Arbeitskopie) @@ -25,8 +25,8 @@ #include "styles/paragraphstyle.h" #include "styles/charstyle.h" -ContentPalette::ContentPalette(QWidget *parent) : - DockPanelBase("ContentPalette", parent) +ContentPalette::ContentPalette(QWidget *parent) : + DockPanelBase("ContentPalette", "panel-content-properties", parent) { setObjectName(QString::fromLocal8Bit("ContentPalette")); Index: scribus/ui/docks/dock_panelbase.cpp =================================================================== --- scribus/ui/docks/dock_panelbase.cpp (Revision 25845) +++ scribus/ui/docks/dock_panelbase.cpp (Arbeitskopie) @@ -25,14 +25,9 @@ #include "prefscontext.h" #include "prefsfile.h" #include "prefsmanager.h" +#include "scribusapp.h" -DockPanelBase::DockPanelBase(const QString &title, QIcon icon, QWidget *parent) - : DockPanelBase(title, parent) -{ - this->setIcon(icon); -} - -DockPanelBase::DockPanelBase(const QString &title, QWidget *parent) +DockPanelBase::DockPanelBase(const QString &title, QString iconName, QWidget *parent) : CDockWidget(title, parent) { if (PrefsManager::instance().appPrefs.uiPrefs.useSmallWidgets) { @@ -50,12 +45,19 @@ "); } - setWindowIcon(IconManager::instance().loadPixmap("AppIcon.png")); + m_iconName = iconName; + + iconSetChange(); + setPrefsContext(title); setObjectName(title); connect(&PrefsManager::instance(), SIGNAL(prefsChanged()), this, SLOT(setFontSize())); + connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange())); } +DockPanelBase::DockPanelBase(const QString &title, QWidget *parent) + : DockPanelBase(title, QString(), parent){} + void DockPanelBase::setPrefsContext(const QString &context) { if (!m_prefsContextName.isEmpty()) @@ -78,3 +80,20 @@ newfont.setPointSize(PrefsManager::instance().appPrefs.uiPrefs.paletteFontSize); setFont(newfont); } + +void DockPanelBase::iconSetChange() +{ + IconManager &iconManager = IconManager::instance(); + + if(m_iconName.isEmpty()) + { + setWindowIcon(iconManager.loadPixmap("AppIcon.png")); + setIcon(QIcon()); + } + else + { + setWindowIcon(iconManager.loadPixmap(m_iconName)); + setIcon(iconManager.loadPixmap(m_iconName)); + } + +} Index: scribus/ui/docks/dock_panelbase.h =================================================================== --- scribus/ui/docks/dock_panelbase.h (Revision 25845) +++ scribus/ui/docks/dock_panelbase.h (Arbeitskopie) @@ -32,12 +32,13 @@ public: DockPanelBase(const QString &title, QWidget *parent = 0); - DockPanelBase(const QString &title, QIcon icon, QWidget *parent = 0); + DockPanelBase(const QString &title, QString iconName, QWidget *parent = 0); void startup(); public slots: virtual void setFontSize(); + void iconSetChange(); protected: /** @brief Set the Preferences context to be used for storage of startup visibility and position and size */ @@ -45,6 +46,7 @@ PrefsContext *m_palettePrefs {nullptr}; QString m_prefsContextName; + QString m_iconName; }; #endif // DOCK_PANELBASE_H Index: scribus/ui/inlinepalette.cpp =================================================================== --- scribus/ui/inlinepalette.cpp (Revision 25845) +++ scribus/ui/inlinepalette.cpp (Arbeitskopie) @@ -101,7 +101,7 @@ clearSelection(); } -InlinePalette::InlinePalette( QWidget* parent) : DockPanelBase("Inline", parent) +InlinePalette::InlinePalette( QWidget* parent) : DockPanelBase("Inline", "panel-inline-items", parent) { setContentsMargins(3, 3, 3, 3); setMinimumSize( QSize( 220, 240 ) ); Index: scribus/ui/layers.cpp =================================================================== --- scribus/ui/layers.cpp (Revision 25845) +++ scribus/ui/layers.cpp (Arbeitskopie) @@ -42,7 +42,7 @@ #include "docks/dock_panelbase.h" #include "undomanager.h" -LayerPalette::LayerPalette(QWidget* parent) : DockPanelBase("Layers", parent) +LayerPalette::LayerPalette(QWidget* parent) : DockPanelBase("Layers", "panel-layers", parent) { setObjectName(QString::fromLocal8Bit("Layers")); setMinimumSize( QSize(220, 240) ); Index: scribus/ui/outlinepalette.cpp =================================================================== --- scribus/ui/outlinepalette.cpp (Revision 25845) +++ scribus/ui/outlinepalette.cpp (Arbeitskopie) @@ -431,7 +431,7 @@ return true; } -OutlinePalette::OutlinePalette( QWidget* parent) : DockPanelBase("Tree", parent) +OutlinePalette::OutlinePalette( QWidget* parent) : DockPanelBase("Tree", "panel-outline", parent) { // resize( 220, 240 ); setMinimumSize( QSize( 220, 240 ) ); Index: scribus/ui/pagepalette.cpp =================================================================== --- scribus/ui/pagepalette.cpp (Revision 25845) +++ scribus/ui/pagepalette.cpp (Arbeitskopie) @@ -21,7 +21,7 @@ #include "scribusdoc.h" #include "scribusview.h" -PagePalette::PagePalette(QWidget *parent) : DockPanelBase("PagePalette", parent) +PagePalette::PagePalette(QWidget *parent) : DockPanelBase("PagePalette", "panel-page", parent) { m_scMW = nullptr;//(ScribusMainWindow*) parent; m_view = nullptr; Index: scribus/ui/propertiespalette.cpp =================================================================== --- scribus/ui/propertiespalette.cpp (Revision 25845) +++ scribus/ui/propertiespalette.cpp (Arbeitskopie) @@ -46,7 +47,7 @@ #include "util_math.h" -PropertiesPalette::PropertiesPalette(QWidget *parent) : DockPanelBase("PropertiesPalette", parent) +PropertiesPalette::PropertiesPalette(QWidget *parent) : DockPanelBase("PropertiesPalette", "panel-frame-properties", parent) { undoManager = UndoManager::instance(); Index: scribus/undogui.cpp =================================================================== --- scribus/undogui.cpp (Revision 25845) +++ scribus/undogui.cpp (Arbeitskopie) @@ -38,7 +38,7 @@ #include "undogui.h" -UndoGui::UndoGui(QWidget* parent, const char* name) : DockPanelBase(name, parent) +UndoGui::UndoGui(QWidget* parent, const char* name) : DockPanelBase(name, "panel-action-history", parent) { languageChange(); } |
|
Yes, thank you very much, it is very similar to what I thought, but one would have to consider not shrink the labels for tabs that are not in the foreground. I think many users, like me, tend to memorize the position of elements on the screen. This way, the position would change every time another tab is brought to the foreground. |
|
Like this? ads_2023-12-2_02.patch (57,957 bytes)
Index: resources/iconsets/1_7_0/16/panel-action-history.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-action-history.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-action-history.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M2 2H4V4H2V2ZM6 12L10 9L10 11.0163C12.704 11.1935 14.8437 12.7941 14.9918 14.7799C13.9158 13.7067 12.0817 13 10 12.9999L10 15L6 12ZM14 2H5V4H14V2ZM5 5H14V7H5V5ZM4 5H2V7H4V5ZM2 8H4V10H2V8ZM7 8H5V10H7V8Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-align-distribute.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-align-distribute.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-align-distribute.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3 0H2V15H3V0ZM8 2H4V5H8V2ZM13 6H4V9H13V6ZM4 10H10V13H4V10Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-bookmarks.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-bookmarks.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-bookmarks.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14 0H3V1H2V4H3V6H2V9H3V11H2V14H3V15H14V0ZM3 13H4V12H3V13ZM3 8V7H4V8H3ZM3 3H4V2H3V3ZM8 3.00004H12V10L10 8.00004L8 10V3.00004Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-content-properties.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-content-properties.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-content-properties.svg (Arbeitskopie) @@ -0,0 +1,11 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<g clip-path="url(#clip0_1137_49)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3 0H0V3H1V12H0V15H3V14H8V13H3V12H2V3H3V2H12V3H13V8H14V3H15V0H12V1H3V0Z" fill-opacity="0.4"/> +<path fill-rule="evenodd" clip-rule="evenodd" d="M7 4H3V7H7V4ZM13.25 9H11.75V10.1144C11.3962 10.2256 11.0763 10.4132 10.8097 10.6581L9.84393 10.1005L9.09393 11.3995L10.0592 11.9568C10.0205 12.1317 10 12.3135 10 12.5C10 12.6865 10.0205 12.8683 10.0592 13.0432L9.09396 13.6005L9.84396 14.8995L10.8097 14.342C11.0763 14.5868 11.3962 14.7744 11.75 14.8856V16H13.25V14.8855C13.6039 14.7744 13.9238 14.5868 14.1904 14.342L15.1561 14.8995L15.9061 13.6005L14.9409 13.0432C14.9796 12.8683 15 12.6865 15 12.5C15 12.3135 14.9796 12.1317 14.9409 11.9568L15.9061 11.3995L15.1561 10.1005L14.1904 10.6581C13.9238 10.4132 13.6039 10.2256 13.25 10.1145V9ZM13.5 12.5C13.5 13.0523 13.0523 13.5 12.5 13.5C11.9477 13.5 11.5 13.0523 11.5 12.5C11.5 11.9477 11.9477 11.5 12.5 11.5C13.0523 11.5 13.5 11.9477 13.5 12.5ZM8 4H12V5H8V4ZM12 6H8V7H12V6ZM3 8H10V9H3V8ZM8 10H3V11H8V10Z"/> +</g> +<defs> +<clipPath id="clip0_1137_49"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> Index: resources/iconsets/1_7_0/16/panel-custom-shapes.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-custom-shapes.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-custom-shapes.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path d="M8 1L10.3176 5.60851L15.5 6.34752L11.75 9.93475L12.6353 15L8 12.6085L3.36474 15L4.25 9.93475L0.5 6.34752L5.68237 5.60851L8 1Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-frame-properties.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-frame-properties.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-frame-properties.svg (Arbeitskopie) @@ -0,0 +1,10 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<g clip-path="url(#clip0_1137_23)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0H3V1H12V0H15V3H14V8H13V3H12V2H3V3H2V12H3V13H8V14H3V15H0V12H1V3H0V0ZM13.25 9H11.75V10.1144C11.3962 10.2256 11.0763 10.4132 10.8097 10.6581L9.84393 10.1005L9.09393 11.3995L10.0592 11.9568C10.0205 12.1317 10 12.3135 10 12.5C10 12.6865 10.0205 12.8683 10.0592 13.0432L9.09396 13.6005L9.84396 14.8995L10.8097 14.342C11.0763 14.5868 11.3962 14.7744 11.75 14.8856V16H13.25V14.8855C13.6039 14.7744 13.9238 14.5868 14.1904 14.342L15.1561 14.8995L15.9061 13.6005L14.9409 13.0432C14.9796 12.8683 15 12.6865 15 12.5C15 12.3135 14.9796 12.1317 14.9409 11.9568L15.9061 11.3995L15.1561 10.1005L14.1904 10.6581C13.9238 10.4132 13.6039 10.2256 13.25 10.1145V9ZM13.5 12.5C13.5 13.0523 13.0523 13.5 12.5 13.5C11.9477 13.5 11.5 13.0523 11.5 12.5C11.5 11.9477 11.9477 11.5 12.5 11.5C13.0523 11.5 13.5 11.9477 13.5 12.5Z"/> +</g> +<defs> +<clipPath id="clip0_1137_23"> +<rect width="16" height="16" fill="white"/> +</clipPath> +</defs> +</svg> Index: resources/iconsets/1_7_0/16/panel-inline-items.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-inline-items.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-inline-items.svg (Arbeitskopie) @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1H16V2H0V1ZM0 3H9V4H0V3ZM6 5H0V6H6V5ZM0 7H5V8H0V7ZM7 9H0V10H7V9ZM0 11H7V12H0V11ZM16 13H0V14H16V13Z"/> +<path d="M11 3L12.5451 5.96262L16 6.43769L13.5 8.74377L14.0902 12L11 10.4626L7.90983 12L8.5 8.74377L6 6.43769L9.45491 5.96262L11 3Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-layers.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-layers.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-layers.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M8 2L1 7L8 12L15 7L8 2ZM1 9L1.7 8.5L8 13L14.3 8.5L15 9L8 14L1 9Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-outline.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-outline.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-outline.svg (Arbeitskopie) @@ -0,0 +1,4 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M1 2H6V5H1V2ZM7 7H15V10H7V7ZM15 12H7V15H15V12Z"/> +<path d="M3 6H4V8H6V9H4V13H6V14H3V6Z" fill-opacity="0.4"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-page.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-page.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-page.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M3.79289 0H15V15H0V3.79289L3.79289 0ZM4.20711 1L1 4.20711V14H14V1H4.20711Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-scrapbook.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-scrapbook.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-scrapbook.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M14 0H3V1H2V4H3V6H2V9H3V11H2V14H3V15H14V0ZM3 13H4V12H3V13ZM3 8V7H4V8H3ZM3 3H4V2H3V3ZM5 3H12V6H5V3Z"/> +</svg> Index: resources/iconsets/1_7_0/16/panel-symbols.svg =================================================================== --- resources/iconsets/1_7_0/16/panel-symbols.svg (nicht existent) +++ resources/iconsets/1_7_0/16/panel-symbols.svg (Arbeitskopie) @@ -0,0 +1,3 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style> +<path fill-rule="evenodd" clip-rule="evenodd" d="M6 1H1V15H6V1ZM10 1H7V15H10V1ZM11 1H15V15H11V1ZM5 11H2V13H5V11ZM8 11H9V13H8V11ZM14 11H12V13H14V11Z"/> +</svg> Index: resources/iconsets/1_7_0/1_7_0.xml =================================================================== --- resources/iconsets/1_7_0/1_7_0.xml (Revision 25845) +++ resources/iconsets/1_7_0/1_7_0.xml (Arbeitskopie) @@ -555,14 +555,27 @@ <icon id="22/zoom.png" file="16/tool-zoom.svg" /> <icon id="wizard.png" file="16/tool-copy-style.svg" /> <icon id="wizard16.png" file="16/tool-copy-style.svg" /> - <!-- Red onLight="#E54545" onDark="#FF6666" --> <icon id="16/insert-barcode.png" file="16/tool-insert-barcode.svg" /> - <icon id="22/insert-barcode.png" file="16/tool-insert-barcode.svg" /> - - <!-- Windows --> - <icon id="close" file="16/action-close.svg" /> - <icon id="dock-float" file="16/action-window-float.svg" /> - <icon id="menu-down" file="16/action-menu-down.svg" /> - - </icons> -</iconset> + <icon id="22/insert-barcode.png" file="16/tool-insert-barcode.svg" /> + + <!-- Windows --> + <icon id="close" file="16/action-close.svg" /> + <icon id="dock-float" file="16/action-window-float.svg" /> + <icon id="menu-down" file="16/action-menu-down.svg" /> + + <!-- Panels --> + <icon id="panel-action-history" file="16/panel-action-history.svg" /> + <icon id="panel-align-distribute" file="16/panel-align-distribute.svg" /> + <icon id="panel-bookmarks" file="16/panel-bookmarks.svg" /> + <icon id="panel-content-properties" file="16/panel-content-properties.svg" /> + <icon id="panel-custom-shapes" file="16/panel-custom-shapes.svg" /> + <icon id="panel-frame-properties" file="16/panel-frame-properties.svg" /> + <icon id="panel-inline-items" file="16/panel-inline-items.svg" /> + <icon id="panel-layers" file="16/panel-layers.svg" /> + <icon id="panel-outline" file="16/panel-outline.svg" /> + <icon id="panel-page" file="16/panel-page.svg" /> + <icon id="panel-scrapbook" file="16/panel-scrapbook.svg" /> + <icon id="panel-symbols" file="16/panel-symbols.svg" /> + + </icons> +</iconset> Index: scribus/plugins/shapes/shapepalette.cpp =================================================================== --- scribus/plugins/shapes/shapepalette.cpp (Revision 25845) +++ scribus/plugins/shapes/shapepalette.cpp (Arbeitskopie) @@ -280,7 +280,7 @@ } } -ShapePalette::ShapePalette(QWidget *parent) : DockPanelBase("Shap", parent) +ShapePalette::ShapePalette(QWidget *parent) : DockPanelBase("Shap", "panel-custom-shapes", parent) { setMinimumSize( QSize( 220, 240 ) ); setObjectName(QString::fromLocal8Bit("Shap")); Index: scribus/scribus.cpp =================================================================== --- scribus/scribus.cpp (Revision 25845) +++ scribus/scribus.cpp (Arbeitskopie) @@ -292,11 +292,13 @@ CDockManager::setConfigFlag(CDockManager::OpaqueSplitterResize, true); CDockManager::setConfigFlag(CDockManager::TabCloseButtonIsToolButton, true); CDockManager::setConfigFlag(CDockManager::AllTabsHaveCloseButton, false); - CDockManager::setConfigFlag(CDockManager::DockAreaDynamicTabsMenuButtonVisibility, true); +// CDockManager::setConfigFlag(CDockManager::DockAreaDynamicTabsMenuButtonVisibility, true); CDockManager::setConfigFlag(CDockManager::DockAreaHasCloseButton, false); - CDockManager::setConfigFlag(CDockManager::DockAreaHasUndockButton, false); + CDockManager::setConfigFlag(CDockManager::DockAreaHasUndockButton, false); CDockManager::setConfigFlag(CDockManager::DockAreaHideDisabledButtons, true); CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); + CDockManager::setConfigFlag(CDockManager::DisableTabTextEliding, true); + CDockManager::setConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab, false); // Documentation: https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/blob/master/doc/user-guide.md#auto-hide-configuration-flags // CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); Index: scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/CMakeLists.txt (Arbeitskopie) @@ -1,9 +1,13 @@ ###<< Scribus -set(ADS_VERSION "4.1.1") +set(ADS_VERSION "4.2.0") ###>> Scribus cmake_minimum_required(VERSION 3.5) +if (POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif (POLICY CMP0091) + # By default, the version information is extracted from the git index. However, # we can override this behavior by explicitly setting ADS_VERSION and # skipping the git checks. This is useful for cases where this project is being Index: scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/doc/user-guide.md (Arbeitskopie) @@ -27,10 +27,16 @@ - [`FloatingContainerForceNativeTitleBar` (Linux only)](#floatingcontainerforcenativetitlebar-linux-only) - [`FloatingContainerForceQWidgetTitleBar` (Linux only)](#floatingcontainerforceqwidgettitlebar-linux-only) - [`MiddleMouseButtonClosesTab`](#middlemousebuttonclosestab) + - [`DisableTabTextEliding`](#disabletabtexteliding) - [Auto-Hide Configuration Flags](#auto-hide-configuration-flags) - [Auto Hide Dock Widgets](#auto-hide-dock-widgets) - [Pinning Auto-Hide Widgets to a certain border](#pinning-auto-hide-widgets-to-a-certain-border) - [Show / Hide Auto-Hide Widgets via Mouse Over](#show--hide-auto-hide-widgets-via-mouse-over) + - [Drag \& Drop to Auto-Hide](#drag--drop-to-auto-hide) + - [Auto-Hide Tab Insertion Order](#auto-hide-tab-insertion-order) + - [Auto-Hide Tab Sorting](#auto-hide-tab-sorting) + - [Auto-Hide Drag to Float / Dock](#auto-hide-drag-to-float--dock) + - [Auto-Hide Context Menu](#auto-hide-context-menu) - [Adding Auto Hide Widgets](#adding-auto-hide-widgets) - [Setting Auto-Hide Flags](#setting-auto-hide-flags) - [`AutoHideFeatureEnabled`](#autohidefeatureenabled) @@ -40,6 +46,8 @@ - [`AutoHideSideBarsIconOnly`](#autohidesidebarsicononly) - [`AutoHideShowOnMouseOver`](#autohideshowonmouseover) - [`AutoHideCloseButtonCollapsesDock`](#autohideclosebuttoncollapsesdock) + - [`AutoHideHasCloseButton`](#autohidehasclosebutton) + - [`AutoHideHasMinimizeButton`](#autohidehasminimizebutton) - [DockWidget Feature Flags](#dockwidget-feature-flags) - [`DockWidgetClosable`](#dockwidgetclosable) - [`DockWidgetMovable`](#dockwidgetmovable) @@ -467,6 +475,17 @@ ![MiddleMouseButtonClosesTab true](cfg_flag_MiddleMouseButtonClosesTab.gif) +### `DisableTabTextEliding` + +Set this flag to disable eliding of tab texts in dock area tabs: + +![DisableTabTextEliding true](cfg_flag_DisableTabTextEliding_true.png) + +The flag is disabled by default and the text in all tabs is elided to show as +many tabs as possible even if there is not much space: + +![DisableTabTextEliding false](cfg_flag_DisableTabTextEliding_false.png) + ## Auto-Hide Configuration Flags ### Auto Hide Dock Widgets @@ -503,6 +522,59 @@ collapsed if the mouse cursor leaves the Auto-Hide widget. Showing and hiding by mouse click still works if this feature is enabled. +### Drag & Drop to Auto-Hide + +You can easily drag any dock widget or any floating widget to the +borders of a window to pin it as a auto-hide tab in one of the 4 sidebars. +If you drag a dock widget close the one of the four window borders, special +drop overlays will be shown to indicate the drop area for auto-hide widgets: + +![Auo-Hide drag to Sidebar](AutoHide_Drag_to_Sidebar.gif) + +Of course, this also works with dock areas: + +![Auo-Hide drag Dock Area](AutoHide_Drag_DockArea.gif) + +If you drag a dock widget or dock area into a sidebar, then you even have +control over where tabs are inserted. Simply drag your mouse over a specific +auto-hide tab, and your dragged dock widget will be inserted before this tab. +Drag to the sidebar area behind the last tab, and the dragged widget will be +appended as last tab. In the following screen capture, the **Image Viewer 1** will +be inserted before the **Table 0** Auto-Hide tab and the **Image Viewer 2** +is appended behind the last tab: + +![Auo-Hide tab insert order](AutoHide_Tab_Insert_Order.gif) + +### Auto-Hide Tab Insertion Order + +It is also possible to drag Auto-Hide tabs to a new auto-hide position. +That means, you can drag them to a different border or sidebar: + +![Auto-Hide change sidebar](AutoHide_Change_Sidebar.gif) + +### Auto-Hide Tab Sorting + +You can drag Auto-Hide tabs to a new position in the current sidebar +to sort them: + +![Auo-Hide sort tabs](AutoHide_Sort_Tabs.gif) + +### Auto-Hide Drag to Float / Dock + +But that is not all. You can also simply move Auto-Hide tabs to another +floating widget or dock them via drag and drop: + +![Auo-Hide drag to float or dock](AutoHide_Drag_to_Float_or_Dock.gif) + +### Auto-Hide Context Menu + +All Auto-Hide tabs now have a context menu, that provides all the functionality +that you know from Dock widget tabs. With the **Pin To...** item from the +context menu it is very easy to move an Auto-Hide tab to a different Auto-Hide +sidebar: + +![Auo-Hide context menu](AutoHide_Context_Menu.png) + ### Adding Auto Hide Widgets Adding an auto hide widget is similar to adding a dock widget, simply call @@ -605,6 +677,24 @@ ![AutoHideCloseButtonCollapsesDock true](cfg_flag_AutoHideCloseButtonCollapsesDock_true.gif) +If you enable the `AutoHideHasMinimizeButton` flag, you should disable this +flag our you will have two buttons with minimize functionality. + +### `AutoHideHasCloseButton` + +If this flag is set (default), then each auto hide widget has a close button: + +![AutoHideHasCloseButton](cfg_flag_AutoHideHasCloseButton.png) + +The functionality of the close button (close or minimize) is configured by the +`AutoHideCloseButtonCollapsesDock` flag. + +### `AutoHideHasMinimizeButton` + +If this flag is set (disabled by default), then each auto hide widget has a minimize button. + +![AutoHideHasMinimizeButton](cfg_flag_AutoHideHasMinimizeButton.png) + ## DockWidget Feature Flags ### `DockWidgetClosable` Index: scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/pyproject.toml (Arbeitskopie) @@ -1,12 +1,12 @@ # Specify the build system. [build-system] -requires = ["sip >=6.0.2, <6.3", "PyQt-builder >=1.6, <2", "PyQt5==5.15.4", "PyQt5-sip<13,>=12.8"] +requires = ["sip >=6.0.2", "PyQt-builder >=1.6", "PyQt5>=5.15", "PyQt5-sip>=12.8"] build-backend = "sipbuild.api" # Specify the PEP 566 metadata for the project. [tool.sip.metadata] name = "PyQtAds" -version = "4.0.2" +version = "4.4.1" summary = "Python bindings for Qt Advanced Docking System" home-page = "https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/" license = "LGPL v2.1" @@ -16,8 +16,10 @@ [tool.sip.project] tag-prefix = "QtAds" +dunder-init = true [tool.sip.bindings.ads] +pep484-pyi = true define-macros = ["ADS_SHARED_EXPORT"] sip-file = "ads.sip" include-dirs = ["src"] Index: scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/sip/ads.sip (Arbeitskopie) @@ -1,4 +1,6 @@ %Module(name=PyQtAds, call_super_init=True, keyword_arguments="Optional", use_limited_api=True) +%HideNamespace(name=ads) + %Import QtCore/QtCoremod.sip %DefaultSupertype sip.simplewrapper Index: scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/AutoHideTab.cpp (Arbeitskopie) @@ -478,7 +478,7 @@ case DraggingFloatingWidget: ev->accept(); d->FloatingWidget->finishDragging(); - if (d->DockWidget->isAutoHide() && d->DragStartOrientation != orientation()) + if (d->DockWidget->autoHideDockContainer() && d->DragStartOrientation != orientation()) { d->DockWidget->autoHideDockContainer()->resetToInitialDockWidgetSize(); } Index: scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/CMakeLists.txt (Arbeitskopie) @@ -85,7 +85,12 @@ Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) if (UNIX AND NOT APPLE) - target_link_libraries(${library_name} PUBLIC xcb) + if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + find_package(X11 REQUIRED) + target_link_libraries(${library_name} PUBLIC X11::xcb) + else() + target_link_libraries(${library_name} PUBLIC xcb) + endif() endif() set_target_properties(${library_name} PROPERTIES AUTOMOC ON @@ -93,6 +98,7 @@ CXX_EXTENSIONS OFF VERSION ${VERSION_SHORT} EXPORT_NAME ${library_name} + DEBUG_POSTFIX "d" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${ads_PlatformDir}/bin" Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.cpp (Arbeitskopie) @@ -72,10 +72,11 @@ QPointer<CTitleBarButton> AutoHideButton; QPointer<CTitleBarButton> UndockButton; QPointer<CTitleBarButton> CloseButton; + QPointer<CTitleBarButton> MinimizeButton; QBoxLayout* Layout; CDockAreaWidget* DockArea; CDockAreaTabBar* TabBar; - CElidingLabel* AutoHideTitleLabel; + CElidingLabel* AutoHideTitleLabel = nullptr; bool MenuOutdated = true; QMenu* TabsMenu; QList<tTitleBarButton*> DockWidgetActionsButtons; @@ -218,6 +219,17 @@ Layout->addWidget(AutoHideButton, 0); _this->connect(AutoHideButton, SIGNAL(clicked()), SLOT(onAutoHideButtonClicked())); + // Minimize button + MinimizeButton = new CTitleBarButton(testAutoHideConfigFlag(CDockManager::AutoHideHasMinimizeButton)); + MinimizeButton->setObjectName("dockAreaMinimizeButton"); + MinimizeButton->setAutoRaise(true); + MinimizeButton->setVisible(false); + internal::setButtonIcon(MinimizeButton, QStyle::SP_TitleBarMinButton, ads::DockAreaMinimizeIcon); + internal::setToolTip(MinimizeButton, QObject::tr("Minimize")); + MinimizeButton->setSizePolicy(ButtonSizePolicy); + Layout->addWidget(MinimizeButton, 0); + _this->connect(MinimizeButton, SIGNAL(clicked()), SLOT(minimizeAutoHideContainer())); + // Close button CloseButton = new CTitleBarButton(testConfigFlag(CDockManager::DockAreaHasCloseButton)); CloseButton->setObjectName("dockAreaCloseButton"); @@ -236,7 +248,10 @@ { AutoHideTitleLabel = new CElidingLabel(""); AutoHideTitleLabel->setObjectName("autoHideTitleLabel"); - Layout->addWidget(AutoHideTitleLabel); + // At position 0 is the tab bar - insert behind tab bar + Layout->insertWidget(1, AutoHideTitleLabel); + AutoHideTitleLabel->setVisible(false); // Default hidden + Layout->insertWidget(2 ,new CSpacerWidget(_this)); } @@ -324,10 +339,8 @@ setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); d->createTabBar(); + d->createButtons(); d->createAutoHideTitleLabel(); - d->AutoHideTitleLabel->setVisible(false); // Default hidden - d->Layout->addWidget(new CSpacerWidget(this)); - d->createButtons(); setFocusPolicy(Qt::NoFocus); } @@ -432,6 +445,24 @@ //============================================================================ +void CDockAreaTitleBar::onAutoHideCloseActionTriggered() +{ + d->DockArea->closeArea(); +} + + +//============================================================================ +void CDockAreaTitleBar::minimizeAutoHideContainer() +{ + auto AutoHideContainer = d->DockArea->autoHideDockContainer(); + if (AutoHideContainer) + { + AutoHideContainer->collapseView(true); + } +} + + +//============================================================================ void CDockAreaTitleBar::onUndockButtonClicked() { if (d->DockArea->features().testFlag(CDockWidget::DockWidgetFloatable)) @@ -547,6 +578,7 @@ case TitleBarButtonUndock: return d->UndockButton; case TitleBarButtonClose: return d->CloseButton; case TitleBarButtonAutoHide: return d->AutoHideButton; + case TitleBarButtonMinimize: return d->MinimizeButton; default: return nullptr; } @@ -735,7 +767,17 @@ } Menu.addSeparator(); } - Action = Menu.addAction(isAutoHide ? tr("Close") : tr("Close Group"), this, SLOT(onCloseButtonClicked())); + + if (isAutoHide) + { + Action = Menu.addAction(tr("Minimize"), this, SLOT(minimizeAutoHideContainer())); + Action = Menu.addAction(tr("Close"), this, SLOT(onAutoHideCloseActionTriggered())); + } + else + { + Action = Menu.addAction(isAutoHide ? tr("Close") : tr("Close Group"), this, SLOT(onCloseButtonClicked())); + } + Action->setEnabled(d->DockArea->features().testFlag(CDockWidget::DockWidgetClosable)); if (!isAutoHide && !isTopLevelArea) { @@ -782,7 +824,8 @@ case TitleBarButtonClose: if (d->DockArea->isAutoHide()) { - return tr("Close"); + bool Minimize = CDockManager::testAutoHideConfigFlag(CDockManager::AutoHideCloseButtonCollapsesDock); + return Minimize ? tr("Minimize") : tr("Close"); } if (CDockManager::testConfigFlag(CDockManager::DockAreaCloseButtonClosesTab)) @@ -802,7 +845,17 @@ return QString(); } + //============================================================================ +void CDockAreaTitleBar::showAutoHideControls(bool Show) +{ + d->TabBar->setVisible(!Show); // Auto hide toolbar never has tabs + d->MinimizeButton->setVisible(Show); + d->AutoHideTitleLabel->setVisible(Show); +} + + +//============================================================================ CTitleBarButton::CTitleBarButton(bool showInTitleBar, QWidget* parent) : tTitleBarButton(parent), ShowInTitleBar(showInTitleBar), @@ -858,6 +911,7 @@ setStyleSheet("border: none; background: none;"); } + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaTitleBar.h (Arbeitskopie) @@ -97,6 +97,8 @@ private Q_SLOTS: void onTabsMenuAboutToShow(); void onCloseButtonClicked(); + void onAutoHideCloseActionTriggered(); + void minimizeAutoHideContainer(); void onUndockButtonClicked(); void onTabsMenuActionTriggered(QAction* Action); void onCurrentTabChanged(int Index); @@ -208,6 +210,11 @@ */ void setAreaFloating(); + /** + * Call this function, to create all the required auto hide controls + */ + void showAutoHideControls(bool Show); + Q_SIGNALS: /** * This signal is emitted if a tab in the tab bar is clicked by the user Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockAreaWidget.cpp (Arbeitskopie) @@ -390,20 +390,29 @@ return; } - if (IsTopLevel) + bool IsAutoHide = _this->isAutoHide(); + if (IsAutoHide) { + bool ShowCloseButton = CDockManager::autoHideConfigFlags().testFlag(CDockManager::AutoHideHasCloseButton); + TitleBar->button(TitleBarButtonClose)->setVisible(ShowCloseButton); + TitleBar->button(TitleBarButtonAutoHide)->setVisible(true); + TitleBar->button(TitleBarButtonUndock)->setVisible(false); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(false); + } + else if (IsTopLevel) + { TitleBar->button(TitleBarButtonClose)->setVisible(!container->isFloating()); TitleBar->button(TitleBarButtonAutoHide)->setVisible(!container->isFloating()); // Undock and tabs should never show when auto hidden - TitleBar->button(TitleBarButtonUndock)->setVisible(!container->isFloating() && !_this->isAutoHide()); - TitleBar->button(TitleBarButtonTabsMenu)->setVisible(!_this->isAutoHide()); + TitleBar->button(TitleBarButtonUndock)->setVisible(!container->isFloating()); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(true); } else { TitleBar->button(TitleBarButtonClose)->setVisible(true); TitleBar->button(TitleBarButtonAutoHide)->setVisible(true); - TitleBar->button(TitleBarButtonUndock)->setVisible(!_this->isAutoHide()); - TitleBar->button(TitleBarButtonTabsMenu)->setVisible(!_this->isAutoHide()); + TitleBar->button(TitleBarButtonUndock)->setVisible(true); + TitleBar->button(TitleBarButtonTabsMenu)->setVisible(true); } } @@ -847,9 +856,7 @@ if (isAutoHideFeatureEnabled()) { - auto tabBar = d->TitleBar->tabBar(); - tabBar->setVisible(!IsAutoHide); // Never show tab bar when auto hidden - d->TitleBar->autoHideTitleLabel()->setVisible(IsAutoHide); // Always show when auto hidden, never otherwise + d->TitleBar->showAutoHideControls(IsAutoHide); updateTitleBarButtonVisibility(Container->topLevelDockArea() == this); } } Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockContainerWidget.cpp (Arbeitskopie) @@ -1932,10 +1932,11 @@ NewRootSplitter = d->newSplitter(Qt::Horizontal); } - d->Layout->replaceWidget(d->RootSplitter, NewRootSplitter); + QLayoutItem* li = d->Layout->replaceWidget(d->RootSplitter, NewRootSplitter); auto OldRoot = d->RootSplitter; d->RootSplitter = qobject_cast<CDockSplitter*>(NewRootSplitter); OldRoot->deleteLater(); + delete li; return true; } Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.cpp (Arbeitskopie) @@ -118,6 +118,10 @@ CDockFocusController* FocusController = nullptr; CDockWidget* CentralWidget = nullptr; bool IsLeavingMinimized = false; + Qt::ToolButtonStyle ToolBarStyleDocked = Qt::ToolButtonIconOnly; + Qt::ToolButtonStyle ToolBarStyleFloating = Qt::ToolButtonTextUnderIcon; + QSize ToolBarIconSizeDocked = QSize(16, 16); + QSize ToolBarIconSizeFloating = QSize(24, 24); /** * Private data constructor @@ -1361,6 +1365,63 @@ return FloatingContainersTitle; } + +//=========================================================================== +void CDockManager::setDockWidgetToolBarStyle(Qt::ToolButtonStyle Style, CDockWidget::eState State) +{ + if (CDockWidget::StateFloating == State) + { + d->ToolBarStyleFloating = Style; + } + else + { + d->ToolBarStyleDocked = Style; + } +} + + +//=========================================================================== +Qt::ToolButtonStyle CDockManager::dockWidgetToolBarStyle(CDockWidget::eState State) const +{ + if (CDockWidget::StateFloating == State) + { + return d->ToolBarStyleFloating; + } + else + { + return d->ToolBarStyleDocked; + } +} + + +//=========================================================================== +void CDockManager::setDockWidgetToolBarIconSize(const QSize& IconSize, CDockWidget::eState State) +{ + if (CDockWidget::StateFloating == State) + { + d->ToolBarIconSizeFloating = IconSize; + } + else + { + d->ToolBarIconSizeDocked = IconSize; + } +} + + +//=========================================================================== +QSize CDockManager::dockWidgetToolBarIconSize(CDockWidget::eState State) const +{ + if (CDockWidget::StateFloating == State) + { + return d->ToolBarIconSizeFloating; + } + else + { + return d->ToolBarIconSizeDocked; + } +} + + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockManager.h (Arbeitskopie) @@ -212,7 +212,9 @@ FloatingContainerForceQWidgetTitleBar = 0x1000000,//!< Linux only ! Forces all FloatingContainer to use a QWidget based title bar. //!< If neither this nor FloatingContainerForceNativeTitleBar is set (the default) native titlebars are used except on known bad systems. //! Users can overwrite this by setting the environment variable ADS_UseNativeTitle to "1" or "0". - MiddleMouseButtonClosesTab = 0x2000000, //! If the flag is set, the user can use the mouse middle button to close the tab under the mouse + MiddleMouseButtonClosesTab = 0x2000000, //! If the flag is set, the user can use the mouse middle button to close the tab under the mouse + DisableTabTextEliding = 0x4000000, //! Set this flag to disable eliding of tab texts in dock area tabs + ShowTabTextOnlyForActiveTab = 0x8000000, //! Set this flag to show label texts in dock area tabs only for active tabs DefaultDockAreaButtons = DockAreaHasCloseButton | DockAreaHasUndockButton @@ -250,10 +252,13 @@ AutoHideSideBarsIconOnly = 0x10,///< show only icons in auto hide side tab - if a tab has no icon, then the text will be shown AutoHideShowOnMouseOver = 0x20, ///< show the auto hide window on mouse over tab and hide it if mouse leaves auto hide container AutoHideCloseButtonCollapsesDock = 0x40, ///< Close button of an auto hide container collapses the dock instead of hiding it completely + AutoHideHasCloseButton = 0x80, //< If the flag is set an auto hide title bar has a close button + AutoHideHasMinimizeButton = 0x100, ///< if this flag is set, the auto hide title bar has a minimize button to collapse the dock widget DefaultAutoHideConfig = AutoHideFeatureEnabled | DockAreaHasAutoHideButton | AutoHideCloseButtonCollapsesDock + | AutoHideHasCloseButton }; Q_DECLARE_FLAGS(AutoHideFlags, eAutoHideFlag) @@ -626,6 +631,36 @@ */ static QString floatingContainersTitle(); + /** + * This function sets the tool button style for the given dock widget state. + * It is possible to switch the tool button style depending on the state. + * If a dock widget is floating, then here are more space and it is + * possible to select a style that requires more space like + * Qt::ToolButtonTextUnderIcon. For the docked state Qt::ToolButtonIconOnly + * might be better. + */ + void setDockWidgetToolBarStyle(Qt::ToolButtonStyle Style, CDockWidget::eState State); + + /** + * Returns the tool button style for the given docking state. + * \see setToolBarStyle() + */ + Qt::ToolButtonStyle dockWidgetToolBarStyle(CDockWidget::eState State) const; + + /** + * This function sets the tool button icon size for the given state. + * If a dock widget is floating, there is more space and increasing the + * icon size is possible. For docked widgets, small icon sizes, eg. 16 x 16 + * might be better. + */ + void setDockWidgetToolBarIconSize(const QSize& IconSize, CDockWidget::eState State); + + /** + * Returns the icon size for a given docking state. + * \see setToolBarIconSize() + */ + QSize dockWidgetToolBarIconSize(CDockWidget::eState State) const; + public Q_SLOTS: /** * Opens the perspective with the given name. Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.cpp (Arbeitskopie) @@ -95,6 +95,7 @@ CDockWidget::eMinimumSizeHintMode MinimumSizeHintMode = CDockWidget::MinimumSizeHintFromDockWidget; WidgetFactory* Factory = nullptr; QPointer<CAutoHideTab> SideTabWidget; + CDockWidget::eToolBarStyleSource ToolBarStyleSource = CDockWidget::ToolBarStyleFromDockManager; /** * Private data constructor @@ -139,6 +140,11 @@ * returns true on success. */ bool createWidgetFromFactory(); + + /** + * Use the dock manager toolbar style and icon size for the different states + */ + void setToolBarStyleFromDockManager(); }; // struct DockWidgetPrivate @@ -213,6 +219,12 @@ if (Features.testFlag(CDockWidget::DeleteContentOnClose)) { + if (ScrollArea) + { + ScrollArea->takeWidget(); + delete ScrollArea; + ScrollArea = nullptr; + } Widget->deleteLater(); Widget = nullptr; } @@ -326,6 +338,22 @@ //============================================================================ +void DockWidgetPrivate::setToolBarStyleFromDockManager() +{ + if (!DockManager) + { + return; + } + auto State = CDockWidget::StateDocked; + _this->setToolBarIconSize(DockManager->dockWidgetToolBarIconSize(State), State); + _this->setToolBarStyle(DockManager->dockWidgetToolBarStyle(State), State); + State = CDockWidget::StateFloating; + _this->setToolBarIconSize(DockManager->dockWidgetToolBarIconSize(State), State); + _this->setToolBarStyle(DockManager->dockWidgetToolBarStyle(State), State); +} + + +//============================================================================ CDockWidget::CDockWidget(const QString &title, QWidget *parent) : QFrame(parent), d(new DockWidgetPrivate(this)) @@ -358,7 +386,21 @@ delete d; } +//============================================================================ +void CDockWidget::setToggleViewAction(QAction* action) +{ + if (!action) + { + return; + } + d->ToggleViewAction->setParent(nullptr); + delete d->ToggleViewAction; + d->ToggleViewAction = action; + d->ToggleViewAction->setParent(this); + connect(d->ToggleViewAction, &QAction::triggered, this, &CDockWidget::toggleView); +} + //============================================================================ void CDockWidget::setToggleViewActionChecked(bool Checked) { @@ -503,6 +545,15 @@ void CDockWidget::setDockManager(CDockManager* DockManager) { d->DockManager = DockManager; + if (!DockManager) + { + return; + } + + if (ToolBarStyleFromDockManager == d->ToolBarStyleSource) + { + d->setToolBarStyleFromDockManager(); + } } @@ -1264,6 +1315,24 @@ } +//============================================================================ +void CDockWidget::setToolBarStyleSource(eToolBarStyleSource Source) +{ + d->ToolBarStyleSource = Source; + if (ToolBarStyleFromDockManager == d->ToolBarStyleSource) + { + d->setToolBarStyleFromDockManager(); + } +} + + +//============================================================================ +CDockWidget::eToolBarStyleSource CDockWidget::toolBarStyleSource() const +{ + return d->ToolBarStyleSource; +} + + } // namespace ads //--------------------------------------------------------------------------- Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidget.h (Arbeitskopie) @@ -176,6 +176,12 @@ StateFloating }; + enum eToolBarStyleSource + { + ToolBarStyleFromDockManager, + ToolBarStyleFromDockWidget + }; + /** * Sets the widget for the dock widget to widget. * The InsertMode defines how the widget is inserted into the dock widget. @@ -410,6 +416,12 @@ QAction* toggleViewAction() const; /** + * Use provided action to be the default toggle view action for this dock widget. + * This dock widget now owns the action. + */ + void setToggleViewAction(QAction* action); + + /** * Configures the behavior of the toggle view action. * \see eToggleViewActionMode for a detailed description */ @@ -468,6 +480,17 @@ void setToolBar(QToolBar* ToolBar); /** + * Configures, if the dock widget uses the global tool bar styles from + * dock manager or if it uses its own tool bar style + */ + void setToolBarStyleSource(eToolBarStyleSource Source); + + /** + * Returns the configured tool bar style source + */ + eToolBarStyleSource toolBarStyleSource() const; + + /** * This function sets the tool button style for the given dock widget state. * It is possible to switch the tool button style depending on the state. * If a dock widget is floating, then here are more space and it is Index: scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/DockWidgetTab.cpp (Arbeitskopie) @@ -245,7 +245,14 @@ void DockWidgetTabPrivate::createLayout() { TitleLabel = new tTabLabel(); - TitleLabel->setElideMode(Qt::ElideRight); + if (CDockManager::testConfigFlag(CDockManager::DisableTabTextEliding)) + { + TitleLabel->setElideMode(Qt::ElideNone); + } + else + { + TitleLabel->setElideMode(Qt::ElideRight); + } TitleLabel->setText(DockWidget->windowTitle()); TitleLabel->setObjectName("dockWidgetTabLabel"); TitleLabel->setAlignment(Qt::AlignCenter); @@ -573,6 +580,14 @@ { d->updateCloseButtonVisibility(active); + if(CDockManager::testConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab) && !d->Icon.isNull()) + { + if(active) + d->TitleLabel->setVisible(true); + else + d->TitleLabel->setVisible(false); + } + // Focus related stuff if (CDockManager::testConfigFlag(CDockManager::FocusHighlighting) && !d->DockWidget->dockManager()->isRestoringState()) { Index: scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/FloatingDockContainer.cpp (Arbeitskopie) @@ -662,7 +662,6 @@ #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QDockWidget::setWidget(d->DockContainer); - QDockWidget::setFloating(true); QDockWidget::setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); Index: scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/ads.qrc (Arbeitskopie) @@ -20,5 +20,8 @@ <file>images/vs-pin-button-pinned-focused.svg</file> <file>images/vs-pin-button_45.svg</file> <file>images/pin-button-big.svg</file> + <file>images/minimize-button.svg</file> + <file>images/minimize-button-focused.svg</file> + <file>images/vs-pin-button-disabled.svg</file> </qresource> </RCC> Index: scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/ads_globals.h (Arbeitskopie) @@ -107,7 +107,8 @@ TitleBarButtonTabsMenu, TitleBarButtonUndock, TitleBarButtonClose, - TitleBarButtonAutoHide + TitleBarButtonAutoHide, + TitleBarButtonMinimize }; /** @@ -131,6 +132,7 @@ DockAreaMenuIcon, //!< DockAreaMenuIcon DockAreaUndockIcon,//!< DockAreaUndockIcon DockAreaCloseIcon, //!< DockAreaCloseIcon + DockAreaMinimizeIcon, IconCount, //!< just a delimiter for range checks }; Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default.css (Arbeitskopie) @@ -288,7 +288,8 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; qproperty-iconSize: 16px; } @@ -298,6 +299,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/default_linux.css (Arbeitskopie) @@ -324,8 +324,9 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); - qproperty-iconSize: 16px; + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; + qproperty-iconSize: 16px; } ads--CAutoHideDockContainer #dockAreaAutoHideButton { @@ -334,6 +335,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting.css (Arbeitskopie) @@ -326,16 +326,24 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; qproperty-iconSize: 16px; } + ads--CAutoHideDockContainer #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button-pinned-focused.svg); + qproperty-icon: url(:/ads/images/vs-pin-button-pinned-focused.svg), qproperty-iconSize: 16px; } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css =================================================================== --- scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css (Revision 25845) +++ scribus/third_party/Qt-Advanced-Docking-System/src/stylesheets/focus_highlighting_linux.css (Arbeitskopie) @@ -401,8 +401,9 @@ * CAutoHideDockContainer titlebar buttons *****************************************************************************/ #dockAreaAutoHideButton { - qproperty-icon: url(:/ads/images/vs-pin-button.svg); - qproperty-iconSize: 16px; + qproperty-icon: url(:/ads/images/vs-pin-button.svg), + url(:/ads/images/vs-pin-button-disabled.svg) disabled; + qproperty-iconSize: 16px; } ads--CAutoHideDockContainer #dockAreaAutoHideButton { @@ -411,6 +412,12 @@ } +ads--CAutoHideDockContainer #dockAreaMinimizeButton { + qproperty-icon: url(:/ads/images/minimize-button-focused.svg); + qproperty-iconSize: 16px; +} + + ads--CAutoHideDockContainer #dockAreaCloseButton{ qproperty-icon: url(:/ads/images/close-button-focused.svg) } Index: scribus/ui/aligndistribute.cpp =================================================================== --- scribus/ui/aligndistribute.cpp (Revision 25845) +++ scribus/ui/aligndistribute.cpp (Arbeitskopie) @@ -56,7 +56,7 @@ // ============================= -AlignDistributePalette::AlignDistributePalette(QWidget* parent) : DockPanelBase("AlignDistributePalette", parent) +AlignDistributePalette::AlignDistributePalette(QWidget* parent) : DockPanelBase("AlignDistributePalette", "panel-align-distribute", parent) { setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum)); setObjectName("AlignDistributePalette"); Index: scribus/ui/bookmarkpalette.cpp =================================================================== --- scribus/ui/bookmarkpalette.cpp (Revision 25845) +++ scribus/ui/bookmarkpalette.cpp (Arbeitskopie) @@ -25,7 +25,7 @@ #include "bookmarkpalette.h" -BookPalette::BookPalette(QWidget* parent) : DockPanelBase( "Books", parent ) +BookPalette::BookPalette(QWidget* parent) : DockPanelBase( "Books", "panel-bookmarks", parent ) { setObjectName(QString::fromLocal8Bit("Books")); setContentsMargins(3, 3, 3, 3); Index: scribus/ui/contentpalette.cpp =================================================================== --- scribus/ui/contentpalette.cpp (Revision 25845) +++ scribus/ui/contentpalette.cpp (Arbeitskopie) @@ -22,14 +22,14 @@ #include "pageitem_textframe.h" #include "scribus.h" // ScribusMainWindow #include "selection.h" -#include "styles/paragraphstyle.h" -#include "styles/charstyle.h" - +#include "styles/paragraphstyle.h" +#include "styles/charstyle.h" + ContentPalette::ContentPalette(QWidget *parent) : - DockPanelBase("ContentPalette", parent) -{ - setObjectName(QString::fromLocal8Bit("ContentPalette")); - + DockPanelBase("ContentPalette", "panel-content-properties", parent) +{ + setObjectName(QString::fromLocal8Bit("ContentPalette")); + QFont f(font()); f.setPointSize(f.pointSize()-1); setFont(f); Index: scribus/ui/docks/dock_panelbase.cpp =================================================================== --- scribus/ui/docks/dock_panelbase.cpp (Revision 25845) +++ scribus/ui/docks/dock_panelbase.cpp (Arbeitskopie) @@ -25,14 +25,9 @@ #include "prefscontext.h" #include "prefsfile.h" #include "prefsmanager.h" +#include "scribusapp.h" -DockPanelBase::DockPanelBase(const QString &title, QIcon icon, QWidget *parent) - : DockPanelBase(title, parent) -{ - this->setIcon(icon); -} - -DockPanelBase::DockPanelBase(const QString &title, QWidget *parent) +DockPanelBase::DockPanelBase(const QString &title, QString iconName, QWidget *parent) : CDockWidget(title, parent) { if (PrefsManager::instance().appPrefs.uiPrefs.useSmallWidgets) { @@ -50,12 +45,19 @@ "); } - setWindowIcon(IconManager::instance().loadPixmap("AppIcon.png")); + m_iconName = iconName; + + iconSetChange(); + setPrefsContext(title); setObjectName(title); connect(&PrefsManager::instance(), SIGNAL(prefsChanged()), this, SLOT(setFontSize())); + connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange())); } +DockPanelBase::DockPanelBase(const QString &title, QWidget *parent) + : DockPanelBase(title, QString(), parent){} + void DockPanelBase::setPrefsContext(const QString &context) { if (!m_prefsContextName.isEmpty()) @@ -78,3 +80,20 @@ newfont.setPointSize(PrefsManager::instance().appPrefs.uiPrefs.paletteFontSize); setFont(newfont); } + +void DockPanelBase::iconSetChange() +{ + IconManager &iconManager = IconManager::instance(); + + if(m_iconName.isEmpty()) + { + setWindowIcon(iconManager.loadPixmap("AppIcon.png")); + setIcon(QIcon()); + } + else + { + setWindowIcon(iconManager.loadPixmap(m_iconName)); + setIcon(iconManager.loadPixmap(m_iconName)); + } + +} Index: scribus/ui/docks/dock_panelbase.h =================================================================== --- scribus/ui/docks/dock_panelbase.h (Revision 25845) +++ scribus/ui/docks/dock_panelbase.h (Arbeitskopie) @@ -32,12 +32,13 @@ public: DockPanelBase(const QString &title, QWidget *parent = 0); - DockPanelBase(const QString &title, QIcon icon, QWidget *parent = 0); + DockPanelBase(const QString &title, QString iconName, QWidget *parent = 0); void startup(); public slots: virtual void setFontSize(); + void iconSetChange(); protected: /** @brief Set the Preferences context to be used for storage of startup visibility and position and size */ @@ -45,6 +46,7 @@ PrefsContext *m_palettePrefs {nullptr}; QString m_prefsContextName; + QString m_iconName; }; #endif // DOCK_PANELBASE_H Index: scribus/ui/inlinepalette.cpp =================================================================== --- scribus/ui/inlinepalette.cpp (Revision 25845) +++ scribus/ui/inlinepalette.cpp (Arbeitskopie) @@ -101,7 +101,7 @@ clearSelection(); } -InlinePalette::InlinePalette( QWidget* parent) : DockPanelBase("Inline", parent) +InlinePalette::InlinePalette( QWidget* parent) : DockPanelBase("Inline", "panel-inline-items", parent) { setContentsMargins(3, 3, 3, 3); setMinimumSize( QSize( 220, 240 ) ); Index: scribus/ui/layers.cpp =================================================================== --- scribus/ui/layers.cpp (Revision 25845) +++ scribus/ui/layers.cpp (Arbeitskopie) @@ -42,7 +42,7 @@ #include "docks/dock_panelbase.h" #include "undomanager.h" -LayerPalette::LayerPalette(QWidget* parent) : DockPanelBase("Layers", parent) +LayerPalette::LayerPalette(QWidget* parent) : DockPanelBase("Layers", "panel-layers", parent) { setObjectName(QString::fromLocal8Bit("Layers")); setMinimumSize( QSize(220, 240) ); Index: scribus/ui/outlinepalette.cpp =================================================================== --- scribus/ui/outlinepalette.cpp (Revision 25845) +++ scribus/ui/outlinepalette.cpp (Arbeitskopie) @@ -431,7 +431,7 @@ return true; } -OutlinePalette::OutlinePalette( QWidget* parent) : DockPanelBase("Tree", parent) +OutlinePalette::OutlinePalette( QWidget* parent) : DockPanelBase("Tree", "panel-outline", parent) { // resize( 220, 240 ); setMinimumSize( QSize( 220, 240 ) ); Index: scribus/ui/pagepalette.cpp =================================================================== --- scribus/ui/pagepalette.cpp (Revision 25845) +++ scribus/ui/pagepalette.cpp (Arbeitskopie) @@ -21,7 +21,7 @@ #include "scribusdoc.h" #include "scribusview.h" -PagePalette::PagePalette(QWidget *parent) : DockPanelBase("PagePalette", parent) +PagePalette::PagePalette(QWidget *parent) : DockPanelBase("PagePalette", "panel-page", parent) { m_scMW = nullptr;//(ScribusMainWindow*) parent; m_view = nullptr; Index: scribus/ui/propertiespalette.cpp =================================================================== --- scribus/ui/propertiespalette.cpp (Revision 25845) +++ scribus/ui/propertiespalette.cpp (Arbeitskopie) @@ -46,7 +46,7 @@ #include "util_math.h" -PropertiesPalette::PropertiesPalette(QWidget *parent) : DockPanelBase("PropertiesPalette", parent) +PropertiesPalette::PropertiesPalette(QWidget *parent) : DockPanelBase("PropertiesPalette", "panel-frame-properties", parent) { undoManager = UndoManager::instance(); Index: scribus/undogui.cpp =================================================================== --- scribus/undogui.cpp (Revision 25845) +++ scribus/undogui.cpp (Arbeitskopie) @@ -38,7 +38,7 @@ #include "undogui.h" -UndoGui::UndoGui(QWidget* parent, const char* name) : DockPanelBase(name, parent) +UndoGui::UndoGui(QWidget* parent, const char* name) : DockPanelBase(name, "panel-action-history", parent) { languageChange(); } |
|
Sì, esatto! |
|
sorry, I wrote in Italian :-) yes, exactly so. |
|
i guess that this is resolved now : - ) thanks martin! |
Date Modified | Username | Field | Change |
---|---|---|---|
2023-12-01 20:04 | guiodic | New Issue | |
2023-12-01 20:04 | guiodic | File Added: Screenshot_20231201_210003.png | |
2023-12-02 08:55 | ale | Note Added: 0050536 | |
2023-12-02 08:56 | ale | Note Edited: 0050536 | |
2023-12-02 13:41 | nitramr | Note Added: 0050537 | |
2023-12-02 13:41 | nitramr | File Added: ads_2023-12-02_01.patch | |
2023-12-02 13:41 | nitramr | File Added: Bildschirmfoto vom 2023-12-02 14-35-10.png | |
2023-12-02 13:41 | nitramr | File Added: Bildschirmfoto vom 2023-12-02 14-36-31.png | |
2023-12-02 13:57 | nitramr | Assigned To | => nitramr |
2023-12-02 13:57 | nitramr | Status | new => assigned |
2023-12-02 13:57 | nitramr | Patch | No => Yes |
2023-12-02 14:01 | nitramr | Note Edited: 0050537 | |
2023-12-02 14:23 | guiodic | Note Added: 0050538 | |
2023-12-02 14:34 | nitramr | Note Added: 0050539 | |
2023-12-02 14:34 | nitramr | File Added: ads_2023-12-2_02.patch | |
2023-12-02 14:34 | nitramr | File Added: Bildschirmfoto vom 2023-12-02 15-30-13.png | |
2023-12-02 14:38 | guiodic | Note Added: 0050540 | |
2023-12-02 14:39 | guiodic | Note Added: 0050541 | |
2023-12-13 11:27 | ale | Note Added: 0050597 | |
2023-12-13 11:27 | ale | Status | assigned => closed |
2023-12-13 11:27 | ale | Resolution | open => fixed |