summaryrefslogtreecommitdiffstats
path: root/meta/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff
diff options
context:
space:
mode:
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.diff78
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+