summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-04-04 14:41:04 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-04-04 14:41:04 -0400
commita5b034d4a9c44f9bc1e83b01de82530f8fc63013 (patch)
tree7a358206c4aff9c33df1752c92eafec97cee2244 /SQLiteStudio3/guiSQLiteStudio/taskbar.cpp
parent306d6d3ca9c9ad774d19135681a7f9805f77035f (diff)
Imported Upstream version 3.0.4upstream/3.0.4
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/taskbar.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/taskbar.cpp67
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;
+}