diff options
author | Tobias Markmann <tm@ayena.de> | 2016-09-12 11:05:38 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2016-10-20 09:54:07 (GMT) |
commit | 7f6e2a0fa9338da89339111aad93d205b5e15ec6 (patch) | |
tree | 61d95807afe1880d6a16e01488b60185610bf618 | |
parent | a0199d151c8c0286caa5185988b5604d7e1e2d52 (diff) | |
download | swift-7f6e2a0fa9338da89339111aad93d205b5e15ec6.zip swift-7f6e2a0fa9338da89339111aad93d205b5e15ec6.tar.bz2 |
Fix focus rect vanishing in trellis mode after sending a message
QtChatWindow was setting and resetting the Qt stylesheet for
the chat input for message correction UI. This conflicted
with the focus rectangle styling.
Moved correction styling inside QtTextEdit which can handle
focus rectangle and correction background styling together
without overriding each other.
On OS X, the native focus rectangle drawing, i.e. setting
the Qt::WA_MacShowFocusRect widget attribute on the input,
can not be used anymore, as it conflicts with setting the
stylesheet for the correction background color.
Test-Information:
Tested message correction, trellis and security label UI on
OS X 10.11.6 and Windows 8 with Qt 5.5.1.
Change-Id: I0b771a2d47d5437512e870a9887b0b6e7262b359
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 7 | ||||
-rw-r--r-- | Swift/QtUI/QtTextEdit.cpp | 29 | ||||
-rw-r--r-- | Swift/QtUI/QtTextEdit.h | 6 |
3 files changed, 24 insertions, 18 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 0da4563..bda6b3e 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -311,7 +311,7 @@ void QtChatWindow::beginCorrection() { cursor.endEditBlock(); isCorrection_ = true; correctingLabel_->show(); - input_->setStyleSheet(alertStyleSheet_); + input_->setCorrectionHighlight(true); labelsWidget_->setEnabled(false); } @@ -325,7 +325,7 @@ void QtChatWindow::cancelCorrection() { cursor.removeSelectedText(); isCorrection_ = false; correctingLabel_->hide(); - input_->setStyleSheet(qApp->styleSheet()); + input_->setCorrectionHighlight(false); labelsWidget_->setEnabled(true); } @@ -844,10 +844,7 @@ std::string QtChatWindow::getID() const { } 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) { diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp index 60dac9b..d9ee2f4 100644 --- a/Swift/QtUI/QtTextEdit.cpp +++ b/Swift/QtUI/QtTextEdit.cpp @@ -82,34 +82,41 @@ void QtTextEdit::keyPressEvent(QKeyEvent* event) { void QtTextEdit::setEmphasiseFocus(bool emphasise) { emphasiseFocus_ = emphasise; - updateEmphasisedFocus(); + updateStyleSheet(); } -void QtTextEdit::updateEmphasisedFocus() { +void QtTextEdit::setCorrectionHighlight(bool correctionHighlight) { + correctionHighlight_ = correctionHighlight; + updateStyleSheet(); +} + +void QtTextEdit::updateStyleSheet() { + QString newStyleSheet; + + if (correctionHighlight_) { + newStyleSheet += "background: rgb(255, 255, 153); color: black;"; + } + if (emphasiseFocus_) { if (hasFocus()) { - setStyleSheet("border: 2px solid palette(highlight);"); - } - else { - setStyleSheet(""); + newStyleSheet += "border: 2px solid palette(highlight);"; } } - else { - setStyleSheet(""); - } + + setStyleSheet(newStyleSheet); handleTextChanged(); } void QtTextEdit::focusInEvent(QFocusEvent* event) { receivedFocus(); QTextEdit::focusInEvent(event); - updateEmphasisedFocus(); + updateStyleSheet(); } void QtTextEdit::focusOutEvent(QFocusEvent* event) { lostFocus(); QTextEdit::focusOutEvent(event); - updateEmphasisedFocus(); + updateStyleSheet(); } void QtTextEdit::handleTextChanged() { diff --git a/Swift/QtUI/QtTextEdit.h b/Swift/QtUI/QtTextEdit.h index 921c4b9..228aa9e 100644 --- a/Swift/QtUI/QtTextEdit.h +++ b/Swift/QtUI/QtTextEdit.h @@ -9,7 +9,6 @@ #include <QPointer> #include <QTextEdit> -#include <Swift/Controllers/SettingConstants.h> #include <Swift/Controllers/Settings/SettingsProvider.h> #include <SwifTools/SpellParser.h> @@ -26,7 +25,9 @@ namespace Swift { QtTextEdit(SettingsProvider* settings, QWidget* parent = nullptr); virtual ~QtTextEdit(); virtual QSize sizeHint() const; + void setEmphasiseFocus(bool emphasise); + void setCorrectionHighlight(bool coorectionHighlight); signals: void wordCorrected(QString& word); @@ -53,7 +54,7 @@ namespace Swift { void setUpSpellChecker(); void spellCheckerSettingsWindow(); PositionPair getWordFromCursor(int cursorPosition); - void updateEmphasisedFocus(); + void updateStyleSheet(); private: SpellChecker* checker_; @@ -62,5 +63,6 @@ namespace Swift { SettingsProvider* settings_; QPointer<QtSpellCheckerWindow> spellCheckerWindow_; bool emphasiseFocus_ = false; + bool correctionHighlight_ = false; }; } |