diff --git a/src/config/shortcutswidget.cpp b/src/config/shortcutswidget.cpp index 7a3e2331..a857e635 100644 --- a/src/config/shortcutswidget.cpp +++ b/src/config/shortcutswidget.cpp @@ -4,6 +4,7 @@ #include "shortcutswidget.h" #include "setshortcutwidget.h" #include "src/core/qguiappcurrentscreen.h" +#include "src/utils/configshortcuts.h" #include #include #include @@ -36,7 +37,8 @@ ShortcutsWidget::ShortcutsWidget(QWidget* parent) m_layout = new QVBoxLayout(this); m_layout->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - m_shortcuts = m_config.shortcuts(); + m_shortcuts = ConfigShortcuts().captureShortcutsDefault( + CaptureToolButton::getIterableButtonTypes()); initInfoTable(); show(); } diff --git a/src/core/controller.cpp b/src/core/controller.cpp index 601136a5..63e6a97f 100644 --- a/src/core/controller.cpp +++ b/src/core/controller.cpp @@ -64,9 +64,6 @@ Controller::Controller() m_appLatestVersion = QStringLiteral(APP_VERSION).replace("v", ""); qApp->setQuitOnLastWindowClosed(false); - // set default shortcusts if not set yet - ConfigHandler().setShortcutsDefault(); - // init tray icon #if defined(Q_OS_LINUX) || defined(Q_OS_UNIX) if (!ConfigHandler().disabledTrayIconValue()) { diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 0b777e80..98f8f855 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -666,33 +666,11 @@ QVector ConfigHandler::fromButtonToInt( QVector ConfigHandler::shortcuts() { ConfigShortcuts configShortcuts; - m_shortcuts = configShortcuts.captureShortcutsDefault(getButtons()); + m_shortcuts = configShortcuts.captureShortcutsDefault( + CaptureToolButton::getIterableButtonTypes()); return m_shortcuts; } -void ConfigHandler::setShortcutsDefault() -{ - ConfigShortcuts configShortcuts; - for (auto shortcutItem : shortcuts()) { - QString shortcutName = shortcutItem.at(0); - QString shortcutDescription = shortcutItem.at(1); - QString shortcutValueDefault = shortcutItem.at(2); - - QString shortcutValue = shortcut(shortcutName); - - QKeySequence ks = QKeySequence(); - if (shortcutValue.isNull()) { - ks = QKeySequence(shortcutValueDefault); - if (!setShortcut(shortcutName, ks.toString())) { - shortcutValue = shortcutValueDefault; - } - } - - m_shortcuts << (QStringList() << shortcutName << shortcutDescription - << shortcutValue); - } -} - bool ConfigHandler::setShortcut(const QString& shortcutName, const QString& shortutValue) { diff --git a/src/utils/confighandler.h b/src/utils/confighandler.h index 908a52eb..5cc3fe8d 100644 --- a/src/utils/confighandler.h +++ b/src/utils/confighandler.h @@ -105,7 +105,6 @@ public: int undoLimit(); QVector shortcuts(); - void setShortcutsDefault(); bool setShortcut(const QString&, const QString&); const QString& shortcut(const QString&); diff --git a/src/widgets/capture/buttonhandler.cpp b/src/widgets/capture/buttonhandler.cpp index 34b91241..c3f030e6 100644 --- a/src/widgets/capture/buttonhandler.cpp +++ b/src/widgets/capture/buttonhandler.cpp @@ -361,6 +361,9 @@ void ButtonHandler::setButtons(const QVector v) bool ButtonHandler::contains(const QPoint& p) const { + if (m_vectorButtons.isEmpty()) { + return false; + } QPoint first(m_vectorButtons.first()->pos()); QPoint last(m_vectorButtons.last()->pos()); bool firstIsTopLeft = (first.x() <= last.x() && first.y() <= last.y()); diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp index eca4230a..078b2819 100644 --- a/src/widgets/capture/capturewidget.cpp +++ b/src/widgets/capture/capturewidget.cpp @@ -205,10 +205,13 @@ void CaptureWidget::updateButtons() m_uiColor = m_config.uiMainColorValue(); m_contrastUiColor = m_config.uiContrastColorValue(); - auto buttons = m_config.getButtons(); + auto allButtonTypes = CaptureToolButton::getIterableButtonTypes(); + auto visibleButtonTypes = m_config.getButtons(); QVector vectorButtons; - for (const CaptureToolButton::ButtonType& t : buttons) { + // Add all buttons but hide those that were disabled in the Interface config + // This will allow keyboard shortcuts for those buttons to work + for (const CaptureToolButton::ButtonType& t : allButtonTypes) { CaptureToolButton* b = new CaptureToolButton(t, this); if (t == CaptureToolButton::TYPE_SELECTIONINDICATOR) { m_sizeIndButton = b; @@ -241,14 +244,20 @@ void CaptureWidget::updateButtons() break; } - connect( - b, &CaptureToolButton::pressedButton, this, &CaptureWidget::setState); connect(b->tool(), &CaptureTool::requestAction, this, &CaptureWidget::handleButtonSignal); - vectorButtons << b; + if (visibleButtonTypes.contains(t)) { + connect(b, + &CaptureToolButton::pressedButton, + this, + &CaptureWidget::setState); + vectorButtons << b; + } else { + b->hide(); + } } m_buttonHandler->setButtons(vectorButtons); }