summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-10-02 12:15:24 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-10-03 09:50:45 +0200
commitea7b290a691f33caa3327bd1cb57b97a92c94dc7 (patch)
tree8c8ebddc42674caac4b9cdef431306cccc0618d8 /vcl
parent2b402bbd34624c4759fa411c98bb60da1dd11e76 (diff)
weld SwSvxNumBulletTabDialog
Change-Id: I8ea74dc15bba04c0615e61c069407160a7b95c4c Reviewed-on: https://gerrit.libreoffice.org/61242 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx105
1 files changed, 65 insertions, 40 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index ada894820f59..eac52843af19 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1692,6 +1692,43 @@ public:
}
};
+namespace
+{
+ GdkPixbuf* load_icon_by_name(const OUString& rIconName, const OUString& rIconTheme, const OUString& rUILang)
+ {
+ GdkPixbuf* pixbuf = nullptr;
+ auto xMemStm = ImageTree::get().getImageStream(rIconName, rIconTheme, rUILang);
+ if (xMemStm)
+ {
+ GdkPixbufLoader *pixbuf_loader = gdk_pixbuf_loader_new();
+ gdk_pixbuf_loader_write(pixbuf_loader, static_cast<const guchar*>(xMemStm->GetData()),
+ xMemStm->Seek(STREAM_SEEK_TO_END), nullptr);
+ gdk_pixbuf_loader_close(pixbuf_loader, nullptr);
+ pixbuf = gdk_pixbuf_loader_get_pixbuf(pixbuf_loader);
+ if (pixbuf)
+ g_object_ref(pixbuf);
+ g_object_unref(pixbuf_loader);
+ }
+ return pixbuf;
+ }
+
+ GdkPixbuf* load_icon_by_name(const OUString& rIconName)
+ {
+ OUString sIconTheme = Application::GetSettings().GetStyleSettings().DetermineIconTheme();
+ OUString sUILang = Application::GetSettings().GetUILanguageTag().getBcp47();
+ return load_icon_by_name(rIconName, sIconTheme, sUILang);
+ }
+
+ GdkPixbuf* load_icon_from_surface(VirtualDevice& rDevice)
+ {
+ Size aSize(rDevice.GetOutputSizePixel());
+ cairo_surface_t* surface = get_underlying_cairo_surface(rDevice);
+ double m_fXScale, m_fYScale;
+ cairo_surface_get_device_scale(surface, &m_fXScale, &m_fYScale);
+ return gdk_pixbuf_get_from_surface(surface, 0, 0, aSize.Width() * m_fXScale, aSize.Height() * m_fYScale);
+ }
+}
+
class GtkInstanceMenu : public MenuHelper, public virtual weld::Menu
{
protected:
@@ -1789,13 +1826,38 @@ public:
show_item(rIdent, bShow);
}
-
virtual void insert(int pos, const OUString& rId, const OUString& rStr,
- const OUString* /*pIconName*/, VirtualDevice* /*pImageSufface*/) override
+ const OUString* pIconName, VirtualDevice* pImageSufface) override
{
- GtkWidget *pItem = gtk_menu_item_new_with_label(MapToGtkAccelerator(rStr).getStr());
+ GtkWidget* pImage = nullptr;
+ if (pIconName)
+ {
+ GdkPixbuf* pixbuf = load_icon_by_name(*pIconName);
+ if (!pixbuf)
+ {
+ pImage = gtk_image_new_from_pixbuf(pixbuf);
+ g_object_unref(pixbuf);
+ }
+ }
+ else if (pImageSufface)
+ pImage = gtk_image_new_from_surface(get_underlying_cairo_surface(*pImageSufface));
+
+ GtkWidget *pItem;
+ if (pImage)
+ {
+ GtkWidget *pBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+ GtkWidget *pLabel = gtk_label_new(MapToGtkAccelerator(rStr).getStr());
+ pItem = gtk_menu_item_new();
+ gtk_container_add(GTK_CONTAINER(pBox), pImage);
+ gtk_container_add(GTK_CONTAINER(pBox), pLabel);
+ gtk_container_add(GTK_CONTAINER(pItem), pBox);
+ gtk_widget_show_all(pItem);
+ }
+ else
+ pItem = gtk_menu_item_new_with_label(MapToGtkAccelerator(rStr).getStr());
gtk_buildable_set_name(GTK_BUILDABLE(pItem), OUStringToOString(rId, RTL_TEXTENCODING_UTF8).getStr());
gtk_menu_shell_append(GTK_MENU_SHELL(m_pMenu), pItem);
+ gtk_widget_show(pItem);
add_to_map(GTK_MENU_ITEM(pItem));
if (pos != -1)
gtk_menu_reorder_child(m_pMenu, pItem, pos);
@@ -2763,43 +2825,6 @@ public:
}
};
-namespace
-{
- GdkPixbuf* load_icon_by_name(const OUString& rIconName, const OUString& rIconTheme, const OUString& rUILang)
- {
- GdkPixbuf* pixbuf = nullptr;
- auto xMemStm = ImageTree::get().getImageStream(rIconName, rIconTheme, rUILang);
- if (xMemStm)
- {
- GdkPixbufLoader *pixbuf_loader = gdk_pixbuf_loader_new();
- gdk_pixbuf_loader_write(pixbuf_loader, static_cast<const guchar*>(xMemStm->GetData()),
- xMemStm->Seek(STREAM_SEEK_TO_END), nullptr);
- gdk_pixbuf_loader_close(pixbuf_loader, nullptr);
- pixbuf = gdk_pixbuf_loader_get_pixbuf(pixbuf_loader);
- if (pixbuf)
- g_object_ref(pixbuf);
- g_object_unref(pixbuf_loader);
- }
- return pixbuf;
- }
-
- GdkPixbuf* load_icon_by_name(const OUString& rIconName)
- {
- OUString sIconTheme = Application::GetSettings().GetStyleSettings().DetermineIconTheme();
- OUString sUILang = Application::GetSettings().GetUILanguageTag().getBcp47();
- return load_icon_by_name(rIconName, sIconTheme, sUILang);
- }
-
- GdkPixbuf* load_icon_from_surface(VirtualDevice& rDevice)
- {
- Size aSize(rDevice.GetOutputSizePixel());
- cairo_surface_t* surface = get_underlying_cairo_surface(rDevice);
- double m_fXScale, m_fYScale;
- cairo_surface_get_device_scale(surface, &m_fXScale, &m_fYScale);
- return gdk_pixbuf_get_from_surface(surface, 0, 0, aSize.Width() * m_fXScale, aSize.Height() * m_fYScale);
- }
-}
-
class GtkInstanceButton : public GtkInstanceContainer, public virtual weld::Button
{
private: