From 86e55399959a4005a93937d780cd89d3b47fc948 Mon Sep 17 00:00:00 2001 From: Jakob Date: Sun, 1 Oct 2023 12:56:31 +0200 Subject: [PATCH] Use checkboxes instead of tool buttons in onion skin widget (#1753) * Use checkboxes instead of tool buttons in onion skin widget * Improve styling of group box on Mac OS --------- Co-authored-by: MrStevns --- app/src/onionskinwidget.cpp | 32 +++++++++++------- app/src/onionskinwidget.h | 4 +-- app/ui/onionskin.ui | 67 ++++--------------------------------- 3 files changed, 28 insertions(+), 75 deletions(-) diff --git a/app/src/onionskinwidget.cpp b/app/src/onionskinwidget.cpp index f4872aa3d3..8b7b8cac1c 100644 --- a/app/src/onionskinwidget.cpp +++ b/app/src/onionskinwidget.cpp @@ -57,9 +57,23 @@ void OnionSkinWidget::initUI() ui->opacityGroup->setLayout(opacityLayout); #ifdef __APPLE__ + + ui->scrollAreaWidgetContents->layout()->setSpacing(8); + // Mac only style. ToolButtons are naturally borderless on Win/Linux. QString stylesheet = "QToolButton { border: 0px; } " + "QGroupBox::title {" + "subcontrol-origin: padding;" + "left: 6px;" + "padding: 2px 2px 0px 0px;" + "background: transparent;" + "}" + "QGroupBox {" + "subcontrol-origin: margin;" + "margin-top: 8px;" + "padding-top: 16px;" + "}" "QToolButton:pressed{ border: 1px solid #FFADAD; border-radius: 2px; background-color: #D5D5D5; }" "QToolButton:checked{ border: 1px solid #ADADAD; border-radius: 2px; background-color: #D5D5D5; }"; setStyleSheet(this->styleSheet().append(stylesheet)); @@ -74,8 +88,8 @@ void OnionSkinWidget::makeConnections() connect(ui->onionPrevFramesNumBox, spinBoxChanged, this, &OnionSkinWidget::onionPrevFramesNumChange); connect(ui->onionNextFramesNumBox, spinBoxChanged, this, &OnionSkinWidget::onionNextFramesNumChange); - connect(ui->onionPrevButton, &QToolButton::clicked, this, &OnionSkinWidget::onionPrevButtonClicked); - connect(ui->onionNextButton, &QToolButton::clicked, this, &OnionSkinWidget::onionNextButtonClicked); + connect(ui->prevFramesGroup, &QGroupBox::clicked, this, &OnionSkinWidget::prevFramesGroupClicked); + connect(ui->nextFramesGroup, &QGroupBox::clicked, this, &OnionSkinWidget::nextFramesGroupClicked); connect(ui->onionBlueButton, &QToolButton::clicked, this, &OnionSkinWidget::onionBlueButtonClicked); connect(ui->onionRedButton, &QToolButton::clicked, this, &OnionSkinWidget::onionRedButtonClicked); @@ -91,18 +105,12 @@ void OnionSkinWidget::updateUI() { PreferenceManager* prefs = editor()->preference(); - QSignalBlocker b1(ui->onionPrevButton); - ui->onionPrevButton->setChecked(prefs->isOn(SETTING::PREV_ONION)); - - QSignalBlocker b2(ui->onionNextButton); - ui->onionNextButton->setChecked(prefs->isOn(SETTING::NEXT_ONION)); + ui->prevFramesGroup->setChecked(prefs->isOn(SETTING::PREV_ONION)); + ui->nextFramesGroup->setChecked(prefs->isOn(SETTING::NEXT_ONION)); QSignalBlocker b3(ui->onionBlueButton); ui->onionBlueButton->setChecked(prefs->isOn(SETTING::ONION_BLUE)); - ui->onionRedButton->setEnabled(ui->onionPrevButton->isChecked()); - ui->onionBlueButton->setEnabled(ui->onionNextButton->isChecked()); - QSignalBlocker b4(ui->onionRedButton); ui->onionRedButton->setChecked(prefs->isOn(SETTING::ONION_RED)); @@ -119,13 +127,13 @@ void OnionSkinWidget::updateUI() } -void OnionSkinWidget::onionPrevButtonClicked(bool isOn) +void OnionSkinWidget::prevFramesGroupClicked(bool isOn) { PreferenceManager* prefs = editor()->preference(); prefs->set(SETTING::PREV_ONION, isOn); } -void OnionSkinWidget::onionNextButtonClicked(bool isOn) +void OnionSkinWidget::nextFramesGroupClicked(bool isOn) { PreferenceManager* prefs = editor()->preference(); prefs->set(SETTING::NEXT_ONION, isOn); diff --git a/app/src/onionskinwidget.h b/app/src/onionskinwidget.h index 0bfcf64ef7..711f249702 100644 --- a/app/src/onionskinwidget.h +++ b/app/src/onionskinwidget.h @@ -41,8 +41,8 @@ class OnionSkinWidget : public BaseDockWidget private slots: void playbackStateChanged(int); - void onionPrevButtonClicked(bool); - void onionNextButtonClicked(bool); + void prevFramesGroupClicked(bool); + void nextFramesGroupClicked(bool); void onionBlueButtonClicked(bool); void onionRedButtonClicked(bool); void onionMaxOpacityChange(int); diff --git a/app/ui/onionskin.ui b/app/ui/onionskin.ui index bc9b8967c7..9623c2cd59 100644 --- a/app/ui/onionskin.ui +++ b/app/ui/onionskin.ui @@ -104,6 +104,9 @@ Previous Frames + + true + QLayout::SetDefaultConstraint @@ -120,38 +123,6 @@ 6 - - - - Onion skin previous frame - - - Onion skin previous frame - - - false - - - ... - - - - :/app/icons/onionPrev.png:/app/icons/onionPrev.png - - - - 24 - 24 - - - - true - - - true - - - @@ -214,6 +185,9 @@ Next Frames + + true + QLayout::SetDefaultConstraint @@ -230,35 +204,6 @@ 6 - - - - Onion skin next frame - - - Onion skin next frame - - - ... - - - - :/app/icons/onionNext.png:/app/icons/onionNext.png - - - - 24 - 24 - - - - true - - - true - - -