diff options
| author | 2015-04-04 14:41:04 -0400 | |
|---|---|---|
| committer | 2015-04-04 14:41:04 -0400 | |
| commit | a5b034d4a9c44f9bc1e83b01de82530f8fc63013 (patch) | |
| tree | 7a358206c4aff9c33df1752c92eafec97cee2244 /SQLiteStudio3/guiSQLiteStudio/taskbar.cpp | |
| parent | 306d6d3ca9c9ad774d19135681a7f9805f77035f (diff) | |
Imported Upstream version 3.0.4upstream/3.0.4
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/taskbar.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/taskbar.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp index 359dc29..b63c58d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp @@ -65,6 +65,22 @@ void TaskBar::mousePressed() dragStartTask->trigger(); } +void TaskBar::taskBarMenuAboutToShow() +{ + // This is a hack. We want to display "Ctrl+W" shortcut to the user in this menu, but assigning that shortcut + // permanently to the action makes it ambigous to Qt, because it's already a standard shortcut, + // thus making Qt confused and this shortcut working only every second time. + // Here we assign the shortcut only for the time of displaying the menu. Rest of the time it's not assigned. + QList<QKeySequence> bindings = QKeySequence::keyBindings(QKeySequence::Close); + if (bindings.size() > 0) + MAINWINDOW->getAction(MainWindow::Action::CLOSE_WINDOW)->setShortcut(bindings.first()); +} + +void TaskBar::taskBarMenuAboutToHide() +{ + MAINWINDOW->getAction(MainWindow::Action::CLOSE_WINDOW)->setShortcut(QKeySequence()); +} + int TaskBar::getActiveTaskIdx() { QAction* checked = taskGroup.checkedAction(); @@ -95,6 +111,14 @@ void TaskBar::prevTask() tasks[idx]->trigger(); } +void TaskBar::setActiveTask(QAction* task) +{ + if (!task) + return; + + task->trigger(); +} + void TaskBar::initContextMenu(ExtActionContainer* mainWin) { // MainWindow is passed as argument to this function, so it's not referenced with MAINWINDOW macro, @@ -107,6 +131,8 @@ void TaskBar::initContextMenu(ExtActionContainer* mainWin) taskMenu->addAction(mainWin->getAction(MainWindow::RESTORE_WINDOW)); taskMenu->addAction(mainWin->getAction(MainWindow::RENAME_WINDOW)); + connect(taskMenu, SIGNAL(aboutToShow()), this, SLOT(taskBarMenuAboutToShow())); + connect(taskMenu, SIGNAL(aboutToHide()), this, SLOT(taskBarMenuAboutToHide())); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(taskBarMenuRequested(QPoint))); } @@ -313,3 +339,44 @@ int TaskBar::count() { return tasks.count(); } + +QAction* TaskBar::getActiveTask() const +{ + QAction* checked = taskGroup.checkedAction(); + if (!checked) + return nullptr; + + return checked; +} + +QAction* TaskBar::getNextTask(QAction* from) const +{ + if (!from) + from = getActiveTask(); + + if (!from) + return nullptr; + + int idx = tasks.indexOf(from); + idx++; + if (idx < tasks.size()) + return tasks[idx]; + + return nullptr; +} + +QAction* TaskBar::getPrevTask(QAction* from) const +{ + if (!from) + from = getActiveTask(); + + if (!from) + return nullptr; + + int idx = tasks.indexOf(from); + idx--; + if (idx > 0) + return tasks[idx]; + + return nullptr; +} |
