From 5af9a5c5cd4d74b29ce5bf4882b5b8391f09b468 Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Mon, 23 Apr 2012 16:23:14 +0200 Subject: 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 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 #include @@ -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(); -- cgit v0.10.2-6-g49f6