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
4 guint skips_taskbar : 1;
6 guint accept_focus : 1;
7 + GtkWidget *prev_focus_widget;
8 guint focus_on_map : 1;
15 +static void gtk_window_focus_weak_notify (GtkWindow *window,
17 +static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window);
20 gtk_window_get_type (void)
22 window->decorated = TRUE;
23 window->mnemonic_modifier = GDK_MOD1_MASK;
24 window->screen = gdk_screen_get_default ();
25 + priv->prev_focus_widget = NULL;
27 priv->accept_focus = TRUE;
28 priv->focus_on_map = TRUE;
29 @@ -7505,3 +7510,49 @@
34 +/*Hildon focus handling*/
35 +GtkWidget *gtk_window_get_prev_focus_widget( GtkWindow *window )
37 + g_return_val_if_fail( GTK_IS_WINDOW(window), NULL );
38 + return GTK_WINDOW_GET_PRIVATE(window)->prev_focus_widget;
41 +static void gtk_window_weak_notify(GtkWidget *widget, GtkWindow *window)
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,
50 +void gtk_window_set_prev_focus_widget( GtkWindow *window, GtkWidget *widget )
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));
56 + if (priv->prev_focus_widget)
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,
65 + priv->prev_focus_widget = widget;
67 + g_object_weak_ref(G_OBJECT(window), (GWeakNotify)gtk_window_weak_notify,
69 + g_object_weak_ref(G_OBJECT(widget), (GWeakNotify)gtk_window_focus_weak_notify,
73 +static void gtk_window_focus_weak_notify(GtkWindow *window, GtkWidget *widget)
75 + GtkWindowPrivate *priv = GTK_WINDOW_GET_PRIVATE(window);
76 + priv->prev_focus_widget = window->focus_widget;