[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Tue May 4 14:03:43 UTC 2021
vcl/unx/gtk3/gtk3gtkinst.cxx | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
New commits:
commit 8db72947d7bd6eda08b95a13b63a5f0503564639
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue May 4 11:44:49 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue May 4 16:02:59 2021 +0200
Related: tdf#141857 send style-updated after app settings are updated
so the libreoffice settings are updated before the widget updates,
otherwise the app settings are the old settings when the widget updates
Change-Id: Id32dd55a1e5102cc707d6ee74eddfae2247e105a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115070
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2ecd35cb89b5..65a530fd3370 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -13841,7 +13841,6 @@ private:
std::unique_ptr<IMHandler> m_xIMHandler;
cairo_surface_t* m_pSurface;
gulong m_nDrawSignalId;
- gulong m_nStyleUpdatedSignalId;
gulong m_nQueryTooltip;
gulong m_nPopupMenu;
gulong m_nScrollEvent;
@@ -13886,12 +13885,6 @@ private:
m_pSurface = get_underlying_cairo_surface(*m_xDevice);
GtkInstanceWidget::signal_size_allocate(nWidth, nHeight);
}
- static void signalStyleUpdated(GtkWidget*, gpointer widget)
- {
- GtkInstanceDrawingArea* pThis = static_cast<GtkInstanceDrawingArea*>(widget);
- SolarMutexGuard aGuard;
- return pThis->signal_style_updated();
- }
void signal_style_updated()
{
m_aStyleUpdatedHdl.Call(*this);
@@ -13952,6 +13945,7 @@ private:
GtkInstanceDrawingArea* pThis = static_cast<GtkInstanceDrawingArea*>(widget);
return pThis->signal_scroll(pEvent);
}
+ DECL_LINK(SettingsChangedHdl, VclSimpleEvent&, void);
public:
GtkInstanceDrawingArea(GtkDrawingArea* pDrawingArea, GtkInstanceBuilder* pBuilder, const a11yref& rA11y, bool bTakeOwnership)
: GtkInstanceWidget(GTK_WIDGET(pDrawingArea), pBuilder, bTakeOwnership)
@@ -13961,7 +13955,6 @@ public:
, m_xDevice(DeviceFormat::DEFAULT)
, m_pSurface(nullptr)
, m_nDrawSignalId(g_signal_connect(m_pDrawingArea, "draw", G_CALLBACK(signalDraw), this))
- , m_nStyleUpdatedSignalId(g_signal_connect(m_pDrawingArea,"style-updated", G_CALLBACK(signalStyleUpdated), this))
, m_nQueryTooltip(g_signal_connect(m_pDrawingArea, "query-tooltip", G_CALLBACK(signalQueryTooltip), this))
, m_nPopupMenu(g_signal_connect(m_pDrawingArea, "popup-menu", G_CALLBACK(signalPopupMenu), this))
, m_nScrollEvent(g_signal_connect(m_pDrawingArea, "scroll-event", G_CALLBACK(signalScroll), this))
@@ -13969,6 +13962,8 @@ public:
gtk_widget_set_has_tooltip(m_pWidget, true);
g_object_set_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea", this);
m_xDevice->EnableRTL(get_direction());
+
+ Application::AddEventListener(LINK(this, GtkInstanceDrawingArea, SettingsChangedHdl));
}
AtkObject* GetAtkObject(AtkObject* pDefaultAccessible)
@@ -14112,6 +14107,8 @@ public:
virtual ~GtkInstanceDrawingArea() override
{
+ Application::RemoveEventListener(LINK(this, GtkInstanceDrawingArea, SettingsChangedHdl));
+
g_object_steal_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea");
if (m_pAccessible)
g_object_unref(m_pAccessible);
@@ -14121,7 +14118,6 @@ public:
g_signal_handler_disconnect(m_pDrawingArea, m_nScrollEvent);
g_signal_handler_disconnect(m_pDrawingArea, m_nPopupMenu);
g_signal_handler_disconnect(m_pDrawingArea, m_nQueryTooltip);
- g_signal_handler_disconnect(m_pDrawingArea, m_nStyleUpdatedSignalId);
g_signal_handler_disconnect(m_pDrawingArea, m_nDrawSignalId);
}
@@ -14143,6 +14139,16 @@ public:
}
};
+IMPL_LINK(GtkInstanceDrawingArea, SettingsChangedHdl, VclSimpleEvent&, rEvent, void)
+{
+ if (rEvent.GetId() != VclEventId::ApplicationDataChanged)
+ return;
+
+ DataChangedEvent* pData = static_cast<DataChangedEvent*>(static_cast<VclWindowEvent&>(rEvent).GetData());
+ if (pData->GetType() == DataChangedEventType::SETTINGS)
+ signal_style_updated();
+}
+
class IMHandler
{
private:
More information about the Libreoffice-commits
mailing list