diff options
-rw-r--r-- | include/vcl/builder.hxx | 3 | ||||
-rw-r--r-- | include/vcl/layout.hxx | 17 | ||||
-rw-r--r-- | svx/uiconfig/ui/findreplacedialog.ui | 1 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 22 | ||||
-rw-r--r-- | vcl/source/window/layout.cxx | 12 |
5 files changed, 54 insertions, 1 deletions
diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index d699d504278d..508377d46c98 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -31,6 +31,7 @@ class PopupMenu; class ScrollBar; class DateField; class TimeField; +class VclExpander; class VclMultiLineEdit; class VCL_DLLPUBLIC VclBuilder: private boost::noncopyable @@ -209,6 +210,8 @@ private: AtkMap m_aAtkInfo; std::vector<MnemonicWidgetMap> m_aMnemonicWidgetMaps; + + std::vector<VclExpander*> m_aExpanderWidgets; }; void loadTranslations(const com::sun::star::lang::Locale &rLocale, const OUString &rUri); diff --git a/include/vcl/layout.hxx b/include/vcl/layout.hxx index dd2c0bc8d834..978eaca05ce4 100644 --- a/include/vcl/layout.hxx +++ b/include/vcl/layout.hxx @@ -517,6 +517,23 @@ public: virtual Window *get_child(); virtual const Window *get_child() const; virtual bool set_property(const OString &rKey, const OString &rValue); + bool get_expanded() const + { + return m_aDisclosureButton.IsChecked(); + } + void set_expanded(bool bExpanded) + { + m_aDisclosureButton.Check(bExpanded); + } + void set_label(const OUString& rLabel) + { + m_aDisclosureButton.SetText(rLabel); + } + OUString get_label() const + { + return m_aDisclosureButton.GetText(); + } + virtual void StateChanged(StateChangedType nType); protected: virtual Size calculateRequisition() const; virtual void setAllocation(const Size &rAllocation); diff --git a/svx/uiconfig/ui/findreplacedialog.ui b/svx/uiconfig/ui/findreplacedialog.ui index 1fef7c62fcc6..aec160ed4abb 100644 --- a/svx/uiconfig/ui/findreplacedialog.ui +++ b/svx/uiconfig/ui/findreplacedialog.ui @@ -496,6 +496,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> + <property name="row_spacing">6</property> <child> <object class="GtkCheckButton" id="matchcase"> <property name="label" translatable="yes">Ma_tch case</property> 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(); |