diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-11-07 17:59:04 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-11-07 17:59:04 +0000 |
commit | 100286ac57ce0011ed99ababcd311c99d7ca6343 (patch) | |
tree | de89edc4287c66956e2d363af1520061cd2cbd48 /gtk/gtkfontsel.c | |
parent | 74bab1cc425d780c5508d32a772a7b28216f2d74 (diff) | |
download | gtk+-100286ac57ce0011ed99ababcd311c99d7ca6343.tar.gz |
Add ::screen-changed signal.
Thu Nov 7 12:53:08 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.[ch] gtk/gtkwindow.c gtk/gtkinvisible.c:
Add ::screen-changed signal.
* gtk/gtkfontsel.c gtk/gtktoolbar.c: Use ::screen-changed
signal to simplify logic.
Diffstat (limited to 'gtk/gtkfontsel.c')
-rw-r--r-- | gtk/gtkfontsel.c | 55 |
1 files changed, 6 insertions, 49 deletions
diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c index 63a8fa981a..d1bb6a2243 100644 --- a/gtk/gtkfontsel.c +++ b/gtk/gtkfontsel.c @@ -118,8 +118,8 @@ static void gtk_font_selection_get_property (GObject *object, GParamSpec *pspec); static void gtk_font_selection_init (GtkFontSelection *fontsel); static void gtk_font_selection_finalize (GObject *object); -static void gtk_font_selection_hierarchy_changed (GtkWidget *widget, - GtkWidget *previous_toplevel); +static void gtk_font_selection_screen_changed (GtkWidget *widget, + GdkScreen *previous_screen); /* These are the callbacks & related functions. */ static void gtk_font_selection_select_font (GtkTreeSelection *selection, @@ -200,7 +200,7 @@ gtk_font_selection_class_init (GtkFontSelectionClass *klass) gobject_class->set_property = gtk_font_selection_set_property; gobject_class->get_property = gtk_font_selection_get_property; - widget_class->hierarchy_changed = gtk_font_selection_hierarchy_changed; + widget_class->screen_changed = gtk_font_selection_screen_changed; g_object_class_install_property (gobject_class, PROP_FONT_NAME, @@ -522,60 +522,17 @@ gtk_font_selection_finalize (GObject *object) } static void -fontsel_screen_changed (GtkFontSelection *fontsel) +gtk_font_selection_screen_changed (GtkWidget *widget, + GdkScreen *previous_screen) { - GdkScreen *old_screen = g_object_get_data (G_OBJECT (fontsel), "gtk-font-selection-screen"); - GdkScreen *screen; + GtkFontSelection *fontsel = GTK_FONT_SELECTION (widget); if (gtk_widget_has_screen (GTK_WIDGET (fontsel))) - screen = gtk_widget_get_screen (GTK_WIDGET (fontsel)); - else - screen = NULL; - - if (screen == old_screen) - return; - - if (fontsel->font) { - gdk_font_unref (fontsel->font); - fontsel->font = NULL; - } - - if (old_screen) - g_object_unref (old_screen); - - if (screen) - { - g_object_ref (screen); - g_object_set_data (G_OBJECT (fontsel), "gtk-font-selection-screen", screen); - gtk_font_selection_show_available_fonts (fontsel); gtk_font_selection_show_available_sizes (fontsel, TRUE); gtk_font_selection_show_available_styles (fontsel); } - else - g_object_set_data (G_OBJECT (fontsel), "gtk-font-selection-screen", NULL); -} - -static void -gtk_font_selection_hierarchy_changed (GtkWidget *widget, - GtkWidget *previous_toplevel) -{ - GtkWidget *toplevel; - - if (previous_toplevel) - g_signal_handlers_disconnect_by_func (previous_toplevel, - fontsel_screen_changed, - widget); - - toplevel = gtk_widget_get_toplevel (widget); - if (GTK_WIDGET_TOPLEVEL (toplevel)) - g_signal_connect_swapped (toplevel, - "notify::screen", - G_CALLBACK (fontsel_screen_changed), - widget); - - fontsel_screen_changed (GTK_FONT_SELECTION (widget)); } static void |