From 5fc33702354740010c93331f62a748a78bce6536 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 8 Jul 2015 22:23:24 +0200 Subject: [PATCH] + fix possible inconsistency of arrow button in task header --- src/Gui/QSint/actionpanel/actiongroup.cpp | 2 ++ src/Gui/QSint/actionpanel/taskheader_p.cpp | 21 ++++++++++++++++++++- src/Gui/QSint/actionpanel/taskheader_p.h | 3 +++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/Gui/QSint/actionpanel/actiongroup.cpp b/src/Gui/QSint/actionpanel/actiongroup.cpp index 652501741..afcfeb61b 100644 --- a/src/Gui/QSint/actionpanel/actiongroup.cpp +++ b/src/Gui/QSint/actionpanel/actiongroup.cpp @@ -143,6 +143,7 @@ void ActionGroup::processHide() if (!--m_foldStep) { myDummy->setFixedHeight(0); myDummy->hide(); + myHeader->setFold(false); setFixedHeight(myHeader->height()); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); return; @@ -165,6 +166,7 @@ void ActionGroup::processShow() myDummy->hide(); m_foldPixmap = QPixmap(); myGroup->show(); + myHeader->setFold(true); setFixedHeight(m_fullHeight+myHeader->height()); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); setMaximumHeight(QWIDGETSIZE_MAX); diff --git a/src/Gui/QSint/actionpanel/taskheader_p.cpp b/src/Gui/QSint/actionpanel/taskheader_p.cpp index 3bb00232a..8ea426a25 100644 --- a/src/Gui/QSint/actionpanel/taskheader_p.cpp +++ b/src/Gui/QSint/actionpanel/taskheader_p.cpp @@ -196,7 +196,9 @@ void TaskHeader::fold() { if (myExpandable) { emit activated(); - + // Toggling the 'm_fold' member here may lead to inconsistencies with its ActionGroup. + // Thus, the method setFold() was added and called from ActionGroup when required. +#if 0 m_fold = !m_fold; changeIcons(); if (myButton) { @@ -207,6 +209,23 @@ void TaskHeader::fold() myButton->update(); } } +#endif + } +} + +void TaskHeader::setFold(bool on) +{ + if (myExpandable) { + m_fold = on; + changeIcons(); + if (myButton) { + myButton->setProperty("fold", m_fold); + if (myButton->style()) { + myButton->style()->unpolish(myButton); + myButton->style()->polish(myButton); + myButton->update(); + } + } } } diff --git a/src/Gui/QSint/actionpanel/taskheader_p.h b/src/Gui/QSint/actionpanel/taskheader_p.h index 60801a5a5..5cdef3b41 100644 --- a/src/Gui/QSint/actionpanel/taskheader_p.h +++ b/src/Gui/QSint/actionpanel/taskheader_p.h @@ -37,6 +37,9 @@ public: Q_SIGNALS: void activated(); +public: + void setFold(bool); + public Q_SLOTS: void fold();