summaryrefslogtreecommitdiff
path: root/gtk/gtkradiobutton.c
diff options
context:
space:
mode:
authorMichael Natterer <mitch@imendio.com>2006-11-16 14:32:47 +0000
committerMichael Natterer <mitch@src.gnome.org>2006-11-16 14:32:47 +0000
commitaf0da9f22111c6d8d631e7aac6deaf0937d34b73 (patch)
treef474eb5be7e6932b0be14dabe1e9caa94143337c /gtk/gtkradiobutton.c
parent7f374a74bae63c9c1011c2a5a9c99de4012e7c61 (diff)
downloadgtk+-af0da9f22111c6d8d631e7aac6deaf0937d34b73.tar.gz
don't use gtk_widget_keynav_failed(). Instead, look at
2006-11-16 Michael Natterer <mitch@imendio.com> * gtk/gtkradiobutton.c (gtk_radio_button_focus): don't use gtk_widget_keynav_failed(). Instead, look at gtk-keynav-cursor-only and gtk-keynav-wrap-around and wrap around, beep or continue outside the group manually (bug #322640).
Diffstat (limited to 'gtk/gtkradiobutton.c')
-rw-r--r--gtk/gtkradiobutton.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c
index 91bedc3f81..529a025886 100644
--- a/gtk/gtkradiobutton.c
+++ b/gtk/gtkradiobutton.c
@@ -445,9 +445,12 @@ gtk_radio_button_focus (GtkWidget *widget,
if (gtk_widget_is_focus (widget))
{
+ GtkSettings *settings = gtk_widget_get_settings (widget);
GSList *focus_list, *tmp_list;
GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
GtkWidget *new_focus = NULL;
+ gboolean cursor_only;
+ gboolean wrap_around;
switch (direction)
{
@@ -489,14 +492,26 @@ gtk_radio_button_focus (GtkWidget *widget,
}
}
+ g_object_get (settings,
+ "gtk-keynav-cursor-only", &cursor_only,
+ "gtk-keynav-wrap-around", &wrap_around,
+ NULL);
+
if (!new_focus)
{
- if (!gtk_widget_keynav_failed (widget, direction))
+ if (cursor_only)
{
g_slist_free (focus_list);
return FALSE;
}
+ if (!wrap_around)
+ {
+ g_slist_free (focus_list);
+ gtk_widget_error_bell (widget);
+ return TRUE;
+ }
+
tmp_list = focus_list;
while (tmp_list)
@@ -517,13 +532,6 @@ gtk_radio_button_focus (GtkWidget *widget,
if (new_focus)
{
- GtkSettings *settings = gtk_widget_get_settings (widget);
- gboolean cursor_only;
-
- g_object_get (settings,
- "gtk-keynav-cursor-only", &cursor_only,
- NULL);
-
gtk_widget_grab_focus (new_focus);
if (!cursor_only)