From 6878f437f1a4d7a435c7ae22cc02c07ba8fd54bb Mon Sep 17 00:00:00 2001 From: Carlos Alves Date: Wed, 28 Oct 2020 20:43:34 -0300 Subject: [PATCH] Fix Maximize current Terminal (Keyboard vs Mouse) It checks if the toggle is minimized to let it rearrange. But Keyboard shortcut did not toggle the button. BUG: 418498 FIXED-IN: 20.08.3 --- src/terminalDisplay/TerminalDisplay.cpp | 5 +++++ src/terminalDisplay/TerminalDisplay.h | 3 +++ src/widgets/TerminalHeaderBar.cpp | 7 +++++++ src/widgets/TerminalHeaderBar.h | 1 + src/widgets/ViewSplitter.cpp | 1 + 5 files changed, 17 insertions(+) diff --git a/src/terminalDisplay/TerminalDisplay.cpp b/src/terminalDisplay/TerminalDisplay.cpp index a1c578e6..d4c7acab 100644 --- a/src/terminalDisplay/TerminalDisplay.cpp +++ b/src/terminalDisplay/TerminalDisplay.cpp @@ -1814,6 +1814,11 @@ void TerminalDisplay::getCharacterPosition(const QPoint& widgetPoint, int& line, line = qBound(0, (widgetPoint.y() - contentsRect().top() - _contentRect.top()) / _fontHeight, _usedLines - 1); } +void TerminalDisplay::setExpandedMode(bool expand) +{ + _headerBar->setExpandedMode(expand); +} + void TerminalDisplay::updateLineProperties() { if (_screenWindow.isNull()) { diff --git a/src/terminalDisplay/TerminalDisplay.h b/src/terminalDisplay/TerminalDisplay.h index f3ba9448..5a4ce9cc 100644 --- a/src/terminalDisplay/TerminalDisplay.h +++ b/src/terminalDisplay/TerminalDisplay.h @@ -376,6 +376,9 @@ public: // a character which left edge is closest to the point. void getCharacterPosition(const QPoint &widgetPoint, int &line, int &column, bool edge) const; + // toggle the header bar Minimize/Maximize button. + void setExpandedMode(bool expand); + friend class TerminalPainter; friend class TerminalScrollBar; diff --git a/src/widgets/TerminalHeaderBar.cpp b/src/widgets/TerminalHeaderBar.cpp index f3fa051f..14a0f923 100644 --- a/src/widgets/TerminalHeaderBar.cpp +++ b/src/widgets/TerminalHeaderBar.cpp @@ -185,6 +185,13 @@ void TerminalHeaderBar::updateSpecialState(ViewProperties *item) } } +void TerminalHeaderBar::setExpandedMode(bool expand) +{ + if (m_toggleExpandedMode->isChecked() != expand) { + m_toggleExpandedMode->setChecked(expand); + } +} + void TerminalHeaderBar::paintEvent(QPaintEvent *paintEvent) { /* Try to get the widget that's 10px above this one. diff --git a/src/widgets/TerminalHeaderBar.h b/src/widgets/TerminalHeaderBar.h index 6b546b61..3f228664 100644 --- a/src/widgets/TerminalHeaderBar.h +++ b/src/widgets/TerminalHeaderBar.h @@ -44,6 +44,7 @@ public: QSize minimumSizeHint() const override; void applyVisibilitySettings(); QSplitter *getTopLevelSplitter(); + void setExpandedMode(bool expand); public Q_SLOTS: void setFocusIndicatorState(bool focused); diff --git a/src/widgets/ViewSplitter.cpp b/src/widgets/ViewSplitter.cpp index 782a61f4..f1986ab0 100644 --- a/src/widgets/ViewSplitter.cpp +++ b/src/widgets/ViewSplitter.cpp @@ -270,6 +270,7 @@ void ViewSplitter::handleMinimizeMaximize(bool maximize) { auto topLevelSplitter = getToplevelSplitter(); auto currentTerminalDisplay = topLevelSplitter->activeTerminalDisplay(); + currentTerminalDisplay->setExpandedMode(maximize); if (maximize) { for (int i = 0, end = topLevelSplitter->count(); i < end; i++) { auto widgetAt = topLevelSplitter->widget(i);