]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/gtk+/gtk+-2.6.4-1.osso7/gtkwindow.c.diff
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / gtk+ / gtk+-2.6.4-1.osso7 / gtkwindow.c.diff
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 +