diff options
Diffstat (limited to 'src/ui/frames.c')
-rw-r--r-- | src/ui/frames.c | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/src/ui/frames.c b/src/ui/frames.c index 5c19bd4c..9d4fd68d 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -41,19 +41,12 @@ #if GTK_CHECK_VERSION(3, 0, 0) #include <cairo-xlib.h> - #define GtkObject GtkWidget - #define GTK_OBJECT_CLASS GTK_WIDGET_CLASS #define GdkRegion cairo_region_t - #define GdkRegion cairo_region_t - #define gdk_region_new cairo_region_create - #define gdk_region_subtract cairo_region_subtract #define gdk_region_destroy cairo_region_destroy - #define gdk_region_union_with_rect cairo_region_union_rectangle #define gdk_region_rectangle cairo_region_create_rectangle #define gdk_region_offset cairo_region_translate #define gdk_region_intersect cairo_region_intersect - #define gdk_region_copy cairo_region_copy - G_DEFINE_TYPE (MetaFrames, meta_frames, GTK_TYPE_WINDOW); + G_DEFINE_TYPE (MetaFrames, meta_frames, GTK_TYPE_INVISIBLE); #define parent_class meta_frames_parent_class #define GTK_WIDGET_REALIZED gtk_widget_get_realized #endif @@ -62,7 +55,11 @@ static void meta_frames_class_init (MetaFramesClass *klass); static void meta_frames_init (MetaFrames *frames); +#if GTK_CHECK_VERSION(3, 0, 0) +static void meta_frames_destroy (GtkWidget *object); +#else static void meta_frames_destroy (GtkObject *object); +#endif static void meta_frames_finalize (GObject *object); static void meta_frames_style_set (GtkWidget *widget, GtkStyle *prev_style); @@ -134,27 +131,7 @@ static void invalidate_all_caches (MetaFrames *frames); static void invalidate_whole_window (MetaFrames *frames, MetaUIFrame *frame); -#if GTK_CHECK_VERSION(3, 0, 0) - -static GObject * -meta_frames_constructor (GType gtype, - guint n_properties, - GObjectConstructParam *properties) -{ - GObject *object; - GObjectClass *gobject_class; - - gobject_class = G_OBJECT_CLASS (meta_frames_parent_class); - object = gobject_class->constructor (gtype, n_properties, properties); - - g_object_set (object, - "type", GTK_WINDOW_POPUP, - NULL); - - return object; -} - -#else +#if !GTK_CHECK_VERSION(3, 0, 0) static GtkWidgetClass *parent_class = NULL; @@ -200,11 +177,15 @@ meta_frames_class_init (MetaFramesClass *class) #endif widget_class = (GtkWidgetClass*) class; +#if !GTK_CHECK_VERSION (3, 0, 0) parent_class = g_type_class_peek_parent (class); +#endif gobject_class->finalize = meta_frames_finalize; #if !GTK_CHECK_VERSION(3, 0, 0) object_class->destroy = meta_frames_destroy; + #else + widget_class->destroy = meta_frames_destroy; #endif widget_class->style_set = meta_frames_style_set; @@ -295,8 +276,13 @@ listify_func (gpointer key, gpointer value, gpointer data) *listp = g_slist_prepend (*listp, value); } +#if GTK_CHECK_VERSION(3, 0, 0) +static void +meta_frames_destroy (GtkWidget *object) +#else static void meta_frames_destroy (GtkObject *object) +#endif { GSList *winlist; GSList *tmp; @@ -320,7 +306,11 @@ meta_frames_destroy (GtkObject *object) } g_slist_free (winlist); +#if GTK_CHECK_VERSION(3, 0, 0) + GTK_WIDGET_CLASS (parent_class)->destroy (object); +#else GTK_OBJECT_CLASS (parent_class)->destroy (object); +#endif } static void @@ -663,16 +653,19 @@ meta_frames_attach_style (MetaFrames *frames, MetaUIFrame *frame) { if (frame->style != NULL) +#if GTK_CHECK_VERSION(3, 0, 0) + g_object_unref (frame->style); +#else gtk_style_detach (frame->style); +#endif +#if GTK_CHECK_VERSION(3, 0, 0) + frame->style = g_object_ref (gtk_widget_get_style_context (GTK_WIDGET (frames))); +#else /* Weirdly, gtk_style_attach() steals a reference count from the style passed in */ - #if GTK_CHECK_VERSION(3, 0, 0) - g_object_ref (gtk_widget_get_style (GTK_WIDGET (frames))); - frame->style = gtk_style_attach (gtk_widget_get_style (GTK_WIDGET (frames)), frame->window); - #else g_object_ref (GTK_WIDGET (frames)->style); frame->style = gtk_style_attach (GTK_WIDGET (frames)->style, frame->window); - #endif +#endif } void @@ -2926,8 +2919,12 @@ meta_frames_set_window_background (MetaFrames *frames, } else { +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_style_context_set_background (frame->style, frame->window); +#else gtk_style_set_background (frame->style, frame->window, GTK_STATE_NORMAL); +#endif } } |