diff options
Diffstat (limited to 'Swift/QtUI')
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 4 | ||||
-rw-r--r-- | Swift/QtUI/Trellis/QtDynamicGridLayout.cpp | 9 | ||||
-rw-r--r-- | Swift/QtUI/Trellis/QtDynamicGridLayout.h | 1 |
3 files changed, 12 insertions, 2 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index da1cf18..6324e9d 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -443,14 +443,14 @@ void QtChatWindow::convertToMUC(MUCType mucType) { treeWidget_->setMessageTarget(impromptu_ ? QtTreeWidget::MessageDisplayJID : QtTreeWidget::MessageDefaultJID); isMUC_ = true; treeWidget_->show(); subject_->setVisible(!impromptu_); } -void QtChatWindow::qAppFocusChanged(QWidget* /*old*/, QWidget* /*now*/) { - if (isWidgetSelected()) { +void QtChatWindow::qAppFocusChanged(QWidget* /*old*/, QWidget* now) { + if (now && isWidgetSelected()) { lastLineTracker_.setHasFocus(true); input_->setFocus(); onAllMessagesRead(); } else { lastLineTracker_.setHasFocus(false); diff --git a/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp b/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp index f9ce295..18abecd 100644 --- a/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp +++ b/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp @@ -376,12 +376,20 @@ void QtDynamicGridLayout::handleTabCloseRequested(int index) { index += tabWidget->count(); } } } } +void QtDynamicGridLayout::handleTabCurrentChanged(int index) { + if (index >= 0) { + QTabWidget *sendingTabWidget = dynamic_cast<QTabWidget*>(sender()); + assert(sendingTabWidget); + sendingTabWidget->widget(index)->setFocus(); + } +} + void QtDynamicGridLayout::updateTabPositions() { for (int y = 0; y < gridLayout_->rowCount(); y++) { for (int x = 0; x < gridLayout_->columnCount(); x++) { QLayoutItem* layoutItem = gridLayout_->itemAtPosition(y, x); QtTabWidget* tabWidget = dynamic_cast<QtTabWidget*>(layoutItem->widget()); assert(tabWidget); @@ -419,12 +427,13 @@ QtTabWidget* QtDynamicGridLayout::createDNDTabWidget(QWidget* parent) { /*For Macs, change the tab rendering.*/ tab->setDocumentMode(true); /*Closable tabs are only in Qt4.5 and later*/ tab->setTabsClosable(true); tab->setMovable(true); connect(tab, SIGNAL(tabCloseRequested(int)), this, SLOT(handleTabCloseRequested(int))); + connect(tab, SIGNAL(currentChanged(int)), this, SLOT(handleTabCurrentChanged(int))); #else #warning Qt 4.5 or later is needed. Trying anyway, some things will be disabled. #endif return tab; } diff --git a/Swift/QtUI/Trellis/QtDynamicGridLayout.h b/Swift/QtUI/Trellis/QtDynamicGridLayout.h index 0a8a0b6..3b798bd 100644 --- a/Swift/QtUI/Trellis/QtDynamicGridLayout.h +++ b/Swift/QtUI/Trellis/QtDynamicGridLayout.h @@ -58,12 +58,13 @@ namespace Swift { void moveCurrentTabToPreviousGroup(); void updateTabPositions(); private slots: void handleTabCloseRequested(int index); + void handleTabCurrentChanged(int index); private: void moveTab(QtTabWidget* tabWidget, int oldIndex, int newIndex); QtTabWidget* createDNDTabWidget(QWidget* parent); private: |