[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - 7 commits - vcl/inc vcl/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Thu May 14 12:38:54 UTC 2020
vcl/inc/salvtables.hxx | 947 +++++++++++
vcl/source/app/salvtables.cxx | 3379 ++++++++++++++++++------------------------
2 files changed, 2472 insertions(+), 1854 deletions(-)
New commits:
commit 93998a0e0a70d24e732690e8bb5a062f516eebeb
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 18 11:07:02 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceCheckButton to header file
Change-Id: Id6597cd259abefe69a61f0ab414c6bd2114c9749
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93977
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index d126db67a116..4a8d70bcf16a 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -924,4 +924,24 @@ public:
virtual Container* weld_message_area() override;
};
+class SalInstanceCheckButton : public SalInstanceButton, public virtual weld::CheckButton
+{
+private:
+ VclPtr<CheckBox> m_xCheckButton;
+
+ DECL_LINK(ToggleHdl, CheckBox&, void);
+public:
+ SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_active(bool active) override;
+
+ virtual bool get_active() const override;
+
+ virtual void set_inconsistent(bool inconsistent) override;
+
+ virtual bool get_inconsistent() const override;
+
+ virtual ~SalInstanceCheckButton() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 058d7a39bf72..2711b40f1a67 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2777,51 +2777,43 @@ IMPL_LINK(SalInstanceToggleButton, ToggleListener, VclWindowEvent&, rEvent, void
signal_toggled();
}
-class SalInstanceCheckButton : public SalInstanceButton, public virtual weld::CheckButton
+SalInstanceCheckButton::SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
+ , m_xCheckButton(pButton)
{
-private:
- VclPtr<CheckBox> m_xCheckButton;
-
- DECL_LINK(ToggleHdl, CheckBox&, void);
-public:
- SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceButton(pButton, pBuilder, bTakeOwnership)
- , m_xCheckButton(pButton)
- {
- m_xCheckButton->SetToggleHdl(LINK(this, SalInstanceCheckButton, ToggleHdl));
- }
+ m_xCheckButton->SetToggleHdl(LINK(this, SalInstanceCheckButton, ToggleHdl));
+}
- virtual void set_active(bool active) override
- {
- disable_notify_events();
- m_xCheckButton->EnableTriState(false);
- m_xCheckButton->Check(active);
- enable_notify_events();
- }
+void SalInstanceCheckButton::set_active(bool active)
+{
+ disable_notify_events();
+ m_xCheckButton->EnableTriState(false);
+ m_xCheckButton->Check(active);
+ enable_notify_events();
+}
- virtual bool get_active() const override
- {
- return m_xCheckButton->IsChecked();
- }
+bool SalInstanceCheckButton::get_active() const
+{
+ return m_xCheckButton->IsChecked();
+}
- virtual void set_inconsistent(bool inconsistent) override
- {
- disable_notify_events();
- m_xCheckButton->EnableTriState(true);
- m_xCheckButton->SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
- enable_notify_events();
- }
+void SalInstanceCheckButton::set_inconsistent(bool inconsistent)
+{
+ disable_notify_events();
+ m_xCheckButton->EnableTriState(true);
+ m_xCheckButton->SetState(inconsistent ? TRISTATE_INDET : TRISTATE_FALSE);
+ enable_notify_events();
+}
- virtual bool get_inconsistent() const override
- {
- return m_xCheckButton->GetState() == TRISTATE_INDET;
- }
+bool SalInstanceCheckButton::get_inconsistent() const
+{
+ return m_xCheckButton->GetState() == TRISTATE_INDET;
+}
- virtual ~SalInstanceCheckButton() override
- {
- m_xCheckButton->SetToggleHdl(Link<CheckBox&, void>());
- }
-};
+SalInstanceCheckButton::~SalInstanceCheckButton()
+{
+ m_xCheckButton->SetToggleHdl(Link<CheckBox&, void>());
+}
IMPL_LINK_NOARG(SalInstanceCheckButton, ToggleHdl, CheckBox&, void)
{
commit ddbab2afdb7043e109073c6b647c35d40d54b8a2
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Mar 17 14:25:01 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceMessageDialog to header file
Change-Id: Ie982bae356f3e13ec40012e5dd9bac45887d2925
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93976
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index a786788065ae..d126db67a116 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -13,6 +13,7 @@
#include <vcl/lstbox.hxx>
#include <vcl/tabctrl.hxx>
#include <vcl/layout.hxx>
+#include <messagedialog.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -903,4 +904,24 @@ public:
virtual ~SalInstanceNotebook() override;
};
+class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
+{
+private:
+ VclPtr<::MessageDialog> m_xMessageDialog;
+
+public:
+ SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+
+ virtual void set_primary_text(const OUString& rText) override;
+
+ virtual OUString get_primary_text() const override;
+
+ virtual void set_secondary_text(const OUString& rText) override;
+
+ virtual OUString get_secondary_text() const override;
+
+ virtual Container* weld_message_area() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 4ae946df7ba5..058d7a39bf72 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1593,42 +1593,36 @@ IMPL_LINK(SalInstanceDialog, PopupScreenShotMenuHdl, const CommandEvent&, rCEvt,
return false;
}
-class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog
+SalInstanceMessageDialog::SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
+ , m_xMessageDialog(pDialog)
{
-private:
- VclPtr<::MessageDialog> m_xMessageDialog;
-public:
- SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceDialog(pDialog, pBuilder, bTakeOwnership)
- , m_xMessageDialog(pDialog)
- {
- }
+}
- virtual void set_primary_text(const OUString& rText) override
- {
- m_xMessageDialog->set_primary_text(rText);
- }
+void SalInstanceMessageDialog::set_primary_text(const OUString& rText)
+{
+ m_xMessageDialog->set_primary_text(rText);
+}
- virtual OUString get_primary_text() const override
- {
- return m_xMessageDialog->get_primary_text();
- }
+OUString SalInstanceMessageDialog::get_primary_text() const
+{
+ return m_xMessageDialog->get_primary_text();
+}
- virtual void set_secondary_text(const OUString& rText) override
- {
- m_xMessageDialog->set_secondary_text(rText);
- }
+void SalInstanceMessageDialog::set_secondary_text(const OUString& rText)
+{
+ m_xMessageDialog->set_secondary_text(rText);
+}
- virtual OUString get_secondary_text() const override
- {
- return m_xMessageDialog->get_secondary_text();
- }
+OUString SalInstanceMessageDialog::get_secondary_text() const
+{
+ return m_xMessageDialog->get_secondary_text();
+}
- virtual Container* weld_message_area() override
- {
- return new SalInstanceContainer(m_xMessageDialog->get_message_area(), m_pBuilder, false);
- }
-};
+weld::Container* SalInstanceMessageDialog::weld_message_area()
+{
+ return new SalInstanceContainer(m_xMessageDialog->get_message_area(), m_pBuilder, false);
+}
class SalInstanceAboutDialog : public SalInstanceDialog, public virtual weld::AboutDialog
{
commit 91074fce875e68978f34c1103982d2d5887a0894
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Mar 4 16:03:01 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceNotebook to header file
Change-Id: Id14b6fca6f12f49691a621f636300f9da320834c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93975
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 4117330701ef..a786788065ae 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -11,6 +11,8 @@
#include <vcl/spinfld.hxx>
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/layout.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -862,4 +864,43 @@ public:
virtual ~SalInstanceButton() override;
};
+class SalInstanceNotebook : public SalInstanceContainer, public virtual weld::Notebook
+{
+private:
+ VclPtr<TabControl> m_xNotebook;
+ mutable std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
+ std::vector<VclPtr<TabPage>> m_aAddedPages;
+ std::vector<VclPtr<VclGrid>> m_aAddedGrids;
+
+ DECL_LINK(DeactivatePageHdl, TabControl*, bool);
+ DECL_LINK(ActivatePageHdl, TabControl*, void);
+
+public:
+ SalInstanceNotebook(TabControl* pNotebook, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual int get_current_page() const override;
+
+ virtual OString get_page_ident(int nPage) const override;
+
+ virtual OString get_current_page_ident() const override;
+
+ virtual weld::Container* get_page(const OString& rIdent) const override;
+
+ virtual void set_current_page(int nPage) override;
+
+ virtual void set_current_page(const OString& rIdent) override;
+
+ virtual void remove_page(const OString& rIdent) override;
+
+ virtual void append_page(const OString& rIdent, const OUString& rLabel) override;
+
+ virtual int get_n_pages() const override;
+
+ virtual OUString get_tab_label_text(const OString& rIdent) const override;
+
+ virtual void set_tab_label_text(const OString& rIdent, const OUString& rText) override;
+
+ virtual ~SalInstanceNotebook() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index c6a2ea519714..4ae946df7ba5 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2164,114 +2164,101 @@ IMPL_LINK_NOARG(SalInstanceScrolledWindow, HscrollHdl, ScrollBar*, void)
m_aOrigHScrollHdl.Call(&m_xScrolledWindow->getHorzScrollBar());
}
-class SalInstanceNotebook : public SalInstanceContainer, public virtual weld::Notebook
+SalInstanceNotebook::SalInstanceNotebook(TabControl* pNotebook, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceContainer(pNotebook, pBuilder, bTakeOwnership)
+ , m_xNotebook(pNotebook)
{
-private:
- VclPtr<TabControl> m_xNotebook;
- mutable std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages;
- std::vector<VclPtr<TabPage>> m_aAddedPages;
- std::vector<VclPtr<VclGrid>> m_aAddedGrids;
-
- DECL_LINK(DeactivatePageHdl, TabControl*, bool);
- DECL_LINK(ActivatePageHdl, TabControl*, void);
-
-public:
- SalInstanceNotebook(TabControl* pNotebook, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceContainer(pNotebook, pBuilder, bTakeOwnership)
- , m_xNotebook(pNotebook)
- {
- m_xNotebook->SetActivatePageHdl(LINK(this, SalInstanceNotebook, ActivatePageHdl));
- m_xNotebook->SetDeactivatePageHdl(LINK(this, SalInstanceNotebook, DeactivatePageHdl));
- }
+ m_xNotebook->SetActivatePageHdl(LINK(this, SalInstanceNotebook, ActivatePageHdl));
+ m_xNotebook->SetDeactivatePageHdl(LINK(this, SalInstanceNotebook, DeactivatePageHdl));
+}
- virtual int get_current_page() const override
- {
- return m_xNotebook->GetPagePos(m_xNotebook->GetCurPageId());
- }
+int SalInstanceNotebook::get_current_page() const
+{
+ return m_xNotebook->GetPagePos(m_xNotebook->GetCurPageId());
+}
- virtual OString get_page_ident(int nPage) const override
- {
- return m_xNotebook->GetPageName(m_xNotebook->GetPageId(nPage));
- }
+OString SalInstanceNotebook::get_page_ident(int nPage) const
+{
+ return m_xNotebook->GetPageName(m_xNotebook->GetPageId(nPage));
+}
- virtual OString get_current_page_ident() const override
- {
- return m_xNotebook->GetPageName(m_xNotebook->GetCurPageId());
- }
+OString SalInstanceNotebook::get_current_page_ident() const
+{
+ return m_xNotebook->GetPageName(m_xNotebook->GetCurPageId());
+}
- virtual weld::Container* get_page(const OString& rIdent) const override
- {
- sal_uInt16 nPageId = m_xNotebook->GetPageId(rIdent);
- sal_uInt16 nPageIndex = m_xNotebook->GetPagePos(nPageId);
- if (nPageIndex == TAB_PAGE_NOTFOUND)
- return nullptr;
- TabPage* pPage = m_xNotebook->GetTabPage(nPageId);
- vcl::Window* pChild = pPage->GetChild(0);
- if (m_aPages.size() < nPageIndex + 1U)
- m_aPages.resize(nPageIndex + 1U);
- if (!m_aPages[nPageIndex])
- m_aPages[nPageIndex].reset(new SalInstanceContainer(pChild, m_pBuilder, false));
- return m_aPages[nPageIndex].get();
- }
+weld::Container* SalInstanceNotebook::get_page(const OString& rIdent) const
+{
+ sal_uInt16 nPageId = m_xNotebook->GetPageId(rIdent);
+ sal_uInt16 nPageIndex = m_xNotebook->GetPagePos(nPageId);
+ if (nPageIndex == TAB_PAGE_NOTFOUND)
+ return nullptr;
+ TabPage* pPage = m_xNotebook->GetTabPage(nPageId);
+ vcl::Window* pChild = pPage->GetChild(0);
+ if (m_aPages.size() < nPageIndex + 1U)
+ m_aPages.resize(nPageIndex + 1U);
+ if (!m_aPages[nPageIndex])
+ m_aPages[nPageIndex].reset(new SalInstanceContainer(pChild, m_pBuilder, false));
+ return m_aPages[nPageIndex].get();
+}
- virtual void set_current_page(int nPage) override
- {
- m_xNotebook->SetCurPageId(m_xNotebook->GetPageId(nPage));
- }
+void SalInstanceNotebook::set_current_page(int nPage)
+{
+ m_xNotebook->SetCurPageId(m_xNotebook->GetPageId(nPage));
+}
- virtual void set_current_page(const OString& rIdent) override
- {
- m_xNotebook->SetCurPageId(m_xNotebook->GetPageId(rIdent));
- }
+void SalInstanceNotebook::set_current_page(const OString& rIdent)
+{
+ m_xNotebook->SetCurPageId(m_xNotebook->GetPageId(rIdent));
+}
- virtual void remove_page(const OString& rIdent) override
- {
- m_xNotebook->RemovePage(m_xNotebook->GetPageId(rIdent));
- }
+void SalInstanceNotebook::remove_page(const OString& rIdent)
+{
+ m_xNotebook->RemovePage(m_xNotebook->GetPageId(rIdent));
+}
- virtual void append_page(const OString& rIdent, const OUString& rLabel) override
- {
- sal_uInt16 nPageCount = m_xNotebook->GetPageCount();
- sal_uInt16 nLastPageId = nPageCount ? m_xNotebook->GetPageId(nPageCount - 1) : 0;
- sal_uInt16 nNewPageId = nLastPageId + 1;
- m_xNotebook->InsertPage(nNewPageId, rLabel);
- VclPtrInstance<TabPage> xPage(m_xNotebook);
- VclPtrInstance<VclGrid> xGrid(xPage);
- xPage->Show();
- xGrid->set_hexpand(true);
- xGrid->set_vexpand(true);
- xGrid->Show();
- m_xNotebook->SetTabPage(nNewPageId, xPage);
- m_xNotebook->SetPageName(nNewPageId, rIdent);
- m_aAddedPages.push_back(xPage);
- m_aAddedGrids.push_back(xGrid);
- }
+void SalInstanceNotebook::append_page(const OString& rIdent, const OUString& rLabel)
+{
+ sal_uInt16 nPageCount = m_xNotebook->GetPageCount();
+ sal_uInt16 nLastPageId = nPageCount ? m_xNotebook->GetPageId(nPageCount - 1) : 0;
+ sal_uInt16 nNewPageId = nLastPageId + 1;
+ m_xNotebook->InsertPage(nNewPageId, rLabel);
+ VclPtrInstance<TabPage> xPage(m_xNotebook);
+ VclPtrInstance<VclGrid> xGrid(xPage);
+ xPage->Show();
+ xGrid->set_hexpand(true);
+ xGrid->set_vexpand(true);
+ xGrid->Show();
+ m_xNotebook->SetTabPage(nNewPageId, xPage);
+ m_xNotebook->SetPageName(nNewPageId, rIdent);
+ m_aAddedPages.push_back(xPage);
+ m_aAddedGrids.push_back(xGrid);
+}
- virtual int get_n_pages() const override
- {
- return m_xNotebook->GetPageCount();
- }
+int SalInstanceNotebook::get_n_pages() const
+{
+ return m_xNotebook->GetPageCount();
+}
- virtual OUString get_tab_label_text(const OString& rIdent) const override
- {
- return m_xNotebook->GetPageText(m_xNotebook->GetPageId(rIdent));
- }
+OUString SalInstanceNotebook::get_tab_label_text(const OString& rIdent) const
+{
+ return m_xNotebook->GetPageText(m_xNotebook->GetPageId(rIdent));
+}
- virtual void set_tab_label_text(const OString& rIdent, const OUString& rText) override
- {
- return m_xNotebook->SetPageText(m_xNotebook->GetPageId(rIdent), rText);
- }
+void SalInstanceNotebook::set_tab_label_text(const OString& rIdent, const OUString& rText)
+{
+ return m_xNotebook->SetPageText(m_xNotebook->GetPageId(rIdent), rText);
+}
- virtual ~SalInstanceNotebook() override
- {
- for (auto &rGrid : m_aAddedGrids)
- rGrid.disposeAndClear();
- for (auto &rPage : m_aAddedPages)
- rPage.disposeAndClear();
- m_xNotebook->SetActivatePageHdl(Link<TabControl*,void>());
- m_xNotebook->SetDeactivatePageHdl(Link<TabControl*,bool>());
- }
-};
+SalInstanceNotebook::~SalInstanceNotebook()
+{
+ for (auto &rGrid : m_aAddedGrids)
+ rGrid.disposeAndClear();
+ for (auto &rPage : m_aAddedPages)
+ rPage.disposeAndClear();
+ m_xNotebook->SetActivatePageHdl(Link<TabControl*,void>());
+ m_xNotebook->SetDeactivatePageHdl(Link<TabControl*,bool>());
+}
IMPL_LINK_NOARG(SalInstanceNotebook, DeactivatePageHdl, TabControl*, bool)
{
commit ec838f4b57044549058ed204f226198576d53564
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Feb 28 14:40:03 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceButton to header file
Change-Id: I3f6aa1975ae5859e0c340c82627d95e49313a668
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93483
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 88a827fb1f45..4117330701ef 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -836,4 +836,30 @@ public:
virtual ~SalInstanceComboBoxWithEdit() override;
};
+class SalInstanceButton : public SalInstanceContainer, public virtual weld::Button
+{
+private:
+ VclPtr<::Button> m_xButton;
+ Link<::Button*, void> const m_aOldClickHdl;
+
+ DECL_LINK(ClickHdl, ::Button*, void);
+
+public:
+ SalInstanceButton(::Button* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_label(const OUString& rText) override;
+
+ virtual void set_image(VirtualDevice* pDevice) override;
+
+ virtual void set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage) override;
+
+ virtual void set_from_icon_name(const OUString& rIconName) override;
+
+ virtual void set_label_line_wrap(bool wrap) override;
+
+ virtual OUString get_label() const override;
+
+ virtual ~SalInstanceButton() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 8ff2268c17b7..c6a2ea519714 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2384,67 +2384,58 @@ IMPL_LINK_NOARG(SalInstanceVerticalNotebook, ActivatePageHdl, VerticalTabControl
m_aEnterPageHdl.Call(get_current_page_ident());
}
-class SalInstanceButton : public SalInstanceContainer, public virtual weld::Button
+SalInstanceButton::SalInstanceButton(::Button* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceContainer(pButton, pBuilder, bTakeOwnership)
+ , m_xButton(pButton)
+ , m_aOldClickHdl(pButton->GetClickHdl())
{
-private:
- VclPtr<::Button> m_xButton;
- Link<::Button*,void> const m_aOldClickHdl;
-
- DECL_LINK(ClickHdl, ::Button*, void);
-public:
- SalInstanceButton(::Button* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceContainer(pButton, pBuilder, bTakeOwnership)
- , m_xButton(pButton)
- , m_aOldClickHdl(pButton->GetClickHdl())
- {
- m_xButton->SetClickHdl(LINK(this, SalInstanceButton, ClickHdl));
- }
+ m_xButton->SetClickHdl(LINK(this, SalInstanceButton, ClickHdl));
+}
- virtual void set_label(const OUString& rText) override
- {
- m_xButton->SetText(rText);
- }
+void SalInstanceButton::set_label(const OUString& rText)
+{
+ m_xButton->SetText(rText);
+}
- virtual void set_image(VirtualDevice* pDevice) override
- {
- m_xButton->SetImageAlign(ImageAlign::Left);
- if (pDevice)
- m_xButton->SetModeImage(createImage(*pDevice));
- else
- m_xButton->SetModeImage(Image());
- }
+void SalInstanceButton::set_image(VirtualDevice* pDevice)
+{
+ m_xButton->SetImageAlign(ImageAlign::Left);
+ if (pDevice)
+ m_xButton->SetModeImage(createImage(*pDevice));
+ else
+ m_xButton->SetModeImage(Image());
+}
- virtual void set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage) override
- {
- m_xButton->SetImageAlign(ImageAlign::Left);
- m_xButton->SetModeImage(Image(rImage));
- }
+void SalInstanceButton::set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage)
+{
+ m_xButton->SetImageAlign(ImageAlign::Left);
+ m_xButton->SetModeImage(Image(rImage));
+}
- virtual void set_from_icon_name(const OUString& rIconName) override
- {
- m_xButton->SetModeImage(Image(StockImage::Yes, rIconName));
- }
+void SalInstanceButton::set_from_icon_name(const OUString& rIconName)
+{
+ m_xButton->SetModeImage(Image(StockImage::Yes, rIconName));
+}
- virtual void set_label_line_wrap(bool wrap) override
- {
- WinBits nBits = m_xButton->GetStyle();
- nBits &= ~WB_WORDBREAK;
- if (wrap)
- nBits |= WB_WORDBREAK;
- m_xButton->SetStyle(nBits);
- m_xButton->queue_resize();
- }
+void SalInstanceButton::set_label_line_wrap(bool wrap)
+{
+ WinBits nBits = m_xButton->GetStyle();
+ nBits &= ~WB_WORDBREAK;
+ if (wrap)
+ nBits |= WB_WORDBREAK;
+ m_xButton->SetStyle(nBits);
+ m_xButton->queue_resize();
+}
- virtual OUString get_label() const override
- {
- return m_xButton->GetText();
- }
+OUString SalInstanceButton::get_label() const
+{
+ return m_xButton->GetText();
+}
- virtual ~SalInstanceButton() override
- {
- m_xButton->SetClickHdl(Link<::Button*,void>());
- }
-};
+SalInstanceButton::~SalInstanceButton()
+{
+ m_xButton->SetClickHdl(Link<::Button*,void>());
+}
IMPL_LINK(SalInstanceButton, ClickHdl, ::Button*, pButton, void)
{
commit 74d307351ec2af5758c7f416623af072c8fba527
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Feb 25 12:36:29 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceComboBox to header file
Change-Id: Iafa449cc1ebba93cc69da194857ea33b8f8510b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93482
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 418a4d0eddae..88a827fb1f45 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -9,6 +9,8 @@
#include <vcl/ctrl.hxx>
#include <vcl/edit.hxx>
#include <vcl/spinfld.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/lstbox.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -605,4 +607,233 @@ public:
virtual ~SalInstanceSpinButton() override;
};
+//ComboBox and ListBox have similar apis, ComboBoxes in LibreOffice have an edit box and ListBoxes
+//don't. This distinction isn't there in Gtk. Use a template to sort this problem out.
+template <class vcl_type>
+class SalInstanceComboBox : public SalInstanceContainer, public virtual weld::ComboBox
+{
+protected:
+ // owner for ListBox/ComboBox UserData
+ std::vector<std::unique_ptr<OUString>> m_aUserData;
+ VclPtr<vcl_type> m_xComboBox;
+
+public:
+ SalInstanceComboBox(vcl_type* pComboBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceContainer(pComboBox, pBuilder, bTakeOwnership)
+ , m_xComboBox(pComboBox)
+ {
+ }
+
+ virtual int get_active() const override
+ {
+ const sal_Int32 nRet = m_xComboBox->GetSelectedEntryPos();
+ if (nRet == LISTBOX_ENTRY_NOTFOUND)
+ return -1;
+ return nRet;
+ }
+
+ const OUString* getEntryData(int index) const
+ {
+ return static_cast<const OUString*>(m_xComboBox->GetEntryData(index));
+ }
+
+ // ComboBoxes are comprised of multiple subwidgets, consider the lot as
+ // one thing for focus
+ virtual bool has_focus() const override { return m_xWidget->HasChildPathFocus(); }
+
+ virtual OUString get_active_id() const override
+ {
+ sal_Int32 nPos = m_xComboBox->GetSelectedEntryPos();
+ const OUString* pRet;
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ pRet = getEntryData(m_xComboBox->GetSelectedEntryPos());
+ else
+ pRet = nullptr;
+ if (!pRet)
+ return OUString();
+ return *pRet;
+ }
+
+ virtual void set_active_id(const OUString& rStr) override
+ {
+ for (int i = 0; i < get_count(); ++i)
+ {
+ const OUString* pId = getEntryData(i);
+ if (!pId)
+ continue;
+ if (*pId == rStr)
+ m_xComboBox->SelectEntryPos(i);
+ }
+ }
+
+ virtual void set_active(int pos) override
+ {
+ if (pos == -1)
+ {
+ m_xComboBox->SetNoSelection();
+ return;
+ }
+ m_xComboBox->SelectEntryPos(pos);
+ }
+
+ virtual OUString get_text(int pos) const override { return m_xComboBox->GetEntry(pos); }
+
+ virtual OUString get_id(int pos) const override
+ {
+ const OUString* pRet = getEntryData(pos);
+ if (!pRet)
+ return OUString();
+ return *pRet;
+ }
+
+ virtual void set_id(int row, const OUString& rId) override
+ {
+ m_aUserData.emplace_back(std::make_unique<OUString>(rId));
+ m_xComboBox->SetEntryData(row, m_aUserData.back().get());
+ }
+
+ virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems,
+ bool bKeepExisting) override
+ {
+ freeze();
+ if (!bKeepExisting)
+ clear();
+ for (const auto& rItem : rItems)
+ {
+ insert(-1, rItem.sString, rItem.sId.isEmpty() ? nullptr : &rItem.sId,
+ rItem.sImage.isEmpty() ? nullptr : &rItem.sImage, nullptr);
+ }
+ thaw();
+ }
+
+ virtual int get_count() const override { return m_xComboBox->GetEntryCount(); }
+
+ virtual int find_text(const OUString& rStr) const override
+ {
+ const sal_Int32 nRet = m_xComboBox->GetEntryPos(rStr);
+ if (nRet == LISTBOX_ENTRY_NOTFOUND)
+ return -1;
+ return nRet;
+ }
+
+ virtual int find_id(const OUString& rStr) const override
+ {
+ for (int i = 0; i < get_count(); ++i)
+ {
+ const OUString* pId = getEntryData(i);
+ if (!pId)
+ continue;
+ if (*pId == rStr)
+ return i;
+ }
+ return -1;
+ }
+
+ virtual void clear() override
+ {
+ m_xComboBox->Clear();
+ m_aUserData.clear();
+ }
+
+ virtual void make_sorted() override
+ {
+ m_xComboBox->SetStyle(m_xComboBox->GetStyle() | WB_SORT);
+ }
+
+ virtual bool get_popup_shown() const override { return m_xComboBox->IsInDropDown(); }
+
+ virtual void connect_popup_toggled(const Link<ComboBox&, void>& rLink) override
+ {
+ weld::ComboBox::connect_popup_toggled(rLink);
+ ensure_event_listener();
+ }
+
+ virtual void HandleEventListener(VclWindowEvent& rEvent) override
+ {
+ if (rEvent.GetId() == VclEventId::DropdownPreOpen
+ || rEvent.GetId() == VclEventId::DropdownClose)
+ {
+ signal_popup_toggled();
+ return;
+ }
+ SalInstanceContainer::HandleEventListener(rEvent);
+ }
+};
+
+class SalInstanceComboBoxWithoutEdit : public SalInstanceComboBox<ListBox>
+{
+private:
+ DECL_LINK(SelectHdl, ListBox&, void);
+
+public:
+ SalInstanceComboBoxWithoutEdit(ListBox* pListBox, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+
+ virtual OUString get_active_text() const override;
+
+ virtual void remove(int pos) override;
+
+ virtual void insert(int pos, const OUString& rStr, const OUString* pId,
+ const OUString* pIconName, VirtualDevice* pImageSurface) override;
+
+ virtual void insert_separator(int pos, const OUString& /*rId*/) override;
+
+ virtual bool has_entry() const override;
+
+ virtual void set_entry_message_type(weld::EntryMessageType /*eType*/) override;
+
+ virtual void set_entry_text(const OUString& /*rText*/) override;
+
+ virtual void select_entry_region(int /*nStartPos*/, int /*nEndPos*/) override;
+
+ virtual bool get_entry_selection_bounds(int& /*rStartPos*/, int& /*rEndPos*/) override;
+
+ virtual void set_entry_width_chars(int /*nChars*/) override;
+
+ virtual void set_entry_max_length(int /*nChars*/) override;
+
+ virtual void set_entry_completion(bool, bool) override;
+
+ virtual ~SalInstanceComboBoxWithoutEdit() override;
+};
+
+class SalInstanceComboBoxWithEdit : public SalInstanceComboBox<ComboBox>
+{
+private:
+ DECL_LINK(ChangeHdl, Edit&, void);
+ DECL_LINK(EntryActivateHdl, Edit&, bool);
+ WeldTextFilter m_aTextFilter;
+
+public:
+ SalInstanceComboBoxWithEdit(::ComboBox* pComboBox, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+
+ virtual bool has_entry() const override;
+
+ virtual void set_entry_message_type(weld::EntryMessageType eType) override;
+
+ virtual OUString get_active_text() const override;
+
+ virtual void remove(int pos) override;
+
+ virtual void insert(int pos, const OUString& rStr, const OUString* pId,
+ const OUString* pIconName, VirtualDevice* pImageSurface) override;
+
+ virtual void insert_separator(int pos, const OUString& /*rId*/) override;
+
+ virtual void set_entry_text(const OUString& rText) override;
+
+ virtual void set_entry_width_chars(int nChars) override;
+
+ virtual void set_entry_max_length(int nChars) override;
+
+ virtual void set_entry_completion(bool bEnable, bool bCaseSensitive) override;
+
+ virtual void select_entry_region(int nStartPos, int nEndPos) override;
+
+ virtual bool get_entry_selection_bounds(int& rStartPos, int& rEndPos) override;
+
+ virtual ~SalInstanceComboBoxWithEdit() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index f104cc505712..8ff2268c17b7 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -5486,275 +5486,97 @@ IMPL_LINK(SalInstanceDrawingArea, QueryTooltipHdl, tools::Rectangle&, rHelpArea,
return m_aQueryTooltipHdl.Call(rHelpArea);
}
-//ComboBox and ListBox have similar apis, ComboBoxes in LibreOffice have an edit box and ListBoxes
-//don't. This distinction isn't there in Gtk. Use a template to sort this problem out.
-template <class vcl_type>
-class SalInstanceComboBox : public SalInstanceContainer, public virtual weld::ComboBox
+SalInstanceComboBoxWithoutEdit::SalInstanceComboBoxWithoutEdit(ListBox* pListBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceComboBox<ListBox>(pListBox, pBuilder, bTakeOwnership)
{
-protected:
- // owner for ListBox/ComboBox UserData
- std::vector<std::unique_ptr<OUString>> m_aUserData;
- VclPtr<vcl_type> m_xComboBox;
-
-public:
- SalInstanceComboBox(vcl_type* pComboBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceContainer(pComboBox, pBuilder, bTakeOwnership)
- , m_xComboBox(pComboBox)
- {
- }
-
- virtual int get_active() const override
- {
- const sal_Int32 nRet = m_xComboBox->GetSelectedEntryPos();
- if (nRet == LISTBOX_ENTRY_NOTFOUND)
- return -1;
- return nRet;
- }
-
- const OUString* getEntryData(int index) const
- {
- return static_cast<const OUString*>(m_xComboBox->GetEntryData(index));
- }
-
- // ComboBoxes are comprised of multiple subwidgets, consider the lot as
- // one thing for focus
- virtual bool has_focus() const override
- {
- return m_xWidget->HasChildPathFocus();
- }
-
- virtual OUString get_active_id() const override
- {
- sal_Int32 nPos = m_xComboBox->GetSelectedEntryPos();
- const OUString* pRet;
- if (nPos != LISTBOX_ENTRY_NOTFOUND)
- pRet = getEntryData(m_xComboBox->GetSelectedEntryPos());
- else
- pRet = nullptr;
- if (!pRet)
- return OUString();
- return *pRet;
- }
-
- virtual void set_active_id(const OUString& rStr) override
- {
- for (int i = 0; i < get_count(); ++i)
- {
- const OUString* pId = getEntryData(i);
- if (!pId)
- continue;
- if (*pId == rStr)
- m_xComboBox->SelectEntryPos(i);
- }
- }
-
- virtual void set_active(int pos) override
- {
- if (pos == -1)
- {
- m_xComboBox->SetNoSelection();
- return;
- }
- m_xComboBox->SelectEntryPos(pos);
- }
-
- virtual OUString get_text(int pos) const override
- {
- return m_xComboBox->GetEntry(pos);
- }
-
- virtual OUString get_id(int pos) const override
- {
- const OUString* pRet = getEntryData(pos);
- if (!pRet)
- return OUString();
- return *pRet;
- }
-
- virtual void set_id(int row, const OUString& rId) override
- {
- m_aUserData.emplace_back(std::make_unique<OUString>(rId));
- m_xComboBox->SetEntryData(row, m_aUserData.back().get());
- }
-
- virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems, bool bKeepExisting) override
- {
- freeze();
- if (!bKeepExisting)
- clear();
- for (const auto& rItem : rItems)
- {
- insert(-1, rItem.sString, rItem.sId.isEmpty() ? nullptr : &rItem.sId,
- rItem.sImage.isEmpty() ? nullptr : &rItem.sImage, nullptr);
- }
- thaw();
- }
-
- virtual int get_count() const override
- {
- return m_xComboBox->GetEntryCount();
- }
-
- virtual int find_text(const OUString& rStr) const override
- {
- const sal_Int32 nRet = m_xComboBox->GetEntryPos(rStr);
- if (nRet == LISTBOX_ENTRY_NOTFOUND)
- return -1;
- return nRet;
- }
-
- virtual int find_id(const OUString& rStr) const override
- {
- for (int i = 0; i < get_count(); ++i)
- {
- const OUString* pId = getEntryData(i);
- if (!pId)
- continue;
- if (*pId == rStr)
- return i;
- }
- return -1;
- }
-
- virtual void clear() override
- {
- m_xComboBox->Clear();
- m_aUserData.clear();
- }
-
- virtual void make_sorted() override
- {
- m_xComboBox->SetStyle(m_xComboBox->GetStyle() | WB_SORT);
- }
-
- virtual bool get_popup_shown() const override
- {
- return m_xComboBox->IsInDropDown();
- }
-
- virtual void connect_popup_toggled(const Link<ComboBox&, void>& rLink) override
- {
- weld::ComboBox::connect_popup_toggled(rLink);
- ensure_event_listener();
- }
-
- virtual void HandleEventListener(VclWindowEvent& rEvent) override
- {
- if (rEvent.GetId() == VclEventId::DropdownPreOpen ||
- rEvent.GetId() == VclEventId::DropdownClose)
- {
- signal_popup_toggled();
- return;
- }
- SalInstanceContainer::HandleEventListener(rEvent);
- }
-};
+ m_xComboBox->SetSelectHdl(LINK(this, SalInstanceComboBoxWithoutEdit, SelectHdl));
+}
-class SalInstanceComboBoxWithoutEdit : public SalInstanceComboBox<ListBox>
+OUString SalInstanceComboBoxWithoutEdit::get_active_text() const
{
-private:
- DECL_LINK(SelectHdl, ListBox&, void);
-
-public:
- SalInstanceComboBoxWithoutEdit(ListBox* pListBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceComboBox<ListBox>(pListBox, pBuilder, bTakeOwnership)
- {
- m_xComboBox->SetSelectHdl(LINK(this, SalInstanceComboBoxWithoutEdit, SelectHdl));
- }
+ return m_xComboBox->GetSelectedEntry();
+}
- virtual OUString get_active_text() const override
- {
- return m_xComboBox->GetSelectedEntry();
- }
+void SalInstanceComboBoxWithoutEdit::remove(int pos)
+{
+ m_xComboBox->RemoveEntry(pos);
+}
- virtual void remove(int pos) override
+void SalInstanceComboBoxWithoutEdit::insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface)
+{
+ auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos;
+ sal_Int32 nInsertedAt;
+ if (!pIconName && !pImageSurface)
+ nInsertedAt = m_xComboBox->InsertEntry(rStr, nInsertPos);
+ else if (pIconName)
+ nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pIconName), nInsertPos);
+ else
+ nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pImageSurface), nInsertPos);
+ if (pId)
{
- m_xComboBox->RemoveEntry(pos);
- }
-
- virtual void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface) override
- {
- auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos;
- sal_Int32 nInsertedAt;
- if (!pIconName && !pImageSurface)
- nInsertedAt = m_xComboBox->InsertEntry(rStr, nInsertPos);
- else if (pIconName)
- nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pIconName), nInsertPos);
- else
- nInsertedAt = m_xComboBox->InsertEntry(rStr, createImage(*pImageSurface), nInsertPos);
- if (pId)
- {
- m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
- m_xComboBox->SetEntryData(nInsertedAt, m_aUserData.back().get());
- }
+ m_aUserData.emplace_back(std::make_unique<OUString>(*pId));
+ m_xComboBox->SetEntryData(nInsertedAt, m_aUserData.back().get());
}
+}
- virtual void insert_separator(int pos, const OUString& /*rId*/) override
- {
- auto nInsertPos = pos == -1 ? m_xComboBox->GetEntryCount() : pos;
- m_xComboBox->AddSeparator(nInsertPos - 1);
- }
+void SalInstanceComboBoxWithoutEdit::insert_separator(int pos, const OUString& /*rId*/)
+{
+ auto nInsertPos = pos == -1 ? m_xComboBox->GetEntryCount() : pos;
+ m_xComboBox->AddSeparator(nInsertPos - 1);
+}
- virtual bool has_entry() const override
- {
- return false;
- }
+bool SalInstanceComboBoxWithoutEdit::has_entry() const
+{
+ return false;
+}
- virtual void set_entry_message_type(weld::EntryMessageType /*eType*/) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::set_entry_message_type(weld::EntryMessageType /*eType*/)
+{
+ assert(false);
+}
- virtual void set_entry_text(const OUString& /*rText*/) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::set_entry_text(const OUString& /*rText*/)
+{
+ assert(false);
+}
- virtual void select_entry_region(int /*nStartPos*/, int /*nEndPos*/) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::select_entry_region(int /*nStartPos*/, int /*nEndPos*/)
+{
+ assert(false);
+}
- virtual bool get_entry_selection_bounds(int& /*rStartPos*/, int& /*rEndPos*/) override
- {
- assert(false);
- return false;
- }
+bool SalInstanceComboBoxWithoutEdit::get_entry_selection_bounds(int& /*rStartPos*/, int& /*rEndPos*/)
+{
+ assert(false);
+ return false;
+}
- virtual void set_entry_width_chars(int /*nChars*/) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::set_entry_width_chars(int /*nChars*/)
+{
+ assert(false);
+}
- virtual void set_entry_max_length(int /*nChars*/) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::set_entry_max_length(int /*nChars*/)
+{
+ assert(false);
+}
- virtual void set_entry_completion(bool, bool) override
- {
- assert(false);
- }
+void SalInstanceComboBoxWithoutEdit::set_entry_completion(bool, bool)
+{
+ assert(false);
+}
- virtual ~SalInstanceComboBoxWithoutEdit() override
- {
- m_xComboBox->SetSelectHdl(Link<ListBox&, void>());
- }
-};
+SalInstanceComboBoxWithoutEdit::~SalInstanceComboBoxWithoutEdit()
+{
+ m_xComboBox->SetSelectHdl(Link<ListBox&, void>());
+}
IMPL_LINK_NOARG(SalInstanceComboBoxWithoutEdit, SelectHdl, ListBox&, void)
{
return signal_changed();
}
-class SalInstanceComboBoxWithEdit : public SalInstanceComboBox<ComboBox>
-{
-private:
- DECL_LINK(ChangeHdl, Edit&, void);
- DECL_LINK(EntryActivateHdl, Edit&, bool);
- WeldTextFilter m_aTextFilter;
-public:
- SalInstanceComboBoxWithEdit(::ComboBox* pComboBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ SalInstanceComboBoxWithEdit::SalInstanceComboBoxWithEdit(::ComboBox* pComboBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
: SalInstanceComboBox<::ComboBox>(pComboBox, pBuilder, bTakeOwnership)
, m_aTextFilter(m_aEntryInsertTextHdl)
{
@@ -5763,12 +5585,12 @@ public:
m_xComboBox->SetTextFilter(&m_aTextFilter);
}
- virtual bool has_entry() const override
+ bool SalInstanceComboBoxWithEdit::has_entry() const
{
return true;
}
- virtual void set_entry_message_type(weld::EntryMessageType eType) override
+ void SalInstanceComboBoxWithEdit::set_entry_message_type(weld::EntryMessageType eType)
{
if (eType == weld::EntryMessageType::Error)
m_xComboBox->SetControlForeground(Color(0xf0, 0, 0));
@@ -5778,17 +5600,17 @@ public:
m_xComboBox->SetControlForeground();
}
- virtual OUString get_active_text() const override
+ OUString SalInstanceComboBoxWithEdit::get_active_text() const
{
return m_xComboBox->GetText();
}
- virtual void remove(int pos) override
+ void SalInstanceComboBoxWithEdit::remove(int pos)
{
m_xComboBox->RemoveEntryAt(pos);
}
- virtual void insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface) override
+ void SalInstanceComboBoxWithEdit::insert(int pos, const OUString& rStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface)
{
auto nInsertPos = pos == -1 ? COMBOBOX_APPEND : pos;
sal_Int32 nInsertedAt;
@@ -5805,38 +5627,38 @@ public:
}
}
- virtual void insert_separator(int pos, const OUString& /*rId*/) override
+ void SalInstanceComboBoxWithEdit::insert_separator(int pos, const OUString& /*rId*/)
{
auto nInsertPos = pos == -1 ? m_xComboBox->GetEntryCount() : pos;
m_xComboBox->AddSeparator(nInsertPos - 1);
}
- virtual void set_entry_text(const OUString& rText) override
+ void SalInstanceComboBoxWithEdit::set_entry_text(const OUString& rText)
{
m_xComboBox->SetText(rText);
}
- virtual void set_entry_width_chars(int nChars) override
+ void SalInstanceComboBoxWithEdit::set_entry_width_chars(int nChars)
{
m_xComboBox->SetWidthInChars(nChars);
}
- virtual void set_entry_max_length(int nChars) override
+ void SalInstanceComboBoxWithEdit::set_entry_max_length(int nChars)
{
m_xComboBox->SetMaxTextLen(nChars);
}
- virtual void set_entry_completion(bool bEnable, bool bCaseSensitive) override
+ void SalInstanceComboBoxWithEdit::set_entry_completion(bool bEnable, bool bCaseSensitive)
{
m_xComboBox->EnableAutocomplete(bEnable, bCaseSensitive);
}
- virtual void select_entry_region(int nStartPos, int nEndPos) override
+ void SalInstanceComboBoxWithEdit::select_entry_region(int nStartPos, int nEndPos)
{
m_xComboBox->SetSelection(Selection(nStartPos, nEndPos < 0 ? SELECTION_MAX : nEndPos));
}
- virtual bool get_entry_selection_bounds(int& rStartPos, int& rEndPos) override
+ bool SalInstanceComboBoxWithEdit::get_entry_selection_bounds(int& rStartPos, int& rEndPos)
{
const Selection& rSelection = m_xComboBox->GetSelection();
rStartPos = rSelection.Min();
@@ -5844,13 +5666,12 @@ public:
return rSelection.Len();
}
- virtual ~SalInstanceComboBoxWithEdit() override
+ SalInstanceComboBoxWithEdit::~SalInstanceComboBoxWithEdit()
{
m_xComboBox->SetTextFilter(nullptr);
m_xComboBox->SetEntryActivateHdl(Link<Edit&, bool>());
m_xComboBox->SetModifyHdl(Link<Edit&, void>());
}
-};
IMPL_LINK_NOARG(SalInstanceComboBoxWithEdit, ChangeHdl, Edit&, void)
{
commit 11075a2ae05cdad28fdd7f11631ebd498e380d4e
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Fri Feb 21 14:35:13 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Move SalInstanceEdit declaration to the header file
Change-Id: I660de317b88c4e83ccc310743dc4ef5b4c955a21
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89370
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93481
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index c25c163c6561..418a4d0eddae 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -7,6 +7,8 @@
#include <vcl/settings.hxx>
#include <vcl/virdev.hxx>
#include <vcl/ctrl.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/spinfld.hxx>
class SalInstanceBuilder : public weld::Builder
{
@@ -491,4 +493,116 @@ public:
virtual Container* weld_content_area() override;
};
+class WeldTextFilter : public TextFilter
+{
+private:
+ Link<OUString&, bool>& m_rInsertTextHdl;
+
+public:
+ WeldTextFilter(Link<OUString&, bool>& rInsertTextHdl);
+
+ virtual OUString filter(const OUString& rText) override;
+};
+
+class SalInstanceEntry : public SalInstanceWidget, public virtual weld::Entry
+{
+private:
+ VclPtr<Edit> m_xEntry;
+
+ DECL_LINK(ChangeHdl, Edit&, void);
+ DECL_LINK(CursorListener, VclWindowEvent&, void);
+ DECL_LINK(ActivateHdl, Edit&, bool);
+
+ WeldTextFilter m_aTextFilter;
+
+public:
+ SalInstanceEntry(Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_text(const OUString& rText) override;
+
+ virtual OUString get_text() const override;
+
+ virtual void set_width_chars(int nChars) override;
+
+ virtual int get_width_chars() const override;
+
+ virtual void set_max_length(int nChars) override;
+
+ virtual void select_region(int nStartPos, int nEndPos) override;
+
+ bool get_selection_bounds(int& rStartPos, int& rEndPos) override;
+
+ virtual void replace_selection(const OUString& rText) override;
+
+ virtual void set_position(int nCursorPos) override;
+
+ virtual int get_position() const override;
+
+ virtual void set_editable(bool bEditable) override;
+
+ virtual bool get_editable() const override;
+
+ virtual void set_message_type(weld::EntryMessageType eType) override;
+
+ virtual void set_font(const vcl::Font& rFont) override;
+
+ virtual void connect_cursor_position(const Link<Entry&, void>& rLink) override;
+
+ Edit& getEntry();
+
+ void fire_signal_changed();
+
+ virtual void cut_clipboard() override;
+
+ virtual void copy_clipboard() override;
+
+ virtual void paste_clipboard() override;
+
+ virtual ~SalInstanceEntry() override;
+};
+
+class SalInstanceSpinButton : public SalInstanceEntry, public virtual weld::SpinButton
+{
+private:
+ VclPtr<FormattedField> m_xButton;
+
+ DECL_LINK(UpDownHdl, SpinField&, void);
+ DECL_LINK(LoseFocusHdl, Control&, void);
+ DECL_LINK(OutputHdl, Edit&, bool);
+ DECL_LINK(InputHdl, sal_Int64*, TriState);
+ DECL_LINK(ActivateHdl, Edit&, bool);
+
+ double toField(int nValue) const;
+
+ int fromField(double fValue) const;
+
+public:
+ SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+
+ virtual int get_value() const override;
+
+ virtual void set_value(int value) override;
+
+ virtual void set_range(int min, int max) override;
+
+ virtual void get_range(int& min, int& max) const override;
+
+ virtual void set_increments(int step, int /*page*/) override;
+
+ virtual void get_increments(int& step, int& page) const override;
+
+ virtual void set_digits(unsigned int digits) override;
+
+ //so with hh::mm::ss, incrementing mm will not reset ss
+ void DisableRemainderFactor();
+
+ //off by default for direct SpinButtons, MetricSpinButton enables it
+ void SetUseThousandSep();
+
+ virtual unsigned int get_digits() const override;
+
+ virtual ~SalInstanceSpinButton() override;
+};
+
#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 65eb6083f1db..f104cc505712 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3030,198 +3030,177 @@ IMPL_LINK_NOARG(SalInstanceCalendar, ActivateHdl, ::Calendar*, void)
signal_activated();
}
-namespace
+WeldTextFilter::WeldTextFilter(Link<OUString&, bool>& rInsertTextHdl)
+ : TextFilter(OUString())
+ , m_rInsertTextHdl(rInsertTextHdl)
{
- class WeldTextFilter : public TextFilter
- {
- private:
- Link<OUString&, bool>& m_rInsertTextHdl;
- public:
- WeldTextFilter(Link<OUString&, bool>& rInsertTextHdl)
- : TextFilter(OUString())
- , m_rInsertTextHdl(rInsertTextHdl)
- {
- }
+}
- virtual OUString filter(const OUString &rText) override
- {
- if (!m_rInsertTextHdl.IsSet())
- return rText;
- OUString sText(rText);
- const bool bContinue = m_rInsertTextHdl.Call(sText);
- if (!bContinue)
- return OUString();
- return sText;
- }
- };
+OUString WeldTextFilter::filter(const OUString &rText)
+{
+ if (!m_rInsertTextHdl.IsSet())
+ return rText;
+ OUString sText(rText);
+ const bool bContinue = m_rInsertTextHdl.Call(sText);
+ if (!bContinue)
+ return OUString();
+ return sText;
}
-class SalInstanceEntry : public SalInstanceWidget, public virtual weld::Entry
+SalInstanceEntry::SalInstanceEntry(Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceWidget(pEntry, pBuilder, bTakeOwnership)
+ , m_xEntry(pEntry)
+ , m_aTextFilter(m_aInsertTextHdl)
{
-private:
- VclPtr<Edit> m_xEntry;
+ m_xEntry->SetModifyHdl(LINK(this, SalInstanceEntry, ChangeHdl));
+ m_xEntry->SetActivateHdl(LINK(this, SalInstanceEntry, ActivateHdl));
+ m_xEntry->SetTextFilter(&m_aTextFilter);
+}
- DECL_LINK(ChangeHdl, Edit&, void);
- DECL_LINK(CursorListener, VclWindowEvent&, void);
- DECL_LINK(ActivateHdl, Edit&, bool);
+void SalInstanceEntry::set_text(const OUString& rText)
+{
+ disable_notify_events();
+ m_xEntry->SetText(rText);
+ enable_notify_events();
+}
- WeldTextFilter m_aTextFilter;
-public:
- SalInstanceEntry(Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceWidget(pEntry, pBuilder, bTakeOwnership)
- , m_xEntry(pEntry)
- , m_aTextFilter(m_aInsertTextHdl)
- {
- m_xEntry->SetModifyHdl(LINK(this, SalInstanceEntry, ChangeHdl));
- m_xEntry->SetActivateHdl(LINK(this, SalInstanceEntry, ActivateHdl));
- m_xEntry->SetTextFilter(&m_aTextFilter);
- }
+OUString SalInstanceEntry::get_text() const
+{
+ return m_xEntry->GetText();
+}
- virtual void set_text(const OUString& rText) override
- {
- disable_notify_events();
- m_xEntry->SetText(rText);
- enable_notify_events();
- }
+void SalInstanceEntry::set_width_chars(int nChars)
+{
+ m_xEntry->SetWidthInChars(nChars);
+}
- virtual OUString get_text() const override
- {
- return m_xEntry->GetText();
- }
+int SalInstanceEntry::get_width_chars() const
+{
+ return m_xEntry->GetWidthInChars();
+}
- virtual void set_width_chars(int nChars) override
- {
- m_xEntry->SetWidthInChars(nChars);
- }
+void SalInstanceEntry::set_max_length(int nChars)
+{
+ m_xEntry->SetMaxTextLen(nChars);
+}
- virtual int get_width_chars() const override
- {
- return m_xEntry->GetWidthInChars();
- }
+void SalInstanceEntry::select_region(int nStartPos, int nEndPos)
+{
+ disable_notify_events();
+ m_xEntry->SetSelection(Selection(nStartPos, nEndPos < 0 ? SELECTION_MAX : nEndPos));
+ enable_notify_events();
+}
- virtual void set_max_length(int nChars) override
- {
- m_xEntry->SetMaxTextLen(nChars);
- }
+bool SalInstanceEntry::get_selection_bounds(int& rStartPos, int &rEndPos)
+{
+ const Selection& rSelection = m_xEntry->GetSelection();
+ rStartPos = rSelection.Min();
+ rEndPos = rSelection.Max();
+ return rSelection.Len();
+}
- virtual void select_region(int nStartPos, int nEndPos) override
- {
- disable_notify_events();
- m_xEntry->SetSelection(Selection(nStartPos, nEndPos < 0 ? SELECTION_MAX : nEndPos));
- enable_notify_events();
- }
+void SalInstanceEntry::replace_selection(const OUString& rText)
+{
+ m_xEntry->ReplaceSelected(rText);
+}
- bool get_selection_bounds(int& rStartPos, int &rEndPos) override
- {
- const Selection& rSelection = m_xEntry->GetSelection();
- rStartPos = rSelection.Min();
- rEndPos = rSelection.Max();
- return rSelection.Len();
- }
+void SalInstanceEntry::set_position(int nCursorPos)
+{
+ disable_notify_events();
+ if (nCursorPos < 0)
+ m_xEntry->SetCursorAtLast();
+ else
+ m_xEntry->SetSelection(Selection(nCursorPos, nCursorPos));
+ enable_notify_events();
+}
- virtual void replace_selection(const OUString& rText) override
- {
- m_xEntry->ReplaceSelected(rText);
- }
+int SalInstanceEntry::get_position() const
+{
+ return m_xEntry->GetSelection().Max();
+}
- virtual void set_position(int nCursorPos) override
- {
- disable_notify_events();
- if (nCursorPos < 0)
- m_xEntry->SetCursorAtLast();
- else
- m_xEntry->SetSelection(Selection(nCursorPos, nCursorPos));
- enable_notify_events();
- }
+void SalInstanceEntry::set_editable(bool bEditable)
+{
+ m_xEntry->SetReadOnly(!bEditable);
+}
- virtual int get_position() const override
- {
- return m_xEntry->GetSelection().Max();
- }
+bool SalInstanceEntry::get_editable() const
+{
+ return !m_xEntry->IsReadOnly();
+}
- virtual void set_editable(bool bEditable) override
+void SalInstanceEntry::set_message_type(weld::EntryMessageType eType)
+{
+ if (eType == weld::EntryMessageType::Error)
{
- m_xEntry->SetReadOnly(!bEditable);
+ // tdf#114603: enable setting the background to a different color;
+ // relevant for GTK; see also #i75179#
+ m_xEntry->SetForceControlBackground(true);
+ m_xEntry->SetControlForeground(COL_WHITE);
+ m_xEntry->SetControlBackground(0xff6563);
}
-
- virtual bool get_editable() const override
+ else if (eType == weld::EntryMessageType::Warning)
{
- return !m_xEntry->IsReadOnly();
+ // tdf#114603: enable setting the background to a different color;
+ // relevant for GTK; see also #i75179#
+ m_xEntry->SetForceControlBackground(true);
+ m_xEntry->SetControlForeground();
+ m_xEntry->SetControlBackground(COL_YELLOW);
}
-
- virtual void set_message_type(weld::EntryMessageType eType) override
+ else
{
- if (eType == weld::EntryMessageType::Error)
- {
- // tdf#114603: enable setting the background to a different color;
- // relevant for GTK; see also #i75179#
- m_xEntry->SetForceControlBackground(true);
- m_xEntry->SetControlForeground(COL_WHITE);
- m_xEntry->SetControlBackground(0xff6563);
- }
- else if (eType == weld::EntryMessageType::Warning)
- {
- // tdf#114603: enable setting the background to a different color;
- // relevant for GTK; see also #i75179#
- m_xEntry->SetForceControlBackground(true);
- m_xEntry->SetControlForeground();
- m_xEntry->SetControlBackground(COL_YELLOW);
- }
- else
- {
- m_xEntry->SetForceControlBackground(false);
- m_xEntry->SetControlForeground();
- m_xEntry->SetControlBackground();
- }
+ m_xEntry->SetForceControlBackground(false);
+ m_xEntry->SetControlForeground();
+ m_xEntry->SetControlBackground();
}
+}
- virtual void set_font(const vcl::Font& rFont) override
- {
- m_xEntry->SetPointFont(*m_xEntry, rFont);
- m_xEntry->Invalidate();
- }
+void SalInstanceEntry::set_font(const vcl::Font& rFont)
+{
+ m_xEntry->SetPointFont(*m_xEntry, rFont);
+ m_xEntry->Invalidate();
+}
- virtual void connect_cursor_position(const Link<Entry&, void>& rLink) override
- {
- assert(!m_aCursorPositionHdl.IsSet());
- m_xEntry->AddEventListener(LINK(this, SalInstanceEntry, CursorListener));
- weld::Entry::connect_cursor_position(rLink);
- }
+void SalInstanceEntry::connect_cursor_position(const Link<Entry&, void>& rLink)
+{
+ assert(!m_aCursorPositionHdl.IsSet());
+ m_xEntry->AddEventListener(LINK(this, SalInstanceEntry, CursorListener));
+ weld::Entry::connect_cursor_position(rLink);
+}
- Edit& getEntry()
- {
- return *m_xEntry;
- }
+Edit& SalInstanceEntry::getEntry()
+{
+ return *m_xEntry;
+}
- void fire_signal_changed()
- {
- signal_changed();
- }
+void SalInstanceEntry::fire_signal_changed()
+{
+ signal_changed();
+}
- virtual void cut_clipboard() override
- {
- m_xEntry->Cut();
- }
+void SalInstanceEntry::cut_clipboard()
+{
+ m_xEntry->Cut();
+}
- virtual void copy_clipboard() override
- {
- m_xEntry->Copy();
- }
+void SalInstanceEntry::copy_clipboard()
+{
+ m_xEntry->Copy();
+}
- virtual void paste_clipboard() override
- {
- m_xEntry->Paste();
- }
+void SalInstanceEntry::paste_clipboard()
+{
+ m_xEntry->Paste();
+}
- virtual ~SalInstanceEntry() override
- {
- if (m_aCursorPositionHdl.IsSet())
- m_xEntry->RemoveEventListener(LINK(this, SalInstanceEntry, CursorListener));
- m_xEntry->SetTextFilter(nullptr);
- m_xEntry->SetActivateHdl(Link<Edit&, bool>());
- m_xEntry->SetModifyHdl(Link<Edit&, void>());
- }
-};
+SalInstanceEntry::~SalInstanceEntry()
+{
+ if (m_aCursorPositionHdl.IsSet())
+ m_xEntry->RemoveEventListener(LINK(this, SalInstanceEntry, CursorListener));
+ m_xEntry->SetTextFilter(nullptr);
+ m_xEntry->SetActivateHdl(Link<Edit&, bool>());
+ m_xEntry->SetModifyHdl(Link<Edit&, void>());
+}
IMPL_LINK_NOARG(SalInstanceEntry, ChangeHdl, Edit&, void)
{
@@ -4893,112 +4872,99 @@ IMPL_LINK_NOARG(SalInstanceIconView, DoubleClickHdl, SvTreeListBox*, bool)
return !signal_item_activated();
}
-class SalInstanceSpinButton : public SalInstanceEntry, public virtual weld::SpinButton
+double SalInstanceSpinButton::toField(int nValue) const
{
-private:
- VclPtr<FormattedField> m_xButton;
-
- DECL_LINK(UpDownHdl, SpinField&, void);
- DECL_LINK(LoseFocusHdl, Control&, void);
- DECL_LINK(OutputHdl, Edit&, bool);
- DECL_LINK(InputHdl, sal_Int64*, TriState);
- DECL_LINK(ActivateHdl, Edit&, bool);
-
- double toField(int nValue) const
- {
- return static_cast<double>(nValue) / Power10(get_digits());
- }
+ return static_cast<double>(nValue) / Power10(get_digits());
+}
- int fromField(double fValue) const
- {
- return FRound(fValue * Power10(get_digits()));
- }
+int SalInstanceSpinButton::fromField(double fValue) const
+{
+ return FRound(fValue * Power10(get_digits()));
+}
-public:
- SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : SalInstanceEntry(pButton, pBuilder, bTakeOwnership)
- , m_xButton(pButton)
- {
- m_xButton->SetThousandsSep(false); //off by default, MetricSpinButton enables it
- m_xButton->SetUpHdl(LINK(this, SalInstanceSpinButton, UpDownHdl));
- m_xButton->SetDownHdl(LINK(this, SalInstanceSpinButton, UpDownHdl));
- m_xButton->SetLoseFocusHdl(LINK(this, SalInstanceSpinButton, LoseFocusHdl));
- m_xButton->SetOutputHdl(LINK(this, SalInstanceSpinButton, OutputHdl));
- m_xButton->SetInputHdl(LINK(this, SalInstanceSpinButton, InputHdl));
- if (Edit* pEdit = m_xButton->GetSubEdit())
- pEdit->SetActivateHdl(LINK(this, SalInstanceSpinButton, ActivateHdl));
- else
- m_xButton->SetActivateHdl(LINK(this, SalInstanceSpinButton, ActivateHdl));
- }
+SalInstanceSpinButton::SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : SalInstanceEntry(pButton, pBuilder, bTakeOwnership)
+ , m_xButton(pButton)
+{
+ m_xButton->SetThousandsSep(false); //off by default, MetricSpinButton enables it
+ m_xButton->SetUpHdl(LINK(this, SalInstanceSpinButton, UpDownHdl));
+ m_xButton->SetDownHdl(LINK(this, SalInstanceSpinButton, UpDownHdl));
+ m_xButton->SetLoseFocusHdl(LINK(this, SalInstanceSpinButton, LoseFocusHdl));
+ m_xButton->SetOutputHdl(LINK(this, SalInstanceSpinButton, OutputHdl));
+ m_xButton->SetInputHdl(LINK(this, SalInstanceSpinButton, InputHdl));
+ if (Edit* pEdit = m_xButton->GetSubEdit())
+ pEdit->SetActivateHdl(LINK(this, SalInstanceSpinButton, ActivateHdl));
+ else
+ m_xButton->SetActivateHdl(LINK(this, SalInstanceSpinButton, ActivateHdl));
+}
- virtual int get_value() const override
- {
- return fromField(m_xButton->GetValue());
- }
+int SalInstanceSpinButton::get_value() const
+{
+ return fromField(m_xButton->GetValue());
+}
- virtual void set_value(int value) override
- {
- m_xButton->SetValue(toField(value));
- }
+void SalInstanceSpinButton::set_value(int value)
+{
+ m_xButton->SetValue(toField(value));
+}
- virtual void set_range(int min, int max) override
- {
- m_xButton->SetMinValue(toField(min));
- m_xButton->SetMaxValue(toField(max));
- }
+void SalInstanceSpinButton::set_range(int min, int max)
+{
+ m_xButton->SetMinValue(toField(min));
+ m_xButton->SetMaxValue(toField(max));
+}
- virtual void get_range(int& min, int& max) const override
- {
- min = fromField(m_xButton->GetMinValue());
- max = fromField(m_xButton->GetMaxValue());
- }
+void SalInstanceSpinButton::get_range(int& min, int& max) const
+{
+ min = fromField(m_xButton->GetMinValue());
+ max = fromField(m_xButton->GetMaxValue());
+}
- virtual void set_increments(int step, int /*page*/) override
- {
- m_xButton->SetSpinSize(toField(step));
- }
+void SalInstanceSpinButton::set_increments(int step, int /*page*/)
+{
+ m_xButton->SetSpinSize(toField(step));
+}
- virtual void get_increments(int& step, int& page) const override
- {
- step = fromField(m_xButton->GetSpinSize());
- page = fromField(m_xButton->GetSpinSize());
- }
+void SalInstanceSpinButton::get_increments(int& step, int& page) const
+{
+ step = fromField(m_xButton->GetSpinSize());
+ page = fromField(m_xButton->GetSpinSize());
+}
- virtual void set_digits(unsigned int digits) override
- {
- m_xButton->SetDecimalDigits(digits);
- }
+void SalInstanceSpinButton::set_digits(unsigned int digits)
+{
+ m_xButton->SetDecimalDigits(digits);
+}
- //so with hh::mm::ss, incrementing mm will not reset ss
- void DisableRemainderFactor()
- {
- m_xButton->DisableRemainderFactor();
- }
+//so with hh::mm::ss, incrementing mm will not reset ss
+void SalInstanceSpinButton::DisableRemainderFactor()
+{
+ m_xButton->DisableRemainderFactor();
+}
- //off by default for direct SpinButtons, MetricSpinButton enables it
- void SetUseThousandSep()
- {
- m_xButton->SetThousandsSep(true);
- }
+//off by default for direct SpinButtons, MetricSpinButton enables it
+void SalInstanceSpinButton::SetUseThousandSep()
+{
+ m_xButton->SetThousandsSep(true);
+}
- virtual unsigned int get_digits() const override
- {
- return m_xButton->GetDecimalDigits();
- }
+unsigned int SalInstanceSpinButton::get_digits() const
+{
+ return m_xButton->GetDecimalDigits();
+}
- virtual ~SalInstanceSpinButton() override
- {
- if (Edit* pEdit = m_xButton->GetSubEdit())
- pEdit->SetActivateHdl(Link<Edit&, bool>());
- else
- m_xButton->SetActivateHdl(Link<Edit&, bool>());
- m_xButton->SetInputHdl(Link<sal_Int64*, TriState>());
- m_xButton->SetOutputHdl(Link<Edit&, bool>());
- m_xButton->SetLoseFocusHdl(Link<Control&, void>());
- m_xButton->SetDownHdl(Link<SpinField&, void>());
- m_xButton->SetUpHdl(Link<SpinField&, void>());
- }
-};
+SalInstanceSpinButton::~SalInstanceSpinButton()
+{
+ if (Edit* pEdit = m_xButton->GetSubEdit())
+ pEdit->SetActivateHdl(Link<Edit&, bool>());
+ else
+ m_xButton->SetActivateHdl(Link<Edit&, bool>());
+ m_xButton->SetInputHdl(Link<sal_Int64*, TriState>());
+ m_xButton->SetOutputHdl(Link<Edit&, bool>());
+ m_xButton->SetLoseFocusHdl(Link<Control&, void>());
+ m_xButton->SetDownHdl(Link<SpinField&, void>());
+ m_xButton->SetUpHdl(Link<SpinField&, void>());
+}
IMPL_LINK_NOARG(SalInstanceSpinButton, ActivateHdl, Edit&, bool)
{
commit 88451e6be4e21913c2c9875ba74d80fbc393b292
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Feb 19 13:32:14 2020 +0100
Commit: Szymon Kłos <eszkadev at gmail.com>
CommitDate: Thu May 14 14:38:06 2020 +0200
Create header file for SalInstanceBuilder
Move more declarations for SalInstance to header file
b7240ffd003e202be04b462209cfb2abafcc18ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89102
Tested-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93480
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Change-Id: If8d7578d9a5926cdf565efbf0bc12719e5ef6fc2
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
new file mode 100644
index 000000000000..c25c163c6561
--- /dev/null
+++ b/vcl/inc/salvtables.hxx
@@ -0,0 +1,494 @@
+#ifndef INCLUDED_VCL_INC_SALVTABLES_HXX
+#define INCLUDED_VCL_INC_SALVTABLES_HXX
+
+#include <vcl/weld.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/syswin.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/ctrl.hxx>
+
+class SalInstanceBuilder : public weld::Builder
+{
+private:
+ std::unique_ptr<VclBuilder> m_xBuilder;
+ VclPtr<vcl::Window> m_aOwnedToplevel;
+
+public:
+ SalInstanceBuilder(vcl::Window* pParent, const OUString& rUIRoot, const OUString& rUIFile);
+
+ VclBuilder& get_builder() const;
+
+ virtual std::unique_ptr<weld::MessageDialog>
+ weld_message_dialog(const OString& id, bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::AboutDialog>
+ weld_about_dialog(const OString& id, bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Dialog> weld_dialog(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Assistant> weld_assistant(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Window> create_screenshot_window() override;
+
+ virtual std::unique_ptr<weld::Window> weld_window(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Widget> weld_widget(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Container> weld_container(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Box> weld_box(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Frame> weld_frame(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::ScrolledWindow>
+ weld_scrolled_window(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Notebook> weld_notebook(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Button> weld_button(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::MenuButton>
+ weld_menu_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::LinkButton>
+ weld_link_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::ToggleButton>
+ weld_toggle_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::RadioButton>
+ weld_radio_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::CheckButton>
+ weld_check_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Scale> weld_scale(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::ProgressBar>
+ weld_progress_bar(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Spinner> weld_spinner(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Image> weld_image(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Calendar> weld_calendar(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Entry> weld_entry(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::SpinButton>
+ weld_spin_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::MetricSpinButton>
+ weld_metric_spin_button(const OString& id, FieldUnit eUnit,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::FormattedSpinButton>
+ weld_formatted_spin_button(const OString& id, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::TimeSpinButton>
+ weld_time_spin_button(const OString& id, TimeFieldFormat eFormat,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::EntryTreeView>
+ weld_entry_tree_view(const OString& containerid, const OString& entryid,
+ const OString& treeviewid, bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::TreeView> weld_tree_view(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::IconView> weld_icon_view(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Label> weld_label(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::TextView> weld_text_view(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Expander> weld_expander(const OString& id,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::DrawingArea>
+ weld_drawing_area(const OString& id, const a11yref& rA11yImpl,
+ FactoryFunction pUITestFactoryFunction, void* pUserData,
+ bool bTakeOwnership = false) override;
+
+ virtual std::unique_ptr<weld::Menu> weld_menu(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::Toolbar> weld_toolbar(const OString& id,
+ bool bTakeOwnership = true) override;
+
+ virtual std::unique_ptr<weld::SizeGroup> create_size_group() override;
+
+ OString get_current_page_help_id() const;
+
+ virtual ~SalInstanceBuilder() override;
+};
+
+class SalInstanceWidget : public virtual weld::Widget
+{
+protected:
+ VclPtr<vcl::Window> m_xWidget;
+ SalInstanceBuilder* m_pBuilder;
+
+private:
+ DECL_LINK(EventListener, VclWindowEvent&, void);
+ DECL_LINK(KeyEventListener, VclWindowEvent&, bool);
+ DECL_LINK(MouseEventListener, VclSimpleEvent&, void);
+ DECL_LINK(MnemonicActivateHdl, vcl::Window&, bool);
+
+ const bool m_bTakeOwnership;
+ bool m_bEventListener;
+ bool m_bKeyEventListener;
+ bool m_bMouseEventListener;
+ int m_nBlockNotify;
+
+protected:
+ void ensure_event_listener();
+
+ // we want the ability to mark key events as handled, so use this variant
+ // for those, we get all keystrokes in this case, so we will need to filter
+ // them later
+ void ensure_key_listener();
+
+ // we want the ability to know about mouse events that happen in our children
+ // so use this variant, we will need to filter them later
+ void ensure_mouse_listener();
+
+ virtual void HandleEventListener(VclWindowEvent& rEvent);
+ virtual bool HandleKeyEventListener(VclWindowEvent& rEvent);
+ virtual void HandleMouseEventListener(VclSimpleEvent& rEvent);
+
+ void set_background(const Color& rColor);
+
+public:
+ SalInstanceWidget(vcl::Window* pWidget, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_sensitive(bool sensitive) override;
+
+ virtual bool get_sensitive() const override;
+
+ virtual bool get_visible() const override;
+
+ virtual bool is_visible() const override;
+
+ virtual void set_can_focus(bool bCanFocus) override;
+
+ virtual void grab_focus() override;
+
+ virtual bool has_focus() const override;
+
+ virtual bool is_active() const override;
+
+ virtual void set_has_default(bool has_default) override;
+
+ virtual bool get_has_default() const override;
+
+ virtual void show() override;
+
+ virtual void hide() override;
+
+ virtual void set_size_request(int nWidth, int nHeight) override;
+
+ virtual Size get_size_request() const override;
+
+ virtual Size get_preferred_size() const override;
+
+ virtual float get_approximate_digit_width() const override;
+
+ virtual int get_text_height() const override;
+
+ virtual Size get_pixel_size(const OUString& rText) const override;
+
+ virtual vcl::Font get_font() override;
+
+ virtual OString get_buildable_name() const override;
+
+ virtual void set_help_id(const OString& rId) override;
+
+ virtual OString get_help_id() const override;
+
+ virtual void set_grid_left_attach(int nAttach) override;
+
+ virtual int get_grid_left_attach() const override;
+
+ virtual void set_grid_width(int nCols) override;
+
+ virtual void set_grid_top_attach(int nAttach) override;
+
+ virtual int get_grid_top_attach() const override;
+
+ virtual void set_hexpand(bool bExpand) override;
+
+ virtual bool get_hexpand() const override;
+
+ virtual void set_vexpand(bool bExpand) override;
+
+ virtual bool get_vexpand() const override;
+
+ virtual void set_secondary(bool bSecondary) override;
+
+ virtual void set_margin_top(int nMargin) override;
+
+ virtual void set_margin_bottom(int nMargin) override;
+
+ virtual void set_margin_left(int nMargin) override;
+
+ virtual void set_margin_right(int nMargin) override;
+
+ virtual int get_margin_top() const override;
+
+ virtual int get_margin_bottom() const override;
+
+ virtual int get_margin_left() const override;
+
+ virtual int get_margin_right() const override;
+
+ virtual void set_accessible_name(const OUString& rName) override;
+
+ virtual OUString get_accessible_name() const override;
+
+ virtual OUString get_accessible_description() const override;
+
+ virtual void set_accessible_relation_labeled_by(weld::Widget* pLabel) override;
+
+ virtual void set_accessible_relation_label_for(weld::Widget* pLabeled) override;
+
+ virtual void
+ add_extra_accessible_relation(const css::accessibility::AccessibleRelation& rRelation) override;
+
+ virtual void clear_extra_accessible_relations() override;
+
+ virtual void set_tooltip_text(const OUString& rTip) override;
+
+ virtual OUString get_tooltip_text() const override;
+
+ virtual void connect_focus_in(const Link<Widget&, void>& rLink) override;
+
+ virtual void connect_mnemonic_activate(const Link<Widget&, bool>& rLink) override;
+
+ virtual void connect_focus_out(const Link<Widget&, void>& rLink) override;
+
+ virtual void connect_size_allocate(const Link<const Size&, void>& rLink) override;
+
+ virtual void connect_mouse_press(const Link<const MouseEvent&, bool>& rLink) override;
+
+ virtual void connect_mouse_move(const Link<const MouseEvent&, bool>& rLink) override;
+
+ virtual void connect_mouse_release(const Link<const MouseEvent&, bool>& rLink) override;
+
+ virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override;
+
+ virtual void connect_key_release(const Link<const KeyEvent&, bool>& rLink) override;
+
+ virtual bool get_extents_relative_to(Widget& rRelative, int& x, int& y, int& width,
+ int& height) override;
+
+ virtual void grab_add() override;
+
+ virtual bool has_grab() const override;
+
+ virtual void grab_remove() override;
+
+ virtual bool get_direction() const override;
+
+ virtual void set_direction(bool bRTL) override;
+
+ virtual void freeze() override;
+
+ virtual void thaw() override;
+
+ virtual std::unique_ptr<weld::Container> weld_parent() const override;
+
+ virtual ~SalInstanceWidget() override;
+
+ vcl::Window* getWidget();
+
+ void disable_notify_events();
+
+ bool notify_events_disabled();
+
+ void enable_notify_events();
+
+ virtual void help_hierarchy_foreach(const std::function<bool(const OString&)>& func) override;
+
+ virtual OUString strip_mnemonic(const OUString& rLabel) const override;
+
+ virtual VclPtr<VirtualDevice> create_virtual_device() const override;
+
+ virtual css::uno::Reference<css::datatransfer::dnd::XDropTarget> get_drop_target() override;
+
+ virtual void set_stack_background() override;
+
+ virtual void set_highlight_background() override;
+
+ SystemWindow* getSystemWindow();
+};
+
+class SalInstanceLabel : public SalInstanceWidget, public virtual weld::Label
+{
+private:
+ // Control instead of FixedText so we can also use this for
+ // SelectableFixedText which is derived from Edit. We just typically need
+ // [G|S]etText which exists in their shared baseclass
+ VclPtr<Control> m_xLabel;
+
+public:
+ SalInstanceLabel(Control* pLabel, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_label(const OUString& rText) override;
+
+ virtual OUString get_label() const override;
+
+ virtual void set_mnemonic_widget(Widget* pTarget) override;
+
+ virtual void set_message_type(weld::EntryMessageType eType) override;
+
+ virtual void set_font(const vcl::Font& rFont) override;
+};
+
+class SalInstanceContainer : public SalInstanceWidget, public virtual weld::Container
+{
+protected:
+ VclPtr<vcl::Window> m_xContainer;
+
+private:
+ void implResetDefault(const vcl::Window* _pWindow);
+
+public:
+ SalInstanceContainer(vcl::Window* pContainer, SalInstanceBuilder* pBuilder,
+ bool bTakeOwnership);
+ virtual void move(weld::Widget* pWidget, weld::Container* pNewParent) override;
+ virtual void recursively_unset_default_buttons() override;
+ virtual css::uno::Reference<css::awt::XWindow> CreateChildFrame() override;
+};
+
+class SalInstanceWindow : public SalInstanceContainer, public virtual weld::Window
+{
+private:
+ VclPtr<vcl::Window> m_xWindow;
+
+ DECL_LINK(HelpHdl, vcl::Window&, bool);
+
+ void override_child_help(vcl::Window* pParent);
+
+ void clear_child_help(vcl::Window* pParent);
+
+public:
+ SalInstanceWindow(vcl::Window* pWindow, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual void set_title(const OUString& rTitle) override;
+
+ virtual OUString get_title() const override;
+
+ void help();
+
+ virtual void set_busy_cursor(bool bBusy) override;
+
+ virtual css::uno::Reference<css::awt::XWindow> GetXWindow() override;
+
+ virtual void resize_to_request() override;
+
+ virtual void set_modal(bool bModal) override;
+
+ virtual bool get_modal() const override;
+
+ virtual void window_move(int x, int y) override;
+
+ virtual Size get_size() const override;
+
+ virtual Point get_position() const override;
+
+ virtual tools::Rectangle get_monitor_workarea() const override;
+
+ virtual void set_centered_on_parent(bool /*bTrackGeometryRequests*/) override;
+
+ virtual bool get_resizable() const override;
+
+ virtual bool has_toplevel_focus() const override;
+
+ virtual void present() override;
+
+ virtual void set_window_state(const OString& rStr) override;
+
+ virtual OString get_window_state(WindowStateMask nMask) const override;
+
+ virtual SystemEnvData get_system_data() const override;
+
+ virtual void connect_toplevel_focus_changed(const Link<weld::Widget&, void>& rLink) override;
+
+ virtual void HandleEventListener(VclWindowEvent& rEvent) override;
+
+ virtual void draw(VirtualDevice& rOutput) override;
+
+ virtual weld::ScreenShotCollection collect_screenshot_data() override;
+
+ virtual ~SalInstanceWindow() override;
+};
+
+class SalInstanceDialog : public SalInstanceWindow, public virtual weld::Dialog
+{
+private:
+ VclPtr<::Dialog> m_xDialog;
+
+ // for calc ref dialog that shrink to range selection widgets and resize back
+ VclPtr<vcl::Window> m_xRefEdit;
+ std::vector<VclPtr<vcl::Window>> m_aHiddenWidgets; // vector of hidden Controls
+ long m_nOldEditWidthReq; // Original width request of the input field
+ sal_Int32 m_nOldBorderWidth; // border width for expanded dialog
+
+ DECL_LINK(PopupScreenShotMenuHdl, const CommandEvent&, bool);
+
+public:
+ SalInstanceDialog(::Dialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership);
+
+ virtual bool runAsync(std::shared_ptr<weld::DialogController> aOwner,
+ const std::function<void(sal_Int32)>& rEndDialogFn) override;
+
+ virtual bool runAsync(std::shared_ptr<Dialog> const& rxSelf,
+ const std::function<void(sal_Int32)>& rEndDialogFn) override;
+
+ virtual void collapse(weld::Widget* pEdit, weld::Widget* pButton) override;
+
+ virtual void undo_collapse() override;
+
+ virtual void
+ SetInstallLOKNotifierHdl(const Link<void*, vcl::ILibreOfficeKitNotifier*>& rLink) override;
+
+ virtual int run() override;
+
+ virtual void response(int nResponse) override;
+
+ virtual void add_button(const OUString& rText, int nResponse, const OString& rHelpId) override;
+
+ virtual void set_modal(bool bModal) override;
+
+ virtual bool get_modal() const override;
+
+ virtual weld::Button* weld_widget_for_response(int nResponse) override;
+
+ virtual void set_default_response(int nResponse) override;
+
+ virtual Container* weld_content_area() override;
+};
+
+#endif
\ No newline at end of file
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d9d25ee5494f..65eb6083f1db 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -71,6 +71,7 @@
#include <aboutdialog.hxx>
#include <bitmaps.hlst>
#include <wizdlg.hxx>
+#include <salvtables.hxx>
SalFrame::SalFrame()
: m_pWindow(nullptr)
@@ -233,507 +234,476 @@ SalMenuItem::~SalMenuItem()
{
}
-class SalInstanceBuilder;
-
-class SalInstanceWidget : public virtual weld::Widget
+void SalInstanceWidget::ensure_event_listener()
{
-protected:
- VclPtr<vcl::Window> m_xWidget;
- SalInstanceBuilder* m_pBuilder;
-
-private:
- DECL_LINK(EventListener, VclWindowEvent&, void);
- DECL_LINK(KeyEventListener, VclWindowEvent&, bool);
- DECL_LINK(MouseEventListener, VclSimpleEvent&, void);
- DECL_LINK(MnemonicActivateHdl, vcl::Window&, bool);
-
- const bool m_bTakeOwnership;
- bool m_bEventListener;
- bool m_bKeyEventListener;
- bool m_bMouseEventListener;
- int m_nBlockNotify;
-
-protected:
- void ensure_event_listener()
+ if (!m_bEventListener)
{
- if (!m_bEventListener)
- {
- m_xWidget->AddEventListener(LINK(this, SalInstanceWidget, EventListener));
- m_bEventListener = true;
- }
- }
-
- // we want the ability to mark key events as handled, so use this variant
- // for those, we get all keystrokes in this case, so we will need to filter
- // them later
- void ensure_key_listener()
- {
- if (!m_bKeyEventListener)
- {
- Application::AddKeyListener(LINK(this, SalInstanceWidget, KeyEventListener));
- m_bKeyEventListener = true;
- }
- }
-
- // we want the ability to know about mouse events that happen in our children
- // so use this variant, we will need to filter them later
- void ensure_mouse_listener()
- {
- if (!m_bMouseEventListener)
- {
- Application::AddEventListener(LINK(this, SalInstanceWidget, MouseEventListener));
- m_bMouseEventListener = true;
- }
+ m_xWidget->AddEventListener(LINK(this, SalInstanceWidget, EventListener));
+ m_bEventListener = true;
}
+}
- virtual void HandleEventListener(VclWindowEvent& rEvent);
- virtual bool HandleKeyEventListener(VclWindowEvent& rEvent);
- virtual void HandleMouseEventListener(VclSimpleEvent& rEvent);
-
- void set_background(const Color& rColor)
+// we want the ability to mark key events as handled, so use this variant
+// for those, we get all keystrokes in this case, so we will need to filter
+// them later
+void SalInstanceWidget::ensure_key_listener()
+{
+ if (!m_bKeyEventListener)
{
- m_xWidget->SetControlBackground(rColor);
- m_xWidget->SetBackground(m_xWidget->GetControlBackground());
- // turn off WB_CLIPCHILDREN otherwise the bg won't extend "under"
- // transparent children of the widget
- m_xWidget->SetStyle(m_xWidget->GetStyle() & ~WB_CLIPCHILDREN);
+ Application::AddKeyListener(LINK(this, SalInstanceWidget, KeyEventListener));
+ m_bKeyEventListener = true;
}
+}
-public:
- SalInstanceWidget(vcl::Window* pWidget, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
- : m_xWidget(pWidget)
- , m_pBuilder(pBuilder)
- , m_bTakeOwnership(bTakeOwnership)
- , m_bEventListener(false)
- , m_bKeyEventListener(false)
- , m_bMouseEventListener(false)
- , m_nBlockNotify(0)
+// we want the ability to know about mouse events that happen in our children
+// so use this variant, we will need to filter them later
+void SalInstanceWidget::ensure_mouse_listener()
+{
+ if (!m_bMouseEventListener)
{
+ Application::AddEventListener(LINK(this, SalInstanceWidget, MouseEventListener));
+ m_bMouseEventListener = true;
}
+}
- virtual void set_sensitive(bool sensitive) override
- {
- m_xWidget->Enable(sensitive);
- }
+void SalInstanceWidget::set_background(const Color& rColor)
+{
+ m_xWidget->SetControlBackground(rColor);
+ m_xWidget->SetBackground(m_xWidget->GetControlBackground());
+ // turn off WB_CLIPCHILDREN otherwise the bg won't extend "under"
+ // transparent children of the widget
+ m_xWidget->SetStyle(m_xWidget->GetStyle() & ~WB_CLIPCHILDREN);
+}
- virtual bool get_sensitive() const override
- {
- return m_xWidget->IsEnabled();
- }
+SalInstanceWidget::SalInstanceWidget(vcl::Window* pWidget, SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+ : m_xWidget(pWidget)
+ , m_pBuilder(pBuilder)
+ , m_bTakeOwnership(bTakeOwnership)
+ , m_bEventListener(false)
+ , m_bKeyEventListener(false)
+ , m_bMouseEventListener(false)
+ , m_nBlockNotify(0)
+{
+}
- virtual bool get_visible() const override
- {
- return m_xWidget->IsVisible();
- }
+void SalInstanceWidget::set_sensitive(bool sensitive)
+{
+ m_xWidget->Enable(sensitive);
+}
- virtual bool is_visible() const override
- {
- return m_xWidget->IsReallyVisible();
- }
+bool SalInstanceWidget::get_sensitive() const
+{
+ return m_xWidget->IsEnabled();
+}
- virtual void set_can_focus(bool bCanFocus) override
- {
- auto nStyle = m_xWidget->GetStyle() & ~(WB_TABSTOP | WB_NOTABSTOP);
- if (bCanFocus)
- nStyle |= WB_TABSTOP;
- else
- nStyle |= WB_NOTABSTOP;
- m_xWidget->SetStyle(nStyle);
- }
+bool SalInstanceWidget::get_visible() const
+{
+ return m_xWidget->IsVisible();
+}
- virtual void grab_focus() override
- {
- m_xWidget->GrabFocus();
- }
+bool SalInstanceWidget::is_visible() const
+{
+ return m_xWidget->IsReallyVisible();
+}
- virtual bool has_focus() const override
- {
- return m_xWidget->HasFocus();
- }
+void SalInstanceWidget::set_can_focus(bool bCanFocus)
+{
+ auto nStyle = m_xWidget->GetStyle() & ~(WB_TABSTOP | WB_NOTABSTOP);
+ if (bCanFocus)
+ nStyle |= WB_TABSTOP;
+ else
+ nStyle |= WB_NOTABSTOP;
+ m_xWidget->SetStyle(nStyle);
+}
- virtual bool is_active() const override
- {
- return m_xWidget->IsActive();
- }
+void SalInstanceWidget::grab_focus()
+{
+ m_xWidget->GrabFocus();
+}
- virtual void set_has_default(bool has_default) override
- {
- m_xWidget->set_property("has-default", OUString::boolean(has_default));
- }
+bool SalInstanceWidget::has_focus() const
+{
+ return m_xWidget->HasFocus();
+}
- virtual bool get_has_default() const override
- {
- return m_xWidget->GetStyle() & WB_DEFBUTTON;
- }
+bool SalInstanceWidget::is_active() const
+{
+ return m_xWidget->IsActive();
+}
- virtual void show() override
- {
- m_xWidget->Show();
- }
+void SalInstanceWidget::set_has_default(bool has_default)
+{
+ m_xWidget->set_property("has-default", OUString::boolean(has_default));
+}
- virtual void hide() override
- {
- m_xWidget->Hide();
- }
+bool SalInstanceWidget::get_has_default() const
+{
+ return m_xWidget->GetStyle() & WB_DEFBUTTON;
+}
- virtual void set_size_request(int nWidth, int nHeight) override
- {
- m_xWidget->set_width_request(nWidth);
- m_xWidget->set_height_request(nHeight);
- }
+void SalInstanceWidget::show()
+{
+ m_xWidget->Show();
+}
- virtual Size get_size_request() const override
- {
- return Size(m_xWidget->get_width_request(),
- m_xWidget->get_height_request());
- }
+void SalInstanceWidget::hide()
+{
+ m_xWidget->Hide();
+}
- virtual Size get_preferred_size() const override
- {
- return m_xWidget->get_preferred_size();
- }
+void SalInstanceWidget::set_size_request(int nWidth, int nHeight)
+{
+ m_xWidget->set_width_request(nWidth);
+ m_xWidget->set_height_request(nHeight);
+}
- virtual float get_approximate_digit_width() const override
- {
- return m_xWidget->approximate_digit_width();
- }
+Size SalInstanceWidget::get_size_request() const
+{
+ return Size(m_xWidget->get_width_request(),
+ m_xWidget->get_height_request());
+}
- virtual int get_text_height() const override
- {
- return m_xWidget->GetTextHeight();
- }
+Size SalInstanceWidget::get_preferred_size() const
+{
+ return m_xWidget->get_preferred_size();
+}
- virtual Size get_pixel_size(const OUString& rText) const override
- {
- //TODO, or do I want GetTextBoundRect ?, just using width at the moment anyway
- return Size(m_xWidget->GetTextWidth(rText), m_xWidget->GetTextHeight());
- }
+float SalInstanceWidget::get_approximate_digit_width() const
+{
+ return m_xWidget->approximate_digit_width();
+}
- virtual vcl::Font get_font() override
- {
- return m_xWidget->GetPointFont(*m_xWidget);
- }
+int SalInstanceWidget::get_text_height() const
+{
+ return m_xWidget->GetTextHeight();
+}
- virtual OString get_buildable_name() const override
- {
- return m_xWidget->get_id().toUtf8();
- }
+Size SalInstanceWidget::get_pixel_size(const OUString& rText) const
+{
+ //TODO, or do I want GetTextBoundRect ?, just using width at the moment anyway
+ return Size(m_xWidget->GetTextWidth(rText), m_xWidget->GetTextHeight());
+}
- virtual void set_help_id(const OString& rId) override
- {
- return m_xWidget->SetHelpId(rId);
- }
+vcl::Font SalInstanceWidget::get_font()
+{
+ return m_xWidget->GetPointFont(*m_xWidget);
+}
- virtual OString get_help_id() const override
- {
- return m_xWidget->GetHelpId();
- }
+OString SalInstanceWidget::get_buildable_name() const
+{
+ return m_xWidget->get_id().toUtf8();
+}
- virtual void set_grid_left_attach(int nAttach) override
- {
- m_xWidget->set_grid_left_attach(nAttach);
- }
+void SalInstanceWidget::set_help_id(const OString& rId)
+{
+ return m_xWidget->SetHelpId(rId);
+}
- virtual int get_grid_left_attach() const override
- {
- return m_xWidget->get_grid_left_attach();
- }
+OString SalInstanceWidget::get_help_id() const
+{
+ return m_xWidget->GetHelpId();
+}
- virtual void set_grid_width(int nCols) override
- {
- m_xWidget->set_grid_width(nCols);
- }
+void SalInstanceWidget::set_grid_left_attach(int nAttach)
+{
+ m_xWidget->set_grid_left_attach(nAttach);
+}
- virtual void set_grid_top_attach(int nAttach) override
- {
- m_xWidget->set_grid_top_attach(nAttach);
- }
+int SalInstanceWidget::get_grid_left_attach() const
+{
+ return m_xWidget->get_grid_left_attach();
+}
- virtual int get_grid_top_attach() const override
- {
- return m_xWidget->get_grid_top_attach();
- }
+void SalInstanceWidget::set_grid_width(int nCols)
+{
+ m_xWidget->set_grid_width(nCols);
+}
- virtual void set_hexpand(bool bExpand) override
- {
- m_xWidget->set_hexpand(bExpand);
- }
+void SalInstanceWidget::set_grid_top_attach(int nAttach)
+{
+ m_xWidget->set_grid_top_attach(nAttach);
+}
- virtual bool get_hexpand() const override
- {
- return m_xWidget->get_hexpand();
- }
+int SalInstanceWidget::get_grid_top_attach() const
+{
+ return m_xWidget->get_grid_top_attach();
+}
- virtual void set_vexpand(bool bExpand) override
- {
- m_xWidget->set_vexpand(bExpand);
- }
+void SalInstanceWidget::set_hexpand(bool bExpand)
+{
+ m_xWidget->set_hexpand(bExpand);
+}
- virtual bool get_vexpand() const override
- {
- return m_xWidget->get_vexpand();
- }
+bool SalInstanceWidget::get_hexpand() const
+{
+ return m_xWidget->get_hexpand();
+}
- virtual void set_secondary(bool bSecondary) override
- {
- m_xWidget->set_secondary(bSecondary);
- }
+void SalInstanceWidget::set_vexpand(bool bExpand)
+{
+ m_xWidget->set_vexpand(bExpand);
+}
- virtual void set_margin_top(int nMargin) override
- {
- m_xWidget->set_margin_top(nMargin);
- }
+bool SalInstanceWidget::get_vexpand() const
+{
+ return m_xWidget->get_vexpand();
+}
- virtual void set_margin_bottom(int nMargin) override
- {
- m_xWidget->set_margin_bottom(nMargin);
- }
+void SalInstanceWidget::set_secondary(bool bSecondary)
+{
+ m_xWidget->set_secondary(bSecondary);
+}
- virtual void set_margin_left(int nMargin) override
- {
- m_xWidget->set_margin_left(nMargin);
- }
+void SalInstanceWidget::set_margin_top(int nMargin)
+{
+ m_xWidget->set_margin_top(nMargin);
+}
- virtual void set_margin_right(int nMargin) override
- {
- m_xWidget->set_margin_bottom(nMargin);
- }
+void SalInstanceWidget::set_margin_bottom(int nMargin)
+{
+ m_xWidget->set_margin_bottom(nMargin);
+}
- virtual int get_margin_top() const override
- {
- return m_xWidget->get_margin_top();
- }
+void SalInstanceWidget::set_margin_left(int nMargin)
+{
+ m_xWidget->set_margin_left(nMargin);
+}
- virtual int get_margin_bottom() const override
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list