summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2012-04-23 14:23:14 (GMT)
committerKevin Smith <git@kismith.co.uk>2012-04-23 16:37:33 (GMT)
commit5af9a5c5cd4d74b29ce5bf4882b5b8391f09b468 (patch)
treeccf3fc72e9dd2d65de6f1fe68027f5e5c13f3761
parentd3ff5908eadb86e14d6eae9c4c9f0b4c959088e9 (diff)
downloadswift-5af9a5c5cd4d74b29ce5bf4882b5b8391f09b468.zip
swift-5af9a5c5cd4d74b29ce5bf4882b5b8391f09b468.tar.bz2
Move accelerator handling for active-,next-,previous- and close-tab into QtTabbable.
Resolves: #1091 License: This patch is BSD-licensed, see http://www.opensource.org/licenses/bsd-license.php
-rw-r--r--Swift/QtUI/QtChatWindow.cpp27
-rw-r--r--Swift/QtUI/QtTabbable.cpp32
-rw-r--r--Swift/QtUI/QtTabbable.h5
3 files changed, 45 insertions, 19 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp
index e4cb004..0d94ecd 100644
--- a/Swift/QtUI/QtChatWindow.cpp
+++ b/Swift/QtUI/QtChatWindow.cpp
@@ -216,26 +216,15 @@ void QtChatWindow::setTabComplete(TabComplete* completer) {
}
void QtChatWindow::handleKeyPressEvent(QKeyEvent* event) {
+ event->ignore();
+ QtTabbable::handleKeyPressEvent(event);
+ if (event->isAccepted()) {
+ return;
+ }
+ event->accept();
+
int key = event->key();
- Qt::KeyboardModifiers modifiers = event->modifiers();
- if (key == Qt::Key_W && modifiers == Qt::ControlModifier) {
- close();
- } else if (
- (key == Qt::Key_PageUp && modifiers == Qt::ControlModifier)
-// || (key == Qt::Key_Left && modifiers == (Qt::ControlModifier & Qt::ShiftModifier))
- ) {
- emit requestPreviousTab();
- } else if (
- (key == Qt::Key_PageDown && modifiers == Qt::ControlModifier)
-// || (key == Qt::Key_Right && modifiers == (Qt::ControlModifier & Qt::ShiftModifier)
- || (key == Qt::Key_Tab && modifiers == Qt::ControlModifier)
- ) {
- emit requestNextTab();
- } else if (
- (key == Qt::Key_A && modifiers == Qt::AltModifier)
- ) {
- emit requestActiveTab();
- } else if (key == Qt::Key_Tab) {
+ if (key == Qt::Key_Tab) {
tabComplete();
} else if ((key == Qt::Key_Up) && input_->toPlainText().isEmpty() && !(lastSentMessage_.isEmpty())) {
beginCorrection();
diff --git a/Swift/QtUI/QtTabbable.cpp b/Swift/QtUI/QtTabbable.cpp
index 07a17c1..84a5100 100644
--- a/Swift/QtUI/QtTabbable.cpp
+++ b/Swift/QtUI/QtTabbable.cpp
@@ -25,4 +25,36 @@ bool QtTabbable::isWidgetSelected() {
return parent ? parent->getCurrentTab() == this : isAncestorOf(QApplication::focusWidget());
}
+void QtTabbable::keyPressEvent(QKeyEvent *event) {
+ handleKeyPressEvent(event);
+}
+
+void QtTabbable::handleKeyPressEvent(QKeyEvent *event) {
+ event->ignore();
+ int key = event->key();
+ Qt::KeyboardModifiers modifiers = event->modifiers();
+ if (key == Qt::Key_W && modifiers == Qt::ControlModifier) {
+ close();
+ event->accept();
+ } else if (
+ (key == Qt::Key_PageUp && modifiers == Qt::ControlModifier)
+// || (key == Qt::Key_Left && modifiers == (Qt::ControlModifier & Qt::ShiftModifier))
+ ) {
+ emit requestPreviousTab();
+ event->accept();
+ } else if (
+ (key == Qt::Key_PageDown && modifiers == Qt::ControlModifier)
+// || (key == Qt::Key_Right && modifiers == (Qt::ControlModifier & Qt::ShiftModifier)
+ || (key == Qt::Key_Tab && modifiers == Qt::ControlModifier)
+ ) {
+ emit requestNextTab();
+ event->accept();
+ } else if (
+ (key == Qt::Key_A && modifiers == Qt::AltModifier)
+ ) {
+ emit requestActiveTab();
+ event->accept();
+ }
+}
+
}
diff --git a/Swift/QtUI/QtTabbable.h b/Swift/QtUI/QtTabbable.h
index e236a0b..baab15c 100644
--- a/Swift/QtUI/QtTabbable.h
+++ b/Swift/QtUI/QtTabbable.h
@@ -6,6 +6,7 @@
#pragma once
+#include <QKeyEvent>
#include <QWidget>
@@ -20,6 +21,10 @@ namespace Swift {
virtual int getCount() {return 0;}
protected:
QtTabbable() : QWidget() {};
+ void keyPressEvent(QKeyEvent* event);
+
+ protected slots:
+ void handleKeyPressEvent(QKeyEvent* event);
signals:
void titleUpdated();