From a044e17fdc4b999e4a0faf68378b2b0cc5054b55 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Fri, 30 Nov 2018 22:40:07 +0100 Subject: [PATCH] ui: Reduced code view snippet style --- bin/app/data/color_schemes/bad_rainbow.xml | 9 +- bin/app/data/color_schemes/bright.xml | 1 + bin/app/data/color_schemes/dark.xml | 3 +- bin/app/data/gui/code_view/code_view.css | 29 +++-- .../gui/code_view/images/minimize_active.png | Bin 536 -> 0 bytes .../code_view/images/minimize_inactive.png | Bin 604 -> 0 bytes .../code_view/images/snippet_arrow_down.png | Bin 0 -> 554 bytes .../code_view/images/snippet_arrow_right.png | Bin 0 -> 491 bytes src/lib_gui/qt/element/QtCodeArea.cpp | 7 +- src/lib_gui/qt/element/QtCodeFile.cpp | 8 +- src/lib_gui/qt/element/QtCodeFile.h | 2 +- src/lib_gui/qt/element/QtCodeFileList.cpp | 22 +++- src/lib_gui/qt/element/QtCodeFileTitleBar.cpp | 109 +++++++----------- src/lib_gui/qt/element/QtCodeFileTitleBar.h | 11 +- 14 files changed, 95 insertions(+), 106 deletions(-) delete mode 100644 bin/app/data/gui/code_view/images/minimize_active.png delete mode 100644 bin/app/data/gui/code_view/images/minimize_inactive.png create mode 100644 bin/app/data/gui/code_view/images/snippet_arrow_down.png create mode 100644 bin/app/data/gui/code_view/images/snippet_arrow_right.png diff --git a/bin/app/data/color_schemes/bad_rainbow.xml b/bin/app/data/color_schemes/bad_rainbow.xml index 1375f3d3..9ae6aa10 100644 --- a/bin/app/data/color_schemes/bad_rainbow.xml +++ b/bin/app/data/color_schemes/bad_rainbow.xml @@ -100,17 +100,18 @@ #494949 #CCCCCC - #CCCCCC + #FFF - #CCCCCC + #AAAAAA + #999999 <text>black</text> <normal>#CCCCCC</normal> - <hover>#BBBBBB</hover> - <press>#AAAAAA</press> + <hover>#CCCCCC</hover> + <press>#CCCCCC</press> <icon>black</icon> <border>#B1B1B1</border> <hatching>grey</hatching> diff --git a/bin/app/data/color_schemes/bright.xml b/bin/app/data/color_schemes/bright.xml index 23afac14..c73d4ca1 100644 --- a/bin/app/data/color_schemes/bright.xml +++ b/bin/app/data/color_schemes/bright.xml @@ -105,6 +105,7 @@ <file> <background>#D0D0D0</background> + <hover>#D9D9D9</hover> <title> <text>black</text> diff --git a/bin/app/data/color_schemes/dark.xml b/bin/app/data/color_schemes/dark.xml index 08ba3907..984180c8 100644 --- a/bin/app/data/color_schemes/dark.xml +++ b/bin/app/data/color_schemes/dark.xml @@ -100,11 +100,12 @@ <navigation> <background>#272728</background> <text>#C5C5C5</text> - <line>#CCC</line> + <line>#999</line> </navigation> <file> <background>#5C5C5C</background> + <hover>#6C6C6C</hover> <title> <text>#F7F7F7</text> diff --git a/bin/app/data/gui/code_view/code_view.css b/bin/app/data/gui/code_view/code_view.css index 9400e2a2..ea577524 100644 --- a/bin/app/data/gui/code_view/code_view.css +++ b/bin/app/data/gui/code_view/code_view.css @@ -116,10 +116,9 @@ #code_file { background-color: <color:code/snippet/background>; - border: 2px solid <color:code/file/background>; - border-radius: 12px; + margin-bottom: 0px; + border-bottom: 1px solid <color:code/file/background>; /* last file only */ font-size: <setting:font_size>px; - padding-bottom: 7px; } #title_bar, #title_bar_single { @@ -128,9 +127,12 @@ border: none; } +#title_bar:hover { + background-color: <color:code/file/hover>; +} + #title_bar[hovering=false] { - border-top-left-radius: 7px; - border-top-right-radius: 7px; + border-top: 1px solid <color:code/navigation/line>; } #title_bar_single { @@ -143,13 +145,13 @@ } #title_button { - background-color: <color:code/file/title/normal>; + background-color: transparent; border: none; border-radius: 3px; color: <color:code/file/title/text>; font-size: <setting:font_size>px; padding: 2px 4px; - margin: 1px 8px; + margin: 1px 8px 1px 2px; } #title_bar_single #title_button { @@ -180,7 +182,7 @@ #code_file #code_snippet { background-color: <color:code/snippet/background>; - border-top: 2px solid <color:code/file/background>; + border-top: 1px solid <color:code/file/background>; font-size: <setting:font_size>px; } @@ -190,6 +192,7 @@ color: <color:code/snippet/title/text>; font-family: "<setting:font_name>"; font-size: <setting:font_size>px; + padding-bottom: 2px; } #code_file #code_snippet #scope_name:hover { @@ -222,6 +225,16 @@ selection-background-color: <color:code/snippet/selection/background>; } +#title_bar #expand_button, #title_bar_single #expand_button { + background: transparent; + border: none; + margin: 3px; + max-height: 16px; + max-width: 16px; + margin-left: 8px; + margin-right: 0px; +} + #title_bar #file_button, #title_bar_single #file_button { background: transparent; border: none; diff --git a/bin/app/data/gui/code_view/images/minimize_active.png b/bin/app/data/gui/code_view/images/minimize_active.png deleted file mode 100644 index f423fc42279efa73a67fad776d42ed918c41895f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NV3?%C=ER6$FEa{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRI3}{6XFV_{}TZk8ydpH z!tP56oC0d#DGBlmW>83&f8JsJet~|2_obo-K;n!^-tI1p|Cw~}0Xdun9+AZi40_5S z%viD1z6>bHUgGKN%Km_rNs!sdE#3AmP-wTOi(`n!`Q!u!X1CP&#_4?$oCXSv*X9@} z6zDK`u6f2IBGcYobjFgIT|Kc$H+@0_yGu_t|E32oSrZPvGuB98zu_Vua!^^p@tko+ z0#kqiTkHpofDJ&>;=;pp0|y3X>17E_%{<E<II_w59CYR}o6*!RS!2N3Z_u!EcLBpQ zCzksM8Naez)IIb{Wli7lSH5c)n@nG9U^BY*;(%OX#A1oNKivz|q~CDzWCx`r%xD&{ z?liAVKF{$Yl8vG2HluX%!^rnQZ>W~IMwFx^mZVxG7o`Fz1|tJQGhG8yT?3;KLvt$w sV=GewZ381K1A_<#^AHpbx%nxXX_dG&XvX%x0BT_HboFyt=akR{00aKK5&!@I diff --git a/bin/app/data/gui/code_view/images/minimize_inactive.png b/bin/app/data/gui/code_view/images/minimize_inactive.png deleted file mode 100644 index 113d8aa5fd3bac17c0190c84b3e4f11acdd22344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NV3?%C=ER6$FEa{HEjtmSN`?>!lvI6-E$sR$z z3=CDO3=9p;3=BX21L>Cx45bDP46hOx7_4S6Fo@?*ia+WGRBI666XFV_H*eZRB>MmV z|DH+q+kkrbN`m}?859!cpLbZlU!ebfgTecgXZpSaWf+sZ-Cg)4b}`%paySb-B8wRq z^pruEv0|xx8BmbD#M9T6{Q)bJAhVHMy6s({&@WFH#}JM4ODFH<I%FWy*6-2n#6JJP z(byxQC*Fj_#2i&GDAksY;kIk+fAC1JmS=g>vU^&8=N~l5z1*Gtxn1S$^xG#-$}6os zcY^iN%Z98?W*4e-vd%a!T)uEG^Mo_gPG1(Rm|nns!r*rSi^2Js!j8X=)-kPow~S$B z<jJmri`u)MPN`XGk^QUVFV`x?>Z@x$aV}-L6Z$qWuw86kr0Pn=g={w~OdkqlhpPGB zI6Czh$LtFSdtID#WmR`>;&t`;v7#({N!>XGS?!)Lng81ExaD}{e0XDcv*pIBKTG<2 zjjCn;9Nif1Ge<Jwc1AOAQJ7@URwcposB8EBIA_?;)VGv*Eb~gCksTNcswJ)wB`Jv| zsaDBFsX&Us$iUD{*T7WQz$nDf+{(b%%G5yHz{twLAcDa>1Vuw`eoAIqC2kFxvHdTA P8W=oX{an^LB{Ts5p<U}x diff --git a/bin/app/data/gui/code_view/images/snippet_arrow_down.png b/bin/app/data/gui/code_view/images/snippet_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5c56c8398d2ce85eabd977bc529bbcdd962afd GIT binary patch literal 554 zcmV+_0@eMAP)<h;3K|Lk000e1NJLTq002+`002-31^@s6juG;$00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;Q<~F6eAiv;I;q&0k=s+ zK~#9!?V3St#4r>@N83|xg<uE^!4L`|5CS1Zuv!FG5d?xE1cJ*T%V2w1sjAdQE8B7Y z_n#+)z+{s6jRFut2qA<JLaH(Xxbwmtz?2i<8-SJJVSQxrC#Q`7ZvZ~{AmaMSBAaBm zeW}JB7z_tE)T;5q_Lboc2Iy<QOrxRj;vQe4Guu~AFc99n=b6YE2+-|)u)K5}UTASL z?^W?Ol`Ti*wiNG5Wh-xCvfe%_-p@52Rr?-Vn2vmJymK(Ht$2%sub1Yb!9xfdTNoh- zjf!`cb`aGxGz195DN;NKp-c+GyGZs)=|e+xWjj?4Q2Nl&bTH^m@eUabdKwxAC__>U z6BOdvzCIK$LNO9r=%Jjz_URoO96I5M76x?05sK%~87+r~2_4d^g{qWIqT)^HoIMpU z_1wM|EgWEk2o46~6wkvLHCq^AkTcsSL-A%9rpD0VV4M=g3n1Bwx3Ya@Eu0wJ?-nL- zFleTDBjd^+8WLmrpJ#qr9~e`<;w_A)Y-sR|=Q(B$2K5z>?JF1>sBD=nT%`{NFM<QS s0eA)Q1>lo?%2zxp8zF=cLI@GZH{Ot^1^P6rMF0Q*07*qoM6N<$g73T9)Bpeg literal 0 HcmV?d00001 diff --git a/bin/app/data/gui/code_view/images/snippet_arrow_right.png b/bin/app/data/gui/code_view/images/snippet_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..f12ba7dfbbd1ffd3343e37328a009d19829fa1d4 GIT binary patch literal 491 zcmV<H0Tlj;P)<h;3K|Lk000e1NJLTq002+`002-31^@s6juG;$0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzjY&j7RCwC#oLx-=K^R3hC_n-dkbndv zAfXcKpb{zp36+3^1_i~z?T|3ZKJ<ai?9O~Y=O)L%3FO}H?9Q?fLI@$mc8-N-G_*&B z+n-3%D6n!Ze4wOV;9BGxYT5->E{N<CSotixpsHP9<xFGu30yZeA{zy+MIO-CE|BT7 zk-*AV*2dPx{7#=&1om^zGJUi&r|6BX0fe4D8pthTV`~DTrjI5P;$ejhaPi#OGK9<N zBZIhVY#GJP^pSDQH@2K$_MAq}FgJbV6f@^Ea?bSWqX0~8Yz1P<IgJ7`bowYTL(XZG zfL*7L60u8TD<S`SMdfKBkMdLa<}Z+c;W$70XkP?A9MbO$X(ta~d6<w~;Pi77CP~6a z`ljALWRh^Ki9pw{!ZAq#33T}-6qCfUKwhxyXjb>)W(W-VS=h*C4H+hhQGtBw)zPde z#BD7w?FALC&L1KP<dU97fm}M#A@GE_Hi2m-$<_kX-G8u^z_d4T^a`X|8wGL;QAZ9m hD<OmsLTu$OzyN;<{gIdA(MJFP002ovPDHLkV1n{d)o1_! literal 0 HcmV?d00001 diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index a07bcea7..99d7bd04 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -131,13 +131,12 @@ QSize QtCodeArea::sizeHint() const width = std::max(rect.width(), width); } - int scrollHeight = 0; - if (horizontalScrollBar()->minimum() != horizontalScrollBar()->maximum()) + if (horizontalScrollBar()->minimum() != horizontalScrollBar()->maximum() && utility::getOsType() != OS_MAC) { - scrollHeight = horizontalScrollBar()->height(); + height += horizontalScrollBar()->height(); } - return QSize(width + lineNumberAreaWidth() + 1, height + scrollHeight + 5); + return QSize(width + lineNumberAreaWidth() + 1, height + 5); } void QtCodeArea::lineNumberAreaPaintEvent(QPaintEvent *event) diff --git a/src/lib_gui/qt/element/QtCodeFile.cpp b/src/lib_gui/qt/element/QtCodeFile.cpp index 318232fd..e8390d9c 100644 --- a/src/lib_gui/qt/element/QtCodeFile.cpp +++ b/src/lib_gui/qt/element/QtCodeFile.cpp @@ -9,7 +9,7 @@ #include "QtCodeNavigator.h" #include "QtCodeSnippet.h" -QtCodeFile::QtCodeFile(const FilePath& filePath, QtCodeNavigator* navigator) +QtCodeFile::QtCodeFile(const FilePath& filePath, QtCodeNavigator* navigator, bool isFirst) : QFrame() , m_navigator(navigator) , m_filePath(filePath) @@ -25,7 +25,7 @@ QtCodeFile::QtCodeFile(const FilePath& filePath, QtCodeNavigator* navigator) layout->setAlignment(Qt::AlignTop); setLayout(layout); - m_titleBar = new QtCodeFileTitleBar(); + m_titleBar = new QtCodeFileTitleBar(this, isFirst); layout->addWidget(m_titleBar); if (!m_filePath.empty()) @@ -331,8 +331,6 @@ void QtCodeFile::setMinimized() } m_titleBar->setMinimized(); - - setStyleSheet("#code_file { padding-bottom: 0; } #code_file #title_bar { border-radius: 7px; }"); } void QtCodeFile::setSnippets() @@ -343,8 +341,6 @@ void QtCodeFile::setSnippets() } m_titleBar->setSnippets(); - - setStyleSheet(""); } void QtCodeFile::setMaximized() diff --git a/src/lib_gui/qt/element/QtCodeFile.h b/src/lib_gui/qt/element/QtCodeFile.h index 8211d4d3..4d75fe47 100644 --- a/src/lib_gui/qt/element/QtCodeFile.h +++ b/src/lib_gui/qt/element/QtCodeFile.h @@ -25,7 +25,7 @@ class QtCodeFile Q_OBJECT public: - QtCodeFile(const FilePath& filePath, QtCodeNavigator* navigator); + QtCodeFile(const FilePath& filePath, QtCodeNavigator* navigator, bool isFirst); virtual ~QtCodeFile(); void setModificationTime(const TimeStamp modificationTime); diff --git a/src/lib_gui/qt/element/QtCodeFileList.cpp b/src/lib_gui/qt/element/QtCodeFileList.cpp index 83c7967e..80d7a5d3 100644 --- a/src/lib_gui/qt/element/QtCodeFileList.cpp +++ b/src/lib_gui/qt/element/QtCodeFileList.cpp @@ -32,8 +32,8 @@ QtCodeFileList::QtCodeFileList(QtCodeNavigator* navigator) m_filesArea->setObjectName("code_file_list"); QVBoxLayout* innerLayout = new QVBoxLayout(); - innerLayout->setSpacing(8); - innerLayout->setContentsMargins(8, 8, 8, 8); + innerLayout->setSpacing(0); + innerLayout->setContentsMargins(0, 0, 0, 0); innerLayout->setAlignment(Qt::AlignTop); m_filesArea->setLayout(innerLayout); @@ -105,7 +105,7 @@ QtCodeFile* QtCodeFileList::getFile(const FilePath filePath) if (!file) { - file = new QtCodeFile(filePath, m_navigator); + file = new QtCodeFile(filePath, m_navigator, !m_files.size()); m_files.push_back(file); m_filesArea->layout()->addWidget(file); @@ -236,9 +236,19 @@ void QtCodeFileList::updateFiles() { for (QtCodeFile* file : m_files) { + if (file != m_files.back()) + { + file->setStyleSheet("#code_file { border: none; }"); + } + file->updateContent(); } + if (m_files.size()) + { + m_files.back()->setStyleSheet(""); + } + // Perform delayed so all widgets are already visible QTimer::singleShot(100, this, &QtCodeFileList::updateSnippetTitleAndScrollBarSlot); } @@ -399,12 +409,12 @@ void QtCodeFileList::updateSnippetTitleAndScrollBar(int value) { QRect fileRect = getFocusRectForWidget(file, m_filesArea); - if (!firstFile && visibleRect.top() > fileRect.top() + 2 && - visibleRect.top() < fileRect.bottom() - 10 && + if (!firstFile && visibleRect.top() > fileRect.top() && + visibleRect.top() < fileRect.bottom() + 1 && file->getVisibleSnippets().size()) { firstFile = file; - fileTitleBarOffset = std::min(0, fileRect.bottom() - 10 - (visibleRect.top() + m_firstSnippetTitleBar->height())); + fileTitleBarOffset = std::min(0, fileRect.bottom() + 1 - (visibleRect.top() + m_firstSnippetTitleBar->height())); } if (visibleRect.bottom() > fileRect.top() && fileRect.bottom() > visibleRect.bottom()) diff --git a/src/lib_gui/qt/element/QtCodeFileTitleBar.cpp b/src/lib_gui/qt/element/QtCodeFileTitleBar.cpp index 5a95e01e..2b6f9004 100644 --- a/src/lib_gui/qt/element/QtCodeFileTitleBar.cpp +++ b/src/lib_gui/qt/element/QtCodeFileTitleBar.cpp @@ -17,8 +17,6 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is if (!isSingle) { connect(this, &QPushButton::clicked, this, &QtCodeFileTitleBar::clickedTitleBar); - connect(this, &QtHoverButton::hoveredIn, this, &QtCodeFileTitleBar::enteredTitleBar); - connect(this, &QtHoverButton::hoveredOut, this, &QtCodeFileTitleBar::leftTitleBar); } QHBoxLayout* titleLayout = new QHBoxLayout(); @@ -27,6 +25,24 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is titleLayout->setAlignment(Qt::AlignLeft); setLayout(titleLayout); + FilePath imageDir = ResourcePaths::getGuiPath().concatenate(L"code_view/images/"); + + m_expandButton = new QtSelfRefreshIconButton("", imageDir.getConcatenated(L"snippet_arrow_right.png"), "code/file/title", this); + m_collapseButton = new QtSelfRefreshIconButton("", imageDir.getConcatenated(L"snippet_arrow_down.png"), "code/file/title", this); + + m_expandButton->setToolTip("expand"); + m_collapseButton->setToolTip("collapse"); + + for (QtSelfRefreshIconButton* button : { m_expandButton, m_collapseButton }) + { + button->setIconSize(QSize(9, 9)); + button->setObjectName("expand_button"); + titleLayout->addWidget(button); + } + + connect(m_expandButton, &QtSelfRefreshIconButton::clicked, this, &QtCodeFileTitleBar::clickedExpandButton); + connect(m_collapseButton, &QtSelfRefreshIconButton::clicked, this, &QtCodeFileTitleBar::clickedCollapseButton); + m_titleButton = new QtCodeFileTitleButton(this); QSizePolicy policy = m_titleButton->sizePolicy(); policy.setRetainSizeWhenHidden(true); @@ -56,15 +72,8 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is } ); - FilePath imageDir = ResourcePaths::getGuiPath().concatenate(L"code_view/images/"); QColor inactiveColor(0x5E, 0x5D, 0x5D); - m_minimizeButton = new QtIconStateButton(this); - m_minimizeButton->addState(QtIconStateButton::STATE_DEFAULT, imageDir.getConcatenated(L"minimize_active.png")); - m_minimizeButton->addState(QtIconStateButton::STATE_HOVERED, imageDir.getConcatenated(L"minimize_inactive.png"), inactiveColor); - m_minimizeButton->addState(QtIconStateButton::STATE_DISABLED, imageDir.getConcatenated(L"minimize_inactive.png")); - m_minimizeButton->setToolTip("minimize"); - m_snippetButton = new QtIconStateButton(this); m_snippetButton->addState(QtIconStateButton::STATE_DEFAULT, imageDir.getConcatenated(L"snippet_active.png")); m_snippetButton->addState(QtIconStateButton::STATE_HOVERED, imageDir.getConcatenated(L"snippet_inactive.png"), inactiveColor); @@ -77,31 +86,29 @@ QtCodeFileTitleBar::QtCodeFileTitleBar(QWidget* parent, bool isHovering, bool is m_maximizeButton->addState(QtIconStateButton::STATE_DISABLED, imageDir.getConcatenated(L"maximize_inactive.png")); m_maximizeButton->setToolTip("maximize"); - for (QtIconStateButton* button : { m_minimizeButton, m_snippetButton, m_maximizeButton }) + for (QtIconStateButton* button : { m_snippetButton, m_maximizeButton }) { button->setIconSize(QSize(16, 16)); button->setObjectName("file_button"); button->setEnabled(false); titleLayout->addWidget(button); - - if (!isSingle) - { - connect(button, &QtIconStateButton::hoveredIn, this, &QtCodeFileTitleBar::leftTitleBar); - connect(button, &QtIconStateButton::hoveredOut, this, &QtCodeFileTitleBar::enteredTitleBar); - } } - connect(m_minimizeButton, &QtIconStateButton::clicked, this, &QtCodeFileTitleBar::clickedMinimizeButton); connect(m_snippetButton, &QtIconStateButton::clicked, this, &QtCodeFileTitleBar::clickedSnippetButton); connect(m_maximizeButton, &QtIconStateButton::clicked, this, &QtCodeFileTitleBar::clickedMaximizeButton); if (isSingle) { - m_minimizeButton->hide(); + m_expandButton->hide(); + m_collapseButton->hide(); m_maximizeButton->hide(); } + else + { + m_snippetButton->hide(); + } - titleLayout->addSpacing(3); + titleLayout->addSpacing(5); } QtCodeFileTitleButton* QtCodeFileTitleBar::getTitleButton() const @@ -150,33 +157,33 @@ void QtCodeFileTitleBar::updateRefCount(int refCount, bool hasErrors, size_t fat void QtCodeFileTitleBar::setMinimized() { - m_minimizeButton->setEnabled(false); + m_expandButton->setVisible(true); + m_collapseButton->setVisible(false); m_snippetButton->setEnabled(true); m_maximizeButton->setEnabled(true); - m_minimizeButton->hoverOut(); m_snippetButton->hoverOut(); m_maximizeButton->hoverOut(); } void QtCodeFileTitleBar::setSnippets() { - m_minimizeButton->setEnabled(true); + m_expandButton->setVisible(false); + m_collapseButton->setVisible(true); m_snippetButton->setEnabled(false); m_maximizeButton->setEnabled(true); - m_minimizeButton->hoverOut(); m_snippetButton->hoverOut(); m_maximizeButton->hoverOut(); } void QtCodeFileTitleBar::setMaximized() { - m_minimizeButton->setEnabled(false); + m_expandButton->setVisible(false); + m_collapseButton->setVisible(false); m_snippetButton->setEnabled(true); m_maximizeButton->setEnabled(false); - m_minimizeButton->hoverOut(); m_snippetButton->hoverOut(); m_maximizeButton->hoverOut(); } @@ -197,28 +204,26 @@ void QtCodeFileTitleBar::updateFromOther(const QtCodeFileTitleBar* other) m_referenceCount->hide(); } - m_minimizeButton->setEnabled(other->m_minimizeButton->isEnabled()); + m_expandButton->setVisible(other->m_expandButton->isVisible()); + m_collapseButton->setVisible(other->m_collapseButton->isVisible()); m_snippetButton->setEnabled(other->m_snippetButton->isEnabled()); m_maximizeButton->setEnabled(other->m_maximizeButton->isEnabled()); - m_minimizeButton->hoverOut(); m_snippetButton->hoverOut(); m_maximizeButton->hoverOut(); disconnect(); connect(this, &QPushButton::clicked, this, &QtCodeFileTitleBar::clickedTitleBar); - connect(this, &QtHoverButton::hoveredIn, this, &QtCodeFileTitleBar::enteredTitleBar); - connect(this, &QtHoverButton::hoveredOut, this, &QtCodeFileTitleBar::leftTitleBar); } void QtCodeFileTitleBar::clickedTitleBar() { - if (m_minimizeButton->isEnabled()) + if (m_collapseButton->isVisible()) { emit minimize(); } - else if (m_snippetButton->isEnabled()) + else if (m_expandButton->isVisible()) { emit snippet(); } @@ -228,48 +233,12 @@ void QtCodeFileTitleBar::clickedTitleBar() } } -void QtCodeFileTitleBar::enteredTitleBar(QPushButton* button) +void QtCodeFileTitleBar::clickedExpandButton() { - if (m_minimizeButton->isEnabled()) - { - m_minimizeButton->hoverIn(); - } - else if (m_snippetButton->isEnabled()) - { - m_snippetButton->hoverIn(); - } - else if (m_maximizeButton->isEnabled()) - { - m_maximizeButton->hoverIn(); - } + emit snippet(); } -void QtCodeFileTitleBar::leftTitleBar(QPushButton* button) -{ - if (m_minimizeButton->isEnabled()) - { - if (m_minimizeButton != button) - { - m_minimizeButton->hoverOut(); - } - } - else if (m_snippetButton->isEnabled()) - { - if (m_snippetButton != button) - { - m_snippetButton->hoverOut(); - } - } - else if (m_maximizeButton->isEnabled()) - { - if (m_maximizeButton != button) - { - m_maximizeButton->hoverOut(); - } - } -} - -void QtCodeFileTitleBar::clickedMinimizeButton() +void QtCodeFileTitleBar::clickedCollapseButton() { emit minimize(); } diff --git a/src/lib_gui/qt/element/QtCodeFileTitleBar.h b/src/lib_gui/qt/element/QtCodeFileTitleBar.h index b1a7d31a..e75436e1 100644 --- a/src/lib_gui/qt/element/QtCodeFileTitleBar.h +++ b/src/lib_gui/qt/element/QtCodeFileTitleBar.h @@ -35,11 +35,8 @@ public: private slots: void clickedTitleBar(); - - void enteredTitleBar(QPushButton* button); - void leftTitleBar(QPushButton* button); - - void clickedMinimizeButton(); + void clickedExpandButton(); + void clickedCollapseButton(); void clickedSnippetButton(); void clickedMaximizeButton(); @@ -48,7 +45,9 @@ private: QPushButton* m_showErrorsButton; QLabel* m_referenceCount; - QtIconStateButton* m_minimizeButton; + QtSelfRefreshIconButton* m_expandButton; + QtSelfRefreshIconButton* m_collapseButton; + QtIconStateButton* m_snippetButton; QtIconStateButton* m_maximizeButton; };