diff options
| author | Tobias Markmann <tm@ayena.de> | 2012-04-23 14:23:14 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-04-23 16:37:33 (GMT) | 
| commit | 5af9a5c5cd4d74b29ce5bf4882b5b8391f09b468 (patch) | |
| tree | ccf3fc72e9dd2d65de6f1fe68027f5e5c13f3761 | |
| parent | d3ff5908eadb86e14d6eae9c4c9f0b4c959088e9 (diff) | |
| download | swift-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.cpp | 27 | ||||
| -rw-r--r-- | Swift/QtUI/QtTabbable.cpp | 32 | ||||
| -rw-r--r-- | Swift/QtUI/QtTabbable.h | 5 | 
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(); | 
 Swift
 Swift