summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/vcl/builder.hxx3
-rw-r--r--include/vcl/layout.hxx17
-rw-r--r--svx/uiconfig/ui/findreplacedialog.ui1
-rw-r--r--vcl/source/window/builder.cxx22
-rw-r--r--vcl/source/window/layout.cxx12
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();