aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk/ScintillaGTK.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/ScintillaGTK.cxx')
-rwxr-xr-xgtk/ScintillaGTK.cxx36
1 files changed, 24 insertions, 12 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 0a054c8d1..7b47d6348 100755
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -179,6 +179,18 @@ GdkAtom SelectionOfGSD(GtkSelectionData *sd) noexcept {
return gtk_selection_data_get_selection(sd);
}
+bool SettingGet(GtkSettings *settings, const gchar *name, gpointer value) noexcept {
+ if (!settings) {
+ return false;
+ }
+ if (!g_object_class_find_property(G_OBJECT_GET_CLASS(
+ G_OBJECT(settings)), name)) {
+ return false;
+ }
+ g_object_get(G_OBJECT(settings), name, value, nullptr);
+ return true;
+}
+
}
FontOptions::FontOptions(GtkWidget *widget) noexcept {
@@ -218,6 +230,7 @@ ScintillaGTK::ScintillaGTK(_ScintillaObject *sci_) :
preeditInitialized(false),
im_context(nullptr),
lastNonCommonScript(G_UNICODE_SCRIPT_INVALID_CODE),
+ settings(nullptr),
lastWheelMouseTime(0),
lastWheelMouseDirection(0),
wheelMouseIntensity(0),
@@ -264,6 +277,9 @@ ScintillaGTK::~ScintillaGTK() {
}
ClearPrimarySelection();
wPreedit.Destroy();
+ if (settings) {
+ g_object_unref(settings);
+ }
}
void ScintillaGTK::RealizeThis(GtkWidget *widget) {
@@ -669,20 +685,16 @@ void ScintillaGTK::Init() {
gtk_container_add(GTK_CONTAINER(PWidget(wPreedit)), predrw);
gtk_widget_show(predrw);
+ settings = gtk_settings_get_default();
+
// Set caret period based on GTK settings
gboolean blinkOn = false;
- if (g_object_class_find_property(G_OBJECT_GET_CLASS(
- G_OBJECT(gtk_settings_get_default())), "gtk-cursor-blink")) {
- g_object_get(G_OBJECT(
- gtk_settings_get_default()), "gtk-cursor-blink", &blinkOn, nullptr);
- }
- if (blinkOn &&
- g_object_class_find_property(G_OBJECT_GET_CLASS(
- G_OBJECT(gtk_settings_get_default())), "gtk-cursor-blink-time")) {
- gint value;
- g_object_get(G_OBJECT(
- gtk_settings_get_default()), "gtk-cursor-blink-time", &value, nullptr);
- caret.period = static_cast<int>(value / 1.75);
+ SettingGet(settings, "gtk-cursor-blink", &blinkOn);
+ if (blinkOn) {
+ gint value = 500;
+ if (SettingGet(settings, "gtk-cursor-blink-time", &value)) {
+ caret.period = static_cast<int>(value / 1.75);
+ }
} else {
caret.period = 0;
}