Add a private method to get control widget by enum to TitleWidgetQt
This commit is contained in:
parent
3a659b4b54
commit
e109da037e
|
@ -110,6 +110,16 @@ bool TitleWidgetQt::hasShadow() const {
|
||||||
&& Ui::Platform::TranslucentWindowsSupported(center);
|
&& Ui::Platform::TranslucentWindowsSupported(center);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ui::IconButton *TitleWidgetQt::controlWidget(Control control) const {
|
||||||
|
switch (control) {
|
||||||
|
case Control::Minimize: return _minimize;
|
||||||
|
case Control::Maximize: return _maximizeRestore;
|
||||||
|
case Control::Close: return _close;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void TitleWidgetQt::paintEvent(QPaintEvent *e) {
|
void TitleWidgetQt::paintEvent(QPaintEvent *e) {
|
||||||
auto active = isActiveWindow();
|
auto active = isActiveWindow();
|
||||||
if (_activeState != active) {
|
if (_activeState != active) {
|
||||||
|
@ -141,22 +151,24 @@ void TitleWidgetQt::updateControlsPosition() {
|
||||||
const auto controlsLeft = controlsLayout.left;
|
const auto controlsLeft = controlsLayout.left;
|
||||||
const auto controlsRight = controlsLayout.right;
|
const auto controlsRight = controlsLayout.right;
|
||||||
|
|
||||||
if (ranges::contains(controlsLeft, Control::Minimize)
|
const auto controlPresent = [&](Control control) {
|
||||||
|| ranges::contains(controlsRight, Control::Minimize)) {
|
return ranges::contains(controlsLeft, control)
|
||||||
|
|| ranges::contains(controlsRight, control);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (controlPresent(Control::Minimize)) {
|
||||||
_minimize->show();
|
_minimize->show();
|
||||||
} else {
|
} else {
|
||||||
_minimize->hide();
|
_minimize->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ranges::contains(controlsLeft, Control::Maximize)
|
if (controlPresent(Control::Maximize)) {
|
||||||
|| ranges::contains(controlsRight, Control::Maximize)) {
|
|
||||||
_maximizeRestore->show();
|
_maximizeRestore->show();
|
||||||
} else {
|
} else {
|
||||||
_maximizeRestore->hide();
|
_maximizeRestore->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ranges::contains(controlsLeft, Control::Close)
|
if (controlPresent(Control::Close)) {
|
||||||
|| ranges::contains(controlsRight, Control::Close)) {
|
|
||||||
_close->show();
|
_close->show();
|
||||||
} else {
|
} else {
|
||||||
_close->hide();
|
_close->hide();
|
||||||
|
@ -175,35 +187,18 @@ void TitleWidgetQt::updateControlsPositionBySide(
|
||||||
|
|
||||||
auto position = 0;
|
auto position = 0;
|
||||||
for (const auto &control : preparedControls) {
|
for (const auto &control : preparedControls) {
|
||||||
switch (control) {
|
const auto widget = controlWidget(control);
|
||||||
case Control::Minimize:
|
if (!widget) {
|
||||||
if (right) {
|
continue;
|
||||||
_minimize->moveToRight(position, 0);
|
|
||||||
} else {
|
|
||||||
_minimize->moveToLeft(position, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
position += _minimize->width();
|
|
||||||
break;
|
|
||||||
case Control::Maximize:
|
|
||||||
if (right) {
|
|
||||||
_maximizeRestore->moveToRight(position, 0);
|
|
||||||
} else {
|
|
||||||
_maximizeRestore->moveToLeft(position, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
position += _maximizeRestore->width();
|
|
||||||
break;
|
|
||||||
case Control::Close:
|
|
||||||
if (right) {
|
|
||||||
_close->moveToRight(position, 0);
|
|
||||||
} else {
|
|
||||||
_close->moveToLeft(position, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
position += _close->width();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (right) {
|
||||||
|
widget->moveToRight(position, 0);
|
||||||
|
} else {
|
||||||
|
widget->moveToLeft(position, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
position += widget->width();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ private:
|
||||||
|
|
||||||
void toggleFramelessWindow(bool enabled);
|
void toggleFramelessWindow(bool enabled);
|
||||||
bool hasShadow() const;
|
bool hasShadow() const;
|
||||||
|
Ui::IconButton *controlWidget(Control control) const;
|
||||||
QMargins resizeArea() const;
|
QMargins resizeArea() const;
|
||||||
Qt::Edges edgesFromPos(const QPoint &pos) const;
|
Qt::Edges edgesFromPos(const QPoint &pos) const;
|
||||||
void updateCursor(Qt::Edges edges);
|
void updateCursor(Qt::Edges edges);
|
||||||
|
|
Loading…
Reference in New Issue