aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-04-04 14:41:10 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-04-04 14:41:10 -0400
commitb5f93b05578293d1d233b4920a28a5c2fd826f94 (patch)
tree82332679f647e9c76e331206786d07a58dcfa9b8 /SQLiteStudio3/guiSQLiteStudio/taskbar.cpp
parentaf8a7a3e3dccf9c9ad257e3952173d180c8a7421 (diff)
parenta5b034d4a9c44f9bc1e83b01de82530f8fc63013 (diff)
Merge tag 'upstream/3.0.4'
Upstream version 3.0.4 # gpg: Signature made Sat 04 Apr 2015 02:41:09 PM EDT using RSA key ID EBE9BD91 # gpg: Good signature from "Unit 193 <unit193@gmail.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.org>" # gpg: aka "Unit 193 <unit193@ubuntu.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.com>"
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;
+}