From 1cf6acdd644818744488c0c529cfdb46df9b3ad8 Mon Sep 17 00:00:00 2001 From: Sean Middleditch Date: Fri, 4 Mar 2011 23:57:32 -0800 Subject: [PATCH 2/3] Update to GTK 2.24 with GSEAL Compile against GTK 2.24 with GSEAL_ENABLE, GTK_DISABLE_DEPRECATED, and the other *_DISABLE_DEPRECATED macros enabled. --- configure.ac.in | 12 +++++- libxfce4kbd-private/xfce-shortcut-dialog.c | 2 +- libxfce4ui/xfce-heading.c | 68 ++++++++++++++++----------- libxfce4ui/xfce-sm-client.c | 5 +- libxfce4ui/xfce-titled-dialog.c | 12 +++--- 5 files changed, 61 insertions(+), 38 deletions(-) diff --git a/configure.ac.in b/configure.ac.in index a7b3fbc..48a0b6f 100644 --- a/configure.ac.in +++ b/configure.ac.in @@ -126,7 +126,7 @@ dnl *********************************** dnl *** Check for required packages *** dnl *********************************** XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [2.16.0]) -XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.14.0]) +XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.24.0]) XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.8.0]) dnl ************************************************* @@ -241,6 +241,16 @@ if test "x$have_gnuc_visibility" = "xyes"; then fi AM_CONDITIONAL([HAVE_GNUC_VISIBILITY], [test "x$have_gnuc_visibility" = "xyes"]) +dnl ************************************** +dnl *** GTKSEAL and disable deprecated *** +dnl ************************************** +CPPFLAGS="$CPPFLAGS -DGSEAL_ENABLE=1" +CPPFLAGS="$CPPFLAGS -DGTK_DISABLED_DEPRECATED=1" +CPPFLAGS="$CPPFLAGS -DGDK_DISABLE_DEPRECATED=1" +CPPFLAGS="$CPPFLAGS -DGDK_PIXBUF_DISABLE_DEPRECATED=1" +CPPFLAGS="$CPPFLAGS -DG_DISABLE_DEPRECATED=1" +CPPFLAGS="$CPPFLAGS -DPANGO_DISABLE_DEPRECATED=1" + dnl ************************************* dnl *** Compensate for broken gtk-doc *** dnl ************************************* diff --git a/libxfce4kbd-private/xfce-shortcut-dialog.c b/libxfce4kbd-private/xfce-shortcut-dialog.c index 00953c3..5a58506 100644 --- a/libxfce4kbd-private/xfce-shortcut-dialog.c +++ b/libxfce4kbd-private/xfce-shortcut-dialog.c @@ -242,7 +242,7 @@ xfce_shortcut_dialog_create_contents (XfceShortcutDialog *dialog, gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 12); gtk_container_set_border_width (GTK_CONTAINER (table), 12); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), table); + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), table); gtk_widget_show (table); label = gtk_label_new (action_label); diff --git a/libxfce4ui/xfce-heading.c b/libxfce4ui/xfce-heading.c index 34b9b59..c5631fb 100644 --- a/libxfce4ui/xfce-heading.c +++ b/libxfce4ui/xfce-heading.c @@ -196,7 +196,7 @@ _xfce_heading_init (XfceHeading *heading) heading->priv = XFCE_HEADING_GET_PRIVATE (heading); /* setup the widget parameters */ - GTK_WIDGET_UNSET_FLAGS (heading, GTK_NO_WINDOW); + gtk_widget_set_has_window (GTK_WIDGET (heading), FALSE); } @@ -291,15 +291,17 @@ static void _xfce_heading_realize (GtkWidget *widget) { GdkWindowAttr attributes; + GtkAllocation allocation; /* mark the widget as realized */ - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); + gtk_widget_set_realized (widget, TRUE); /* setup the window attributes */ - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; + gtk_widget_get_allocation (widget, &allocation); + attributes.x = allocation.x; + attributes.y = allocation.y; + attributes.width = allocation.width; + attributes.height = allocation.height; attributes.wclass = GDK_INPUT_OUTPUT; attributes.window_type = GDK_WINDOW_CHILD; attributes.visual = gtk_widget_get_visual (widget); @@ -308,15 +310,15 @@ _xfce_heading_realize (GtkWidget *widget) | GDK_EXPOSURE_MASK; /* allocate the widget window */ - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, - GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP); - gdk_window_set_user_data (widget->window, widget); + gtk_widget_set_window (widget, gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, + GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP)); + gdk_window_set_user_data (gtk_widget_get_window (widget), widget); /* connect the style to the window */ - widget->style = gtk_style_attach (widget->style, widget->window); + gtk_widget_set_style (widget, gtk_style_attach (gtk_widget_get_style (widget), gtk_widget_get_window (widget))); /* set background color (using the base color) */ - gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]); + gdk_window_set_background (gtk_widget_get_window (widget), >k_widget_get_style (widget)->base[GTK_STATE_NORMAL]); } @@ -363,10 +365,10 @@ _xfce_heading_style_set (GtkWidget *widget, GtkStyle *previous_style) { /* check if we're already realized */ - if (GTK_WIDGET_REALIZED (widget)) + if (gtk_widget_get_realized (widget)) { /* set background color (using the base color) */ - gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]); + gdk_window_set_background (gtk_widget_get_window (widget), >k_widget_get_style (widget)->base[GTK_STATE_NORMAL]); } } @@ -376,20 +378,24 @@ static gboolean _xfce_heading_expose_event (GtkWidget *widget, GdkEventExpose *event) { - XfceHeading *heading = XFCE_HEADING (widget); - PangoLayout *layout; - GdkPixbuf *pixbuf; - gboolean rtl; - gint width; - gint height; - gint x; - gint y; + XfceHeading *heading = XFCE_HEADING (widget); + PangoLayout *layout; + GdkPixbuf *pixbuf; + gboolean rtl; + gint width; + gint height; + gint x; + gint y; + GtkAllocation allocation; + GdkRectangle draw_rect; + cairo_t *cr; /* check if we should render from right to left */ rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); /* determine the initial horizontal position */ - x = (rtl ? widget->allocation.width - XFCE_HEADING_BORDER : XFCE_HEADING_BORDER); + gtk_widget_get_allocation (widget, &allocation); + x = (rtl ? allocation.width - XFCE_HEADING_BORDER : XFCE_HEADING_BORDER); /* check if we have a pixbuf to render */ pixbuf = _xfce_heading_make_pixbuf (heading); @@ -400,12 +406,18 @@ _xfce_heading_expose_event (GtkWidget *widget, height = gdk_pixbuf_get_height (pixbuf); /* determine the vertical position */ - y = (widget->allocation.height - height) / 2; + y = (allocation.height - height) / 2; /* render the pixbuf */ - gdk_draw_pixbuf (widget->window, widget->style->black_gc, pixbuf, 0, 0, - (rtl ? x - width : x), y, width, height, - GDK_RGB_DITHER_NORMAL, 0, 0); + draw_rect.x = (rtl ? x - width : x); + draw_rect.y = y; + draw_rect.width = width; + draw_rect.height = height; + cr = gdk_cairo_create (gtk_widget_get_window (widget)); + gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); + gdk_cairo_rectangle (cr, &draw_rect); + cairo_paint (cr); + cairo_destroy (cr); /* release the pixbuf */ g_object_unref (G_OBJECT (pixbuf)); @@ -419,10 +431,10 @@ _xfce_heading_expose_event (GtkWidget *widget, pango_layout_get_pixel_size (layout, &width, &height); /* determine the vertical position */ - y = (widget->allocation.height - height) / 2; + y = (allocation.height - height) / 2; /* render the title */ - gtk_paint_layout (widget->style, widget->window, GTK_WIDGET_STATE (widget), TRUE, &event->area, + gtk_paint_layout (gtk_widget_get_style (widget), gtk_widget_get_window (widget), gtk_widget_get_state (widget), TRUE, &event->area, widget, "heading", (rtl ? x - width : x), y, layout); /* release the layout */ diff --git a/libxfce4ui/xfce-sm-client.c b/libxfce4ui/xfce-sm-client.c index 28997ef..75ceb68 100644 --- a/libxfce4ui/xfce-sm-client.c +++ b/libxfce4ui/xfce-sm-client.c @@ -56,6 +56,7 @@ #endif #include +#include #include #include @@ -642,7 +643,7 @@ xfce_sm_client_set_client_id(XfceSMClient *sm_client, g_free(sm_client->client_id); sm_client->client_id = g_strdup(client_id); - gdk_set_sm_client_id(sm_client->client_id); + gdk_x11_set_sm_client_id(sm_client->client_id); g_object_notify(G_OBJECT(sm_client), "client-id"); } @@ -1718,7 +1719,7 @@ xfce_sm_client_disconnect(XfceSMClient *sm_client) SmcCloseConnection(sm_client->session_connection, 0, NULL); sm_client->session_connection = NULL; - gdk_set_sm_client_id(NULL); + gdk_x11_set_sm_client_id(NULL); xfce_sm_client_set_state(sm_client, XFCE_SM_CLIENT_STATE_DISCONNECTED); #endif diff --git a/libxfce4ui/xfce-titled-dialog.c b/libxfce4ui/xfce-titled-dialog.c index ffc8a2d..e4674e4 100644 --- a/libxfce4ui/xfce-titled-dialog.c +++ b/libxfce4ui/xfce-titled-dialog.c @@ -123,8 +123,8 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog) titled_dialog->priv = XFCE_TITLED_DIALOG_GET_PRIVATE (titled_dialog); /* remove the main dialog box from the window */ - g_object_ref (G_OBJECT (GTK_DIALOG (titled_dialog)->vbox)); - gtk_container_remove (GTK_CONTAINER (titled_dialog), GTK_DIALOG (titled_dialog)->vbox); + g_object_ref (G_OBJECT (gtk_dialog_get_content_area (GTK_DIALOG (titled_dialog)))); + gtk_container_remove (GTK_CONTAINER (titled_dialog), gtk_dialog_get_content_area (GTK_DIALOG (titled_dialog))); /* add a new vbox w/o border to the main window */ vbox = gtk_vbox_new (FALSE, 0); @@ -142,8 +142,8 @@ xfce_titled_dialog_init (XfceTitledDialog *titled_dialog) gtk_widget_show (line); /* add the main dialog box to the new vbox */ - gtk_box_pack_start (GTK_BOX (vbox), GTK_DIALOG (titled_dialog)->vbox, TRUE, TRUE, 0); - g_object_unref (G_OBJECT (GTK_DIALOG (titled_dialog)->vbox)); + gtk_box_pack_start (GTK_BOX (vbox), gtk_dialog_get_content_area (GTK_DIALOG (titled_dialog)), TRUE, TRUE, 0); + g_object_unref (G_OBJECT (gtk_dialog_get_content_area ((GTK_DIALOG (titled_dialog))))); /* make sure to update the heading whenever one of the relevant window properties changes */ g_signal_connect (G_OBJECT (titled_dialog), "notify::icon", G_CALLBACK (xfce_titled_dialog_update_heading), NULL); @@ -220,11 +220,11 @@ xfce_titled_dialog_close (GtkDialog *dialog) GdkEvent *event; /* verify that the dialog is realized */ - if (G_LIKELY (GTK_WIDGET_REALIZED (dialog))) + if (G_LIKELY (gtk_widget_get_realized (GTK_WIDGET (dialog)))) { /* send a delete event to the dialog */ event = gdk_event_new (GDK_DELETE); - event->any.window = g_object_ref (GTK_WIDGET (dialog)->window); + event->any.window = g_object_ref (gtk_widget_get_window (GTK_WIDGET (dialog))); event->any.send_event = TRUE; gtk_main_do_event (event); gdk_event_free (event); -- 1.7.4.1