summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/QtUI/QtChatWindow.cpp7
-rw-r--r--Swift/QtUI/QtChatWindow.h1
-rw-r--r--Swift/QtUI/QtTabbable.h3
-rw-r--r--Swift/QtUI/QtTextEdit.cpp23
-rw-r--r--Swift/QtUI/QtTextEdit.h3
-rw-r--r--Swift/QtUI/Trellis/QtDynamicGridLayout.cpp20
-rw-r--r--Swift/QtUI/Trellis/QtDynamicGridLayout.h1
7 files changed, 56 insertions, 2 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp
index a828210..0da4563 100644
--- a/Swift/QtUI/QtChatWindow.cpp
+++ b/Swift/QtUI/QtChatWindow.cpp
@@ -843,6 +843,13 @@ std::string QtChatWindow::getID() const {
return id_;
}
+void QtChatWindow::setEmphasiseFocus(bool emphasise) {
+ input_->setAttribute(Qt::WA_MacShowFocusRect, emphasise);
+#ifdef SWIFTEN_PLATFORM_WINDOWS
+ input_->setEmphasiseFocus(emphasise);
+#endif
+}
+
void QtChatWindow::showRoomConfigurationForm(Form::ref form) {
if (mucConfigurationWindow_) {
delete mucConfigurationWindow_.data();
diff --git a/Swift/QtUI/QtChatWindow.h b/Swift/QtUI/QtChatWindow.h
index 25a1948..08ad7ad 100644
--- a/Swift/QtUI/QtChatWindow.h
+++ b/Swift/QtUI/QtChatWindow.h
@@ -134,6 +134,7 @@ namespace Swift {
virtual void showBookmarkWindow(const MUCBookmark& bookmark);
virtual void setBookmarkState(RoomBookmarkState bookmarkState);
virtual std::string getID() const;
+ virtual void setEmphasiseFocus(bool emphasise);
public slots:
void handleChangeSplitterState(QByteArray state);
diff --git a/Swift/QtUI/QtTabbable.h b/Swift/QtUI/QtTabbable.h
index c2d0961..4073ab4 100644
--- a/Swift/QtUI/QtTabbable.h
+++ b/Swift/QtUI/QtTabbable.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014-2015 Isode Limited.
+ * Copyright (c) 2014-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
@@ -20,6 +20,7 @@ namespace Swift {
virtual AlertType getWidgetAlertState() {return NoActivity;}
virtual int getCount() {return 0;}
virtual std::string getID() const = 0;
+ virtual void setEmphasiseFocus(bool /*emphasise*/) {}
protected:
QtTabbable();
diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp
index 4ffd32a..60dac9b 100644
--- a/Swift/QtUI/QtTextEdit.cpp
+++ b/Swift/QtUI/QtTextEdit.cpp
@@ -17,7 +17,6 @@
#include <QTextDocument>
#include <Swiften/Base/Log.h>
-#include <Swiften/Base/foreach.h>
#include <Swift/Controllers/SettingConstants.h>
@@ -81,14 +80,36 @@ void QtTextEdit::keyPressEvent(QKeyEvent* event) {
}
}
+void QtTextEdit::setEmphasiseFocus(bool emphasise) {
+ emphasiseFocus_ = emphasise;
+ updateEmphasisedFocus();
+}
+
+void QtTextEdit::updateEmphasisedFocus() {
+ if (emphasiseFocus_) {
+ if (hasFocus()) {
+ setStyleSheet("border: 2px solid palette(highlight);");
+ }
+ else {
+ setStyleSheet("");
+ }
+ }
+ else {
+ setStyleSheet("");
+ }
+ handleTextChanged();
+}
+
void QtTextEdit::focusInEvent(QFocusEvent* event) {
receivedFocus();
QTextEdit::focusInEvent(event);
+ updateEmphasisedFocus();
}
void QtTextEdit::focusOutEvent(QFocusEvent* event) {
lostFocus();
QTextEdit::focusOutEvent(event);
+ updateEmphasisedFocus();
}
void QtTextEdit::handleTextChanged() {
diff --git a/Swift/QtUI/QtTextEdit.h b/Swift/QtUI/QtTextEdit.h
index 0c2b740..921c4b9 100644
--- a/Swift/QtUI/QtTextEdit.h
+++ b/Swift/QtUI/QtTextEdit.h
@@ -26,6 +26,7 @@ namespace Swift {
QtTextEdit(SettingsProvider* settings, QWidget* parent = nullptr);
virtual ~QtTextEdit();
virtual QSize sizeHint() const;
+ void setEmphasiseFocus(bool emphasise);
signals:
void wordCorrected(QString& word);
@@ -52,6 +53,7 @@ namespace Swift {
void setUpSpellChecker();
void spellCheckerSettingsWindow();
PositionPair getWordFromCursor(int cursorPosition);
+ void updateEmphasisedFocus();
private:
SpellChecker* checker_;
@@ -59,5 +61,6 @@ namespace Swift {
std::vector<QAction*> replaceWordActions_;
SettingsProvider* settings_;
QPointer<QtSpellCheckerWindow> spellCheckerWindow_;
+ bool emphasiseFocus_ = false;
};
}
diff --git a/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp b/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp
index 3d80d95..5600cc8 100644
--- a/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp
+++ b/Swift/QtUI/Trellis/QtDynamicGridLayout.cpp
@@ -48,6 +48,7 @@ int QtDynamicGridLayout::addTab(QtTabbable* tab, const QString& title) {
if (tabWidget) {
tabWidget->addTab(tab, title);
}
+ tab->setEmphasiseFocus(getDimension().width() > 1 || getDimension().height() > 1);
return tabWidget ? indexOf(tab) : -1;
}
@@ -318,6 +319,25 @@ void QtDynamicGridLayout::setDimensions(const QSize& dim) {
resizing_ = false;
setCurrentWidget(restoredWidget);
+
+ updateEmphasiseFocusOnTabs();
+}
+
+void QtDynamicGridLayout::updateEmphasiseFocusOnTabs() {
+ const auto currentDimensions = getDimension();
+
+ 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);
+ for (int index = 0; index < tabWidget->count(); index++) {
+ QtTabbable* tab = dynamic_cast<QtTabbable*>(tabWidget->widget(index));
+ assert(tab);
+ tab->setEmphasiseFocus(currentDimensions.height() > 1 || currentDimensions.width() > 1);
+ }
+ }
+ }
}
void QtDynamicGridLayout::moveCurrentTabRight() {
diff --git a/Swift/QtUI/Trellis/QtDynamicGridLayout.h b/Swift/QtUI/Trellis/QtDynamicGridLayout.h
index 4aed0df..682ae41 100644
--- a/Swift/QtUI/Trellis/QtDynamicGridLayout.h
+++ b/Swift/QtUI/Trellis/QtDynamicGridLayout.h
@@ -70,6 +70,7 @@ namespace Swift {
private:
void moveTab(QtTabWidget* tabWidget, int oldIndex, int newIndex);
QtTabWidget* createDNDTabWidget(QWidget* parent);
+ void updateEmphasiseFocusOnTabs();
private:
QGridLayout *gridLayout_;