summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2021-03-10 16:20:07 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2021-04-06 11:58:20 +0200
commitac1aefd5174258d9bcb41465ce566ed1a0819f3d (patch)
tree4032ae853c330f9360e58f7401294e37da517d43 /vcl
parent88cca903a88902e51c24853f1d10aeae39b39cdd (diff)
Extend ToolBarManager to build weld::Toolbar
- used for SubToolBarController eg. framework shape toolbar popup present in the sidebar fontwork panel - add separate implementation for vcl and weld based ToolBarManager - provide basic functionality for weld based (just inserting standard items with icons and controllers) - not implemented: addons items merging etc. Change-Id: I8e460f34abd512d70e95a1d484d728b7d809ce9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113387 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/salvtables.hxx2
-rw-r--r--vcl/source/app/salvtables.cxx9
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx14
3 files changed, 24 insertions, 1 deletions
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 1afffdfe280d..60041654521f 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1214,6 +1214,8 @@ public:
virtual void set_item_menu(const OString& rIdent, weld::Menu* pMenu) override;
+ virtual void insert_item(int pos, const OUString& rId) override;
+
virtual void insert_separator(int pos, const OUString& /*rId*/) override;
virtual int get_n_items() const override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 656211e13cf3..b185c0f00836 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -971,6 +971,13 @@ void SalInstanceToolbar::set_item_menu(const OString& rIdent, weld::Menu* pMenu)
m_aFloats[nId] = nullptr;
}
+void SalInstanceToolbar::insert_item(int pos, const OUString& rId)
+{
+ ToolBoxItemId nId(pos);
+ m_xToolBox->InsertItem(nId, rId, ToolBoxItemBits::ICON_ONLY);
+ m_xToolBox->SetItemCommand(nId, rId);
+}
+
void SalInstanceToolbar::insert_separator(int pos, const OUString& /*rId*/)
{
auto nInsertPos = pos == -1 ? ToolBox::APPEND : pos;
@@ -6644,6 +6651,8 @@ public:
{
}
+ ~SalInstancePopover() { signal_closed(); }
+
virtual void popup_at_rect(weld::Widget* pParent, const tools::Rectangle& rRect) override
{
SalInstanceWidget* pVclWidget = dynamic_cast<SalInstanceWidget*>(pParent);
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 377ac47461de..10df2ee6e317 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -8783,10 +8783,21 @@ public:
return aFind->second->get_active();
}
+ virtual void insert_item(int pos, const OUString& rId) override
+ {
+ OString sId = OUStringToOString(rId, RTL_TEXTENCODING_UTF8);
+ GtkToolItem* pItem = gtk_tool_button_new(nullptr, sId.getStr());
+ gtk_buildable_set_name(GTK_BUILDABLE(pItem), sId.getStr());
+ gtk_toolbar_insert(m_pToolbar, pItem, pos);
+ gtk_widget_show(GTK_WIDGET(pItem));
+ add_to_map(pItem, nullptr);
+ }
+
virtual void insert_separator(int pos, const OUString& rId) override
{
+ OString sId = OUStringToOString(rId, RTL_TEXTENCODING_UTF8);
GtkToolItem* pItem = gtk_separator_tool_item_new();
- gtk_buildable_set_name(GTK_BUILDABLE(pItem), OUStringToOString(rId, RTL_TEXTENCODING_UTF8).getStr());
+ gtk_buildable_set_name(GTK_BUILDABLE(pItem), sId.getStr());
gtk_toolbar_insert(m_pToolbar, pItem, pos);
gtk_widget_show(GTK_WIDGET(pItem));
}
@@ -16715,6 +16726,7 @@ public:
if (m_pClosedEvent)
Application::RemoveUserEvent(m_pClosedEvent);
g_signal_handler_disconnect(m_pPopover, m_nSignalId);
+ signal_closed();
}
};