summaryrefslogtreecommitdiff
path: root/vcl/source/window
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-07-12 11:40:27 +0100
committerFridrich Strba <fridrich@documentfoundation.org>2013-07-31 15:40:29 +0000
commitb3abb55edd5f6c3168882239df2b4b28dc96cfab (patch)
treea09e9378f1d95bb893561e6954760c3bcb1522fc /vcl/source/window
parentff8a6b661dc304cb3a858facbd0dbda66ff01641 (diff)
Resolves: fdo#67378 merge the label into the disclosure button
(cherry picked from commit 479bba2cdcda8dbd86861ea62c8c25bfef633148) (cherry picked from commit 06ac689a8d3887519d98a616f9a1727fcc7d0bf6) (cherry picked from commit 5718ffbf0e3e68e43f87541ce0368a15de8ec90e) Change-Id: I11c9a35e3d50a827127e4542a40f6f29580d4e8b 8b65b4986bf316e352131e737ebf736d91173d16 43df94c16a178c90da9c006565390a81c2fda29b Related: fdo#67378 rows missing HIG 6pixel spacing Change-Id: I6d4767c3159c1e9ebef19978a94ad994aab6ff4b (cherry picked from commit c2ce9bf0c2bfd2b38262de8571257c8f02b076b4) Reviewed-on: https://gerrit.libreoffice.org/5202 Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org> Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'vcl/source/window')
-rw-r--r--vcl/source/window/builder.cxx22
-rw-r--r--vcl/source/window/layout.cxx12
2 files changed, 33 insertions, 1 deletions
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 9793b8653c78..7e5282c316de 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -401,6 +401,22 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri
delete_by_window(aI->first);
}
+ //fdo#67378 merge the label into the disclosure button
+ for (std::vector<VclExpander*>::iterator aI = m_pParserState->m_aExpanderWidgets.begin(),
+ aEnd = m_pParserState->m_aExpanderWidgets.end(); aI != aEnd; ++aI)
+ {
+ VclExpander *pOne = *aI;
+
+ Window *pChild = pOne->get_child();
+ Window* pLabel = pOne->GetWindow(WINDOW_LASTCHILD);
+ if (pLabel && pLabel != pChild && pLabel->GetType() == WINDOW_FIXEDTEXT)
+ {
+ FixedText *pLabelWidget = static_cast<FixedText*>(pLabel);
+ pOne->set_label(pLabelWidget->GetText());
+ delete_by_window(pLabel);
+ }
+ }
+
//drop maps, etc. that we don't need again
delete m_pParserState;
@@ -1003,7 +1019,11 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri
else if (name == "GtkFrame")
pWindow = new VclFrame(pParent);
else if (name == "GtkExpander")
- pWindow = new VclExpander(pParent);
+ {
+ VclExpander *pExpander = new VclExpander(pParent);
+ m_pParserState->m_aExpanderWidgets.push_back(pExpander);
+ pWindow = pExpander;
+ }
else if (name == "GtkAlignment")
pWindow = new VclAlignment(pParent);
else if (name == "GtkButton")
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx
index ae79e8fdabb9..a83a72222816 100644
--- a/vcl/source/window/layout.cxx
+++ b/vcl/source/window/layout.cxx
@@ -1498,6 +1498,18 @@ bool VclExpander::set_property(const OString &rKey, const OString &rValue)
return true;
}
+void VclExpander::StateChanged(StateChangedType nType)
+{
+ VclBin::StateChanged( nType );
+
+ if (nType == STATE_CHANGE_INITSHOW)
+ {
+ Window *pChild = get_child();
+ if (pChild)
+ pChild->Show(m_aDisclosureButton.IsChecked());
+ }
+}
+
IMPL_LINK( VclExpander, ClickHdl, DisclosureButton*, pBtn )
{
Window *pChild = get_child();