summaryrefslogtreecommitdiff
path: root/gtk/gtkfontsel.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-11-07 17:59:04 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-11-07 17:59:04 +0000
commit100286ac57ce0011ed99ababcd311c99d7ca6343 (patch)
treede89edc4287c66956e2d363af1520061cd2cbd48 /gtk/gtkfontsel.c
parent74bab1cc425d780c5508d32a772a7b28216f2d74 (diff)
downloadgtk+-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.c55
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