Skip to content

Commit e98fd5b

Browse files
author
Uwe Kindler
committed
Improved icons for all button, adjusted size of dock marker
1 parent a012af2 commit e98fd5b

11 files changed

+239
-59
lines changed

demo/MainWindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ CMainWindow::CMainWindow(QWidget *parent) :
282282

283283
d->createContent();
284284
// Default window geometry
285-
resize(800, 600);
285+
resize(1280, 720);
286286

287287
d->restoreState();
288288
d->restorePerspectives();

src/DockAreaTabBar.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ CFloatingDockContainer* CDockAreaTabBar::makeAreaFloating(const QPoint& Offset,
238238
{
239239
QSize Size = d->DockArea->size();
240240
CFloatingDockContainer* FloatingWidget = new CFloatingDockContainer(d->DockArea);
241-
FloatingWidget->startFloating(Offset, Size, DragState);
241+
FloatingWidget->startFloating(Offset, Size, DragState, nullptr);
242242
auto TopLevelDockWidget = FloatingWidget->topLevelDockWidget();
243243
if (TopLevelDockWidget)
244244
{

src/DockAreaTitleBar.cpp

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,23 @@ struct DockAreaTitleBarPrivate
9797
{
9898
return DockArea->dockManager()->configFlags().testFlag(Flag);
9999
}
100+
101+
/**
102+
* Helper class to set title bar burron icons depending on operating system
103+
* and to avoid duplicated code
104+
*/
105+
void setTitleBarButtonIcon(tTileBarButton* Button, QStyle::StandardPixmap StandarPixmap)
106+
{
107+
#ifdef Q_OS_LINUX
108+
Button->setIcon(_this->style()->standardIcon(StandarPixmap));
109+
#else
110+
QIcon Icon;
111+
QPixmap normalPixmap = _this->style()->standardPixmap(StandarPixmap, 0, Button);
112+
Icon.addPixmap(internal::createTransparentPixmap(normalPixmap, 0.25), QIcon::Disabled);
113+
Icon.addPixmap(normalPixmap, QIcon::Normal);
114+
Button->setIcon(Icon);
115+
#endif
116+
}
100117
};// struct DockAreaTitleBarPrivate
101118

102119

@@ -112,18 +129,12 @@ DockAreaTitleBarPrivate::DockAreaTitleBarPrivate(CDockAreaTitleBar* _public) :
112129
//============================================================================
113130
void DockAreaTitleBarPrivate::createButtons()
114131
{
132+
// Tabs menu button
115133
TabsMenuButton = new tTileBarButton();
116134
TabsMenuButton->setObjectName("tabsMenuButton");
117135
TabsMenuButton->setAutoRaise(true);
118136
TabsMenuButton->setPopupMode(QToolButton::InstantPopup);
119-
120-
QIcon MenuIcon;
121-
QPixmap normalPixmap = _this->style()->standardPixmap(
122-
QStyle::SP_TitleBarUnshadeButton, 0, TabsMenuButton);
123-
MenuIcon.addPixmap(internal::createTransparentPixmap(normalPixmap, 0.25), QIcon::Disabled);
124-
MenuIcon.addPixmap(normalPixmap, QIcon::Normal);
125-
TabsMenuButton->setIcon(MenuIcon);
126-
137+
setTitleBarButtonIcon(TabsMenuButton, QStyle::SP_TitleBarUnshadeButton);
127138
QMenu* TabsMenu = new QMenu(TabsMenuButton);
128139
#ifndef QT_NO_TOOLTIP
129140
TabsMenu->setToolTipsVisible(true);
@@ -138,33 +149,25 @@ void DockAreaTitleBarPrivate::createButtons()
138149
_this->connect(TabsMenuButton->menu(), SIGNAL(triggered(QAction*)),
139150
SLOT(onTabsMenuActionTriggered(QAction*)));
140151

152+
141153
// Undock button
142154
UndockButton = new tTileBarButton();
143155
UndockButton->setObjectName("undockButton");
144156
UndockButton->setAutoRaise(true);
145157
#ifndef QT_NO_TOOLTIP
146158
UndockButton->setToolTip(QObject::tr("Detach Group"));
147159
#endif
148-
QIcon UndockIcon;
149-
normalPixmap = _this->style()->standardPixmap(QStyle::SP_TitleBarNormalButton, 0, UndockButton);
150-
UndockIcon.addPixmap(internal::createTransparentPixmap(normalPixmap, 0.25), QIcon::Disabled);
151-
UndockIcon.addPixmap(normalPixmap, QIcon::Normal);
152-
UndockButton->setIcon(UndockIcon);
153-
UndockButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
160+
setTitleBarButtonIcon(UndockButton, QStyle::SP_TitleBarNormalButton);
161+
UndockButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
154162
TopLayout->addWidget(UndockButton, 0);
155163
_this->connect(UndockButton, SIGNAL(clicked()), SLOT(onUndockButtonClicked()));
156164

165+
166+
// Close button
157167
CloseButton = new tTileBarButton();
158168
CloseButton->setObjectName("closeButton");
159169
CloseButton->setAutoRaise(true);
160-
161-
// The standard icons does not look good on high DPI screens
162-
QIcon CloseIcon;// = _this->style()->standardIcon(QStyle::SP_TitleBarCloseButton);
163-
normalPixmap = _this->style()->standardPixmap(QStyle::SP_TitleBarCloseButton, 0, CloseButton);
164-
CloseIcon.addPixmap(internal::createTransparentPixmap(normalPixmap, 0.25), QIcon::Disabled);
165-
CloseIcon.addPixmap(normalPixmap, QIcon::Normal);
166-
167-
CloseButton->setIcon(CloseIcon);
170+
setTitleBarButtonIcon(CloseButton, QStyle::SP_TitleBarCloseButton);
168171
#ifndef QT_NO_TOOLTIP
169172
if (testConfigFlag(CDockManager::DockAreaCloseButtonClosesTab))
170173
{

src/DockManager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,11 @@ DockManagerPrivate::DockManagerPrivate(CDockManager* _public) :
145145
void DockManagerPrivate::loadStylesheet()
146146
{
147147
QString Result;
148+
#ifdef Q_OS_LINUX
149+
QFile StyleSheetFile(":ads/stylesheets/default_linux.css");
150+
#else
148151
QFile StyleSheetFile(":ads/stylesheets/default.css");
152+
#endif
149153
StyleSheetFile.open(QIODevice::ReadOnly);
150154
QTextStream StyleSheetStream(&StyleSheetFile);
151155
Result = StyleSheetStream.readAll();

src/DockOverlay.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,20 @@ struct DockOverlayCrossPrivate
132132
return Color;
133133
}
134134

135+
//============================================================================
136+
/**
137+
* Helper function that returns the drop indicator width depending on the
138+
* operating system
139+
*/
140+
qreal dropIndicatiorWidth() const
141+
{
142+
#ifdef Q_OS_LINUX
143+
return 40;
144+
#else
145+
return static_cast<qreal>(l->fontMetrics().height()) * 3.f;
146+
#endif
147+
}
148+
135149

136150
//============================================================================
137151
QWidget* createDropIndicatorWidget(DockWidgetArea DockWidgetArea,
@@ -140,7 +154,7 @@ struct DockOverlayCrossPrivate
140154
QLabel* l = new QLabel();
141155
l->setObjectName("DockWidgetAreaLabel");
142156

143-
const qreal metric = static_cast<qreal>(l->fontMetrics().height()) * 3.f;
157+
const qreal metric = dropIndicatiorWidth();
144158
const QSizeF size(metric, metric);
145159

146160
l->setPixmap(createHighDpiDropIndicatorPixmap(size, DockWidgetArea, Mode));
@@ -154,7 +168,7 @@ struct DockOverlayCrossPrivate
154168
void updateDropIndicatorIcon(QWidget* DropIndicatorWidget)
155169
{
156170
QLabel* l = qobject_cast<QLabel*>(DropIndicatorWidget);
157-
const qreal metric = static_cast<qreal>(l->fontMetrics().height()) * 3.f;
171+
const qreal metric = dropIndicatiorWidth();
158172
const QSizeF size(metric, metric);
159173

160174
int Area = l->property("dockWidgetArea").toInt();

src/DockWidgetTab.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ void DockWidgetTabPrivate::createLayout()
151151
CloseIcon.addPixmap(normalPixmap, QIcon::Normal);
152152
CloseIcon.addPixmap(internal::createTransparentPixmap(normalPixmap, 0.25), QIcon::Disabled);
153153
CloseButton->setIcon(CloseIcon);
154-
CloseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
154+
155+
CloseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
155156
CloseButton->setVisible(false);
156157
#ifndef QT_NO_TOOLTIP
157158
CloseButton->setToolTip(QObject::tr("Close Tab"));
@@ -223,7 +224,7 @@ bool DockWidgetTabPrivate::startFloating(eDragState DraggingState)
223224

224225
if (DraggingFloatingWidget == DraggingState)
225226
{
226-
FloatingWidget->startDragging(DragStartMousePosition, Size);
227+
FloatingWidget->startDragging(DragStartMousePosition, Size, _this);
227228
auto Overlay = DockWidget->dockManager()->containerOverlay();
228229
Overlay->setAllowedAreas(OuterDockAreas);
229230
this->FloatingWidget = FloatingWidget;

0 commit comments

Comments
 (0)