diff options
Diffstat (limited to 'meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff')
-rw-r--r-- | meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff b/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff new file mode 100644 index 0000000000..a67feac810 --- /dev/null +++ b/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff | |||
@@ -0,0 +1,78 @@ | |||
1 | --- gtk+-2.6.4/gtk/gtkwindow.c 2005-02-21 06:21:49.000000000 +0200 | ||
2 | +++ gtk+-2.6.4/gtk/gtkwindow.c 2005-04-06 16:19:38.407699504 +0300 | ||
3 | @@ -166,6 +166,7 @@ | ||
4 | guint skips_taskbar : 1; | ||
5 | guint skips_pager : 1; | ||
6 | guint accept_focus : 1; | ||
7 | + GtkWidget *prev_focus_widget; | ||
8 | guint focus_on_map : 1; | ||
9 | }; | ||
10 | |||
11 | @@ -293,6 +294,9 @@ | ||
12 | GValue *value, | ||
13 | GParamSpec *pspec); | ||
14 | |||
15 | +static void gtk_window_focus_weak_notify (GtkWindow *window, | ||
16 | + GtkWidget *widget); | ||
17 | +static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window); | ||
18 | |||
19 | GType | ||
20 | gtk_window_get_type (void) | ||
21 | @@ -771,6 +775,7 @@ | ||
22 | window->decorated = TRUE; | ||
23 | window->mnemonic_modifier = GDK_MOD1_MASK; | ||
24 | window->screen = gdk_screen_get_default (); | ||
25 | + priv->prev_focus_widget = NULL; | ||
26 | |||
27 | priv->accept_focus = TRUE; | ||
28 | priv->focus_on_map = TRUE; | ||
29 | @@ -7505,3 +7510,49 @@ | ||
30 | } | ||
31 | |||
32 | #endif | ||
33 | + | ||
34 | +/*Hildon focus handling*/ | ||
35 | +GtkWidget *gtk_window_get_prev_focus_widget( GtkWindow *window ) | ||
36 | +{ | ||
37 | + g_return_val_if_fail( GTK_IS_WINDOW(window), NULL ); | ||
38 | + return GTK_WINDOW_GET_PRIVATE(window)->prev_focus_widget; | ||
39 | +} | ||
40 | + | ||
41 | +static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window) | ||
42 | +{ | ||
43 | + GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); | ||
44 | + if (priv->prev_focus_widget == widget) | ||
45 | + g_object_weak_unref(G_OBJECT(widget), | ||
46 | + (GWeakNotify)gtk_window_focus_weak_notify, | ||
47 | + (gpointer)window); | ||
48 | +} | ||
49 | + | ||
50 | +void gtk_window_set_prev_focus_widget( GtkWindow *window, GtkWidget *widget ) | ||
51 | +{ | ||
52 | + GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); | ||
53 | + g_return_if_fail(GTK_IS_WINDOW(window)); | ||
54 | + g_return_if_fail(GTK_IS_WIDGET(widget)); | ||
55 | + | ||
56 | + if (priv->prev_focus_widget) | ||
57 | + { | ||
58 | + g_object_weak_unref(G_OBJECT(window), (GWeakNotify)gtk_window_weak_notify, | ||
59 | + (gpointer)priv->prev_focus_widget); | ||
60 | + g_object_weak_unref(G_OBJECT(priv->prev_focus_widget), | ||
61 | + (GWeakNotify)gtk_window_focus_weak_notify, | ||
62 | + (gpointer)window); | ||
63 | + } | ||
64 | + | ||
65 | + priv->prev_focus_widget = widget; | ||
66 | + | ||
67 | + g_object_weak_ref(G_OBJECT(window), (GWeakNotify)gtk_window_weak_notify, | ||
68 | + (gpointer)widget); | ||
69 | + g_object_weak_ref(G_OBJECT(widget), (GWeakNotify)gtk_window_focus_weak_notify, | ||
70 | + (gpointer)window); | ||
71 | +} | ||
72 | + | ||
73 | +static void gtk_window_focus_weak_notify(GtkWindow *window, GtkWidget *widget) | ||
74 | +{ | ||
75 | + GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window); | ||
76 | + priv->prev_focus_widget = window->focus_widget; | ||
77 | +} | ||
78 | + | ||