aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rwxr-xr-xgtk/ScintillaGTK.cxx13
-rwxr-xr-xgtk/ScintillaGTK.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 7b47d6348..92973a083 100755
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -231,6 +231,7 @@ ScintillaGTK::ScintillaGTK(_ScintillaObject *sci_) :
im_context(nullptr),
lastNonCommonScript(G_UNICODE_SCRIPT_INVALID_CODE),
settings(nullptr),
+ settingsHandlerId(0),
lastWheelMouseTime(0),
lastWheelMouseDirection(0),
wheelMouseIntensity(0),
@@ -277,6 +278,9 @@ ScintillaGTK::~ScintillaGTK() {
}
ClearPrimarySelection();
wPreedit.Destroy();
+ if (settingsHandlerId) {
+ g_signal_handler_disconnect(settings, settingsHandlerId);
+ }
if (settings) {
g_object_unref(settings);
}
@@ -357,6 +361,15 @@ void ScintillaGTK::RealizeThis(GtkWidget *widget) {
cursor = gdk_cursor_new_for_display(pdisplay, GDK_LEFT_PTR);
gdk_window_set_cursor(PWindow(scrollbarh), cursor);
UnRefCursor(cursor);
+
+ using NotifyLambda = void (*)(GObject *, GParamSpec *, ScintillaGTK *);
+ if (settings) {
+ settingsHandlerId = g_signal_connect(settings, "notify::gtk-xft-dpi",
+ G_CALLBACK(static_cast<NotifyLambda>([](GObject *, GParamSpec *, ScintillaGTK *sciThis) {
+ sciThis->InvalidateStyleRedraw();
+ })),
+ this);
+ }
}
void ScintillaGTK::Realize(GtkWidget *widget) {
diff --git a/gtk/ScintillaGTK.h b/gtk/ScintillaGTK.h
index da2f74c90..022471699 100755
--- a/gtk/ScintillaGTK.h
+++ b/gtk/ScintillaGTK.h
@@ -63,6 +63,7 @@ class ScintillaGTK : public ScintillaBase {
GUnicodeScript lastNonCommonScript;
GtkSettings *settings;
+ gulong settingsHandlerId;
// Wheel mouse support
unsigned int linesPerScroll;