diff options
author | Matthias Clasen <mclasen@redhat.com> | 2013-08-16 22:45:13 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2013-08-16 22:45:13 -0400 |
commit | f8412eca34be6e2e655ad3e09bd97fa2bdcbdae0 (patch) | |
tree | 940f0810dc7206b1ad289dae091bf95608a6e788 /gtk/gtkentry.c | |
parent | 7b4f82ccc6c180b809cd3b7b6582394ce741a14e (diff) | |
download | gtk+-f8412eca34be6e2e655ad3e09bd97fa2bdcbdae0.tar.gz |
Revert "Deprecate and ignore the cursor blink settings"
This reverts commit b2e666bf8f297eb998331fa8ce0062ce7a5198fa.
We need to keep cursor blinking configurable for accessibility
reasons.
https://bugzilla.gnome.org/show_bug.cgi?id=704134
Conflicts:
gdk/win32/gdkproperty-win32.c
gdk/x11/gdksettings.c
gtk/gtksettings.c
gtk/gtktextview.c
Diffstat (limited to 'gtk/gtkentry.c')
-rw-r--r-- | gtk/gtkentry.c | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 9283d8b875..7df6538976 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -121,9 +121,6 @@ #define MAX_ICONS 2 -#define CURSOR_BLINK_TIME 1200 -#define CURSOR_BLINK_TIMEOUT_SEC 10 - #define IS_VALID_ICON_POSITION(pos) \ ((pos) == GTK_ENTRY_ICON_PRIMARY || \ (pos) == GTK_ENTRY_ICON_SECONDARY) @@ -9760,7 +9757,15 @@ cursor_blinks (GtkEntry *entry) if (gtk_widget_has_focus (GTK_WIDGET (entry)) && priv->editable && priv->selection_bound == priv->current_pos) - return TRUE; + { + GtkSettings *settings; + gboolean blink; + + settings = gtk_widget_get_settings (GTK_WIDGET (entry)); + g_object_get (settings, "gtk-cursor-blink", &blink, NULL); + + return blink; + } else return FALSE; } @@ -9777,6 +9782,28 @@ get_middle_click_paste (GtkEntry *entry) return paste; } +static gint +get_cursor_time (GtkEntry *entry) +{ + GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (entry)); + gint time; + + g_object_get (settings, "gtk-cursor-blink-time", &time, NULL); + + return time; +} + +static gint +get_cursor_blink_timeout (GtkEntry *entry) +{ + GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (entry)); + gint timeout; + + g_object_get (settings, "gtk-cursor-blink-timeout", &timeout, NULL); + + return timeout; +} + static void show_cursor (GtkEntry *entry) { @@ -9817,6 +9844,7 @@ blink_cb (gpointer data) { GtkEntry *entry; GtkEntryPrivate *priv; + gint blink_timeout; entry = GTK_ENTRY (data); priv = entry->priv; @@ -9834,8 +9862,9 @@ blink_cb (gpointer data) g_assert (priv->selection_bound == priv->current_pos); - if (priv->blink_time > 1000 * CURSOR_BLINK_TIMEOUT_SEC && - CURSOR_BLINK_TIMEOUT_SEC < G_MAXINT/1000) + blink_timeout = get_cursor_blink_timeout (entry); + if (priv->blink_time > 1000 * blink_timeout && + blink_timeout < G_MAXINT/1000) { /* we've blinked enough without the user doing anything, stop blinking */ show_cursor (entry); @@ -9844,15 +9873,15 @@ blink_cb (gpointer data) else if (priv->cursor_visible) { hide_cursor (entry); - priv->blink_timeout = gdk_threads_add_timeout (CURSOR_BLINK_TIME * CURSOR_OFF_MULTIPLIER / CURSOR_DIVIDER, + priv->blink_timeout = gdk_threads_add_timeout (get_cursor_time (entry) * CURSOR_OFF_MULTIPLIER / CURSOR_DIVIDER, blink_cb, entry); } else { show_cursor (entry); - priv->blink_time += CURSOR_BLINK_TIME; - priv->blink_timeout = gdk_threads_add_timeout (CURSOR_BLINK_TIME * CURSOR_ON_MULTIPLIER / CURSOR_DIVIDER, + priv->blink_time += get_cursor_time (entry); + priv->blink_timeout = gdk_threads_add_timeout (get_cursor_time (entry) * CURSOR_ON_MULTIPLIER / CURSOR_DIVIDER, blink_cb, entry); } @@ -9871,7 +9900,7 @@ gtk_entry_check_cursor_blink (GtkEntry *entry) if (!priv->blink_timeout) { show_cursor (entry); - priv->blink_timeout = gdk_threads_add_timeout (CURSOR_BLINK_TIME * CURSOR_ON_MULTIPLIER / CURSOR_DIVIDER, + priv->blink_timeout = gdk_threads_add_timeout (get_cursor_time (entry) * CURSOR_ON_MULTIPLIER / CURSOR_DIVIDER, blink_cb, entry); } @@ -9898,7 +9927,7 @@ gtk_entry_pend_cursor_blink (GtkEntry *entry) if (priv->blink_timeout != 0) g_source_remove (priv->blink_timeout); - priv->blink_timeout = gdk_threads_add_timeout (CURSOR_BLINK_TIME * CURSOR_PEND_MULTIPLIER / CURSOR_DIVIDER, + priv->blink_timeout = gdk_threads_add_timeout (get_cursor_time (entry) * CURSOR_PEND_MULTIPLIER / CURSOR_DIVIDER, blink_cb, entry); show_cursor (entry); |