Updating branch refs/heads/nick/gtk3 to 4266d3766f4e0222391967e034e1d396ae16b5a2 (commit) from 0ff5a96563d2779bbbb775b182ae87bb0229be1d (commit)
commit 4266d3766f4e0222391967e034e1d396ae16b5a2 Author: Peter de Ridder <pe...@xfce.org> Date: Sun Apr 7 22:41:55 2013 +0200 More porting to Gtk+-3 for the panel code. panel/panel-base-window.c | 104 ++++++++++-------- panel/panel-dialogs.c | 10 +- panel/panel-item-dialog.c | 7 +- panel/panel-itembar.c | 164 ++++++++++++++++------------ panel/panel-plugin-external-46.c | 8 +- panel/panel-plugin-external-wrapper.c | 2 +- panel/panel-plugin-external.c | 8 +- panel/panel-plugin-external.h | 1 + panel/panel-preferences-dialog.c | 8 +- panel/panel-tic-tac-toe.c | 55 +++++----- panel/panel-window.c | 193 ++++++++++++++++++++------------- 11 files changed, 323 insertions(+), 237 deletions(-) diff --git a/panel/panel-base-window.c b/panel/panel-base-window.c index a48456d..24a0801 100644 --- a/panel/panel-base-window.c +++ b/panel/panel-base-window.c @@ -48,8 +48,8 @@ static void panel_base_window_set_property (GObject static void panel_base_window_finalize (GObject *object); static void panel_base_window_screen_changed (GtkWidget *widget, GdkScreen *previous_screen); -static gboolean panel_base_window_expose_event (GtkWidget *widget, - GdkEventExpose *event); +static gboolean panel_base_window_draw (GtkWidget *widget, + cairo_t *cr); static gboolean panel_base_window_enter_notify_event (GtkWidget *widget, GdkEventCrossing *event); static gboolean panel_base_window_leave_notify_event (GtkWidget *widget, @@ -118,7 +118,7 @@ panel_base_window_class_init (PanelBaseWindowClass *klass) gobject_class->finalize = panel_base_window_finalize; gtkwidget_class = GTK_WIDGET_CLASS (klass); - gtkwidget_class->expose_event = panel_base_window_expose_event; + gtkwidget_class->draw = panel_base_window_draw; gtkwidget_class->enter_notify_event = panel_base_window_enter_notify_event; gtkwidget_class->leave_notify_event = panel_base_window_leave_notify_event; gtkwidget_class->composited_changed = panel_base_window_composited_changed; @@ -229,6 +229,9 @@ panel_base_window_get_property (GObject *object, PanelBaseWindow *window = PANEL_BASE_WINDOW (object); PanelBaseWindowPrivate *priv = window->priv; GdkColor *color; + GdkColor bg_color; + GdkRGBA bg_rgba; + GtkStyleContext *ctx; switch (prop_id) { @@ -252,7 +255,14 @@ panel_base_window_get_property (GObject *object, if (window->background_color != NULL) color = window->background_color; else - color = &(GTK_WIDGET (window)->style->bg[GTK_STATE_NORMAL]); + { + ctx = gtk_widget_get_style_context (GTK_WIDGET (window)); + gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba); + bg_color.red = CLAMP(bg_rgba.red * 65536, 65535, 0); + bg_color.green = CLAMP(bg_rgba.green * 65536, 65535, 0); + bg_color.blue = CLAMP(bg_rgba.blue * 65536, 65535, 0); + color = &bg_color; + } g_value_set_boxed (value, color); break; @@ -442,7 +452,7 @@ static void panel_base_window_screen_changed (GtkWidget *widget, GdkScreen *previous_screen) { PanelBaseWindow *window = PANEL_BASE_WINDOW (widget); - GdkColormap *colormap; + GdkVisual *visual; GdkScreen *screen; if (GTK_WIDGET_CLASS (panel_base_window_parent_class)->screen_changed != NULL) @@ -450,58 +460,55 @@ panel_base_window_screen_changed (GtkWidget *widget, GdkScreen *previous_screen) /* set the rgba colormap if supported by the screen */ screen = gtk_window_get_screen (GTK_WINDOW (window)); - colormap = gdk_screen_get_rgba_colormap (screen); - if (colormap != NULL) + visual = gdk_screen_get_rgba_visual (screen); + if (visual != NULL) { - gtk_widget_set_colormap (widget, colormap); + gtk_widget_set_visual (widget, visual); window->is_composited = gtk_widget_is_composited (widget); } panel_debug (PANEL_DEBUG_BASE_WINDOW, - "%p: rgba colormap=%p, compositing=%s", window, - colormap, PANEL_DEBUG_BOOL (window->is_composited)); + "%p: rgba visual=%p, compositing=%s", window, + visual, PANEL_DEBUG_BOOL (window->is_composited)); } static gboolean -panel_base_window_expose_event (GtkWidget *widget, - GdkEventExpose *event) +panel_base_window_draw (GtkWidget *widget, + cairo_t *cr) { - cairo_t *cr; const GdkColor *color; + GdkRGBA bg_rgba; + GtkSymbolicColor *literal; + GtkSymbolicColor *shade; PanelBaseWindow *window = PANEL_BASE_WINDOW (widget); PanelBaseWindowPrivate *priv = window->priv; gdouble alpha; - gdouble width = widget->allocation.width; - gdouble height = widget->allocation.height; + gdouble width = gtk_widget_get_allocated_width (widget); + gdouble height = gtk_widget_get_allocated_height (widget); const gdouble dashes[] = { 4.00, 4.00 }; GTimeVal timeval; GdkPixbuf *pixbuf; GError *error = NULL; cairo_matrix_t matrix = { 1, 0, 0, 1, 0, 0 }; /* identity matrix */ + GtkStyleContext *ctx; - if (!GTK_WIDGET_DRAWABLE (widget)) + if (!gtk_widget_is_drawable (widget)) return FALSE; + ctx = gtk_widget_get_style_context (widget); + /* create cairo context and set some default properties */ - cr = gdk_cairo_create (widget->window); - panel_return_val_if_fail (cr != NULL, FALSE); cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_set_line_width (cr, 1.00); - /* set rectangle to clip the drawing area */ - gdk_cairo_rectangle (cr, &event->area); - /* get background alpha */ alpha = window->is_composited ? window->background_alpha : 1.00; if (window->background_style == PANEL_BG_STYLE_IMAGE) { - /* clip the drawing area */ - cairo_clip (cr); - if (G_LIKELY (priv->bg_image_cache != NULL)) { if (G_UNLIKELY (priv->active_timeout_id != 0)) @@ -543,25 +550,22 @@ panel_base_window_expose_event (GtkWidget *widget, /* get the background color */ if (window->background_style == PANEL_BG_STYLE_COLOR && window->background_color != NULL) - color = window->background_color; + { + color = window->background_color; + panel_util_set_source_rgba (cr, color, alpha); + } else - color = &(widget->style->bg[GTK_STATE_NORMAL]); + { + gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba); + gdk_cairo_set_source_rgba (cr, &bg_rgba); + } /* only do something with the background when compositing is enabled */ if (G_UNLIKELY (alpha < 1.00 || window->background_style != PANEL_BG_STYLE_NONE)) { - /* clip the drawing area, but preserve the rectangle */ - cairo_clip_preserve (cr); - /* draw the background */ - panel_util_set_source_rgba (cr, color, alpha); - cairo_fill (cr); - } - else - { - /* clip the drawing area */ - cairo_clip (cr); + cairo_paint (cr); } } @@ -585,8 +589,14 @@ panel_base_window_expose_event (GtkWidget *widget, if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_BOTTOM | PANEL_BORDER_RIGHT)) { /* use dark color for buttom and right line */ - color = &(widget->style->dark[GTK_STATE_NORMAL]); - panel_util_set_source_rgba (cr, color, alpha); + gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba); + literal = gtk_symbolic_color_new_literal (&bg_rgba); + shade = gtk_symbolic_color_new_shade (literal, 0.7); + gtk_symbolic_color_unref (literal); + gtk_symbolic_color_resolve (shade, NULL, &bg_rgba); + gtk_symbolic_color_unref (shade); + bg_rgba.alpha = alpha; + gdk_cairo_set_source_rgba (cr, &bg_rgba); if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_BOTTOM)) { @@ -606,8 +616,14 @@ panel_base_window_expose_event (GtkWidget *widget, if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_TOP | PANEL_BORDER_LEFT)) { /* use light color for top and left line */ - color = &(widget->style->light[GTK_STATE_NORMAL]); - panel_util_set_source_rgba (cr, color, alpha); + gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba); + literal = gtk_symbolic_color_new_literal (&bg_rgba); + shade = gtk_symbolic_color_new_shade (literal, 1.3); + gtk_symbolic_color_unref (literal); + gtk_symbolic_color_resolve (shade, NULL, &bg_rgba); + gtk_symbolic_color_unref (shade); + bg_rgba.alpha = alpha; + gdk_cairo_set_source_rgba (cr, &bg_rgba); if (PANEL_HAS_FLAG (priv->borders, PANEL_BORDER_LEFT)) { @@ -625,8 +641,6 @@ panel_base_window_expose_event (GtkWidget *widget, } } - cairo_destroy (cr); - return FALSE; } @@ -674,6 +688,7 @@ panel_base_window_composited_changed (GtkWidget *widget) PanelBaseWindow *window = PANEL_BASE_WINDOW (widget); gboolean was_composited = window->is_composited; GdkWindow *gdkwindow; + GtkAllocation allocation; /* set new compositing state */ window->is_composited = gtk_widget_is_composited (widget); @@ -703,9 +718,10 @@ panel_base_window_composited_changed (GtkWidget *widget) gdk_window_invalidate_rect (gdkwindow, NULL, TRUE); /* HACK: invalid the geometry, so the wm notices it */ + gtk_widget_get_allocation (widget, &allocation); gtk_window_move (GTK_WINDOW (window), - widget->allocation.x, - widget->allocation.y); + allocation.x, + allocation.y); gtk_widget_queue_resize (widget); } diff --git a/panel/panel-dialogs.c b/panel/panel-dialogs.c index 5cec79c..dabea51 100644 --- a/panel/panel-dialogs.c +++ b/panel/panel-dialogs.c @@ -36,7 +36,7 @@ -#ifn GTK_CHECK_VERSION (3, 0, 0) +#if !GTK_CHECK_VERSION (3, 0, 0) static void panel_dialogs_show_about_email_hook (GtkAboutDialog *dialog, const gchar *uri, @@ -78,7 +78,7 @@ panel_dialogs_show_about (void) "Jasper Huijsmans <jas...@xfce.org>", "Tic-tac-toe <tictac...@xfce.org>"); -#ifn GTK_CHECK_VERSION (3, 0, 0) +#if !GTK_CHECK_VERSION (3, 0, 0) gtk_about_dialog_set_email_hook (panel_dialogs_show_about_email_hook, NULL, NULL); #endif @@ -161,7 +161,7 @@ panel_dialogs_choose_panel (PanelApplication *application) /* setup the dialog */ dialog = gtk_dialog_new_with_buttons (_("Add New Item"), NULL, - GTK_DIALOG_NO_SEPARATOR, + 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_ADD, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); @@ -169,8 +169,8 @@ panel_dialogs_choose_panel (PanelApplication *application) gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); /* create widgets */ - vbox = gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, FALSE, FALSE, 0); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), vbox, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); gtk_widget_show (vbox); diff --git a/panel/panel-item-dialog.c b/panel/panel-item-dialog.c index 170b67d..6ecb8b1 100644 --- a/panel/panel-item-dialog.c +++ b/panel/panel-item-dialog.c @@ -190,7 +190,6 @@ panel_item_dialog_init (PanelItemDialog *dialog) xfce_titled_dialog_set_subtitle (XFCE_TITLED_DIALOG (dialog), _("Add new plugins to the panel")); gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_ADD); - gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); gtk_window_set_default_size (GTK_WINDOW (dialog), 350, 450); gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_NORMAL); @@ -202,13 +201,13 @@ panel_item_dialog_init (PanelItemDialog *dialog) gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE); - main_vbox = gtk_vbox_new (FALSE, BORDER * 2); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox); + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, BORDER * 2); + gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), main_vbox); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), BORDER); gtk_widget_show (main_vbox); /* search widget */ - hbox = gtk_hbox_new (FALSE, BORDER); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, BORDER); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); diff --git a/panel/panel-itembar.c b/panel/panel-itembar.c index 8440462..52233ab 100644 --- a/panel/panel-itembar.c +++ b/panel/panel-itembar.c @@ -38,42 +38,48 @@ typedef struct _PanelItembarChild PanelItembarChild; -static void panel_itembar_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void panel_itembar_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void panel_itembar_finalize (GObject *object); -static void panel_itembar_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void panel_itembar_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static gboolean panel_itembar_expose_event (GtkWidget *widget, - GdkEventExpose *event); -static void panel_itembar_add (GtkContainer *container, - GtkWidget *child); -static void panel_itembar_remove (GtkContainer *container, - GtkWidget *child); -static void panel_itembar_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); -static GType panel_itembar_child_type (GtkContainer *container); -static void panel_itembar_set_child_property (GtkContainer *container, - GtkWidget *widget, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void panel_itembar_get_child_property (GtkContainer *container, - GtkWidget *widget, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static PanelItembarChild *panel_itembar_get_child (PanelItembar *itembar, - GtkWidget *widget); +static void panel_itembar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void panel_itembar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void panel_itembar_finalize (GObject *object); +static void panel_itembar_size_request (GtkWidget *widget, + GtkRequisition *requisition); +static void panel_itembar_get_preferred_width (GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +static void panel_itembar_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height); +static void panel_itembar_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static gboolean panel_itembar_draw (GtkWidget *widget, + cairo_t *cr); +static void panel_itembar_add (GtkContainer *container, + GtkWidget *child); +static void panel_itembar_remove (GtkContainer *container, + GtkWidget *child); +static void panel_itembar_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); +static GType panel_itembar_child_type (GtkContainer *container); +static void panel_itembar_set_child_property (GtkContainer *container, + GtkWidget *widget, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void panel_itembar_get_child_property (GtkContainer *container, + GtkWidget *widget, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static PanelItembarChild *panel_itembar_get_child (PanelItembar *itembar, + GtkWidget *widget); @@ -160,9 +166,10 @@ panel_itembar_class_init (PanelItembarClass *klass) gobject_class->finalize = panel_itembar_finalize; gtkwidget_class = GTK_WIDGET_CLASS (klass); - gtkwidget_class->size_request = panel_itembar_size_request; + gtkwidget_class->get_preferred_width = panel_itembar_get_preferred_width; + gtkwidget_class->get_preferred_height = panel_itembar_get_preferred_height; gtkwidget_class->size_allocate = panel_itembar_size_allocate; - gtkwidget_class->expose_event = panel_itembar_expose_event; + gtkwidget_class->draw = panel_itembar_draw; gtkcontainer_class = GTK_CONTAINER_CLASS (klass); gtkcontainer_class->add = panel_itembar_add; @@ -330,11 +337,11 @@ panel_itembar_size_request (GtkWidget *widget, if (G_LIKELY (child != NULL)) { - if (!GTK_WIDGET_VISIBLE (child->widget)) + if (!gtk_widget_get_visible (child->widget)) continue; /* get the child's size request */ - gtk_widget_size_request (child->widget, &child_req); + gtk_widget_get_preferred_size (child->widget, &child_req, NULL); /* check if the small child fits in a row */ if (child->option == CHILD_OPTION_SMALL @@ -377,7 +384,7 @@ panel_itembar_size_request (GtkWidget *widget, rows_size = itembar->size * itembar->nrows; /* return the total size */ - border_width = GTK_CONTAINER (widget)->border_width * 2; + border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)) * 2; if (IS_HORIZONTAL (itembar)) { requisition->width = total_len + border_width; @@ -393,6 +400,36 @@ panel_itembar_size_request (GtkWidget *widget, static void +panel_itembar_get_preferred_width (GtkWidget *widget, + gint *minimum_width, + gint *natural_width) +{ + GtkRequisition request; + + panel_itembar_size_request (widget, &request); + + *minimum_width = request.width; + *natural_width = request.width; +} + + + +static void +panel_itembar_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height) +{ + GtkRequisition request; + + panel_itembar_size_request (widget, &request); + + *minimum_height = request.height; + *natural_height = request.height; +} + + + +static void panel_itembar_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { @@ -416,9 +453,9 @@ panel_itembar_size_allocate (GtkWidget *widget, /* the maximum allocation is limited by that of the * panel window, so take over the assigned allocation */ - widget->allocation = *allocation; + gtk_widget_set_allocation (widget, allocation); - border_width = GTK_CONTAINER (widget)->border_width; + border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); if (IS_HORIZONTAL (itembar)) itembar_len = allocation->width - 2 * border_width; @@ -443,10 +480,10 @@ panel_itembar_size_allocate (GtkWidget *widget, child = lp->data; if (G_LIKELY (child != NULL)) { - if (!GTK_WIDGET_VISIBLE (child->widget)) + if (!gtk_widget_get_visible (child->widget)) continue; - gtk_widget_get_child_requisition (child->widget, &child_req); + gtk_widget_get_preferred_size (child->widget, &child_req, NULL); child_len = CHILD_LENGTH (child_req, itembar); @@ -560,10 +597,10 @@ panel_itembar_size_allocate (GtkWidget *widget, continue; } - if (!GTK_WIDGET_VISIBLE (child->widget)) + if (!gtk_widget_get_visible (child->widget)) continue; - gtk_widget_get_child_requisition (child->widget, &child_req); + gtk_widget_get_preferred_size (child->widget, &child_req, NULL); child_len = CHILD_LENGTH (child_req, itembar); @@ -680,17 +717,15 @@ panel_itembar_size_allocate (GtkWidget *widget, static gboolean -panel_itembar_expose_event (GtkWidget *widget, - GdkEventExpose *event) +panel_itembar_draw (GtkWidget *widget, + cairo_t *cr) { PanelItembar *itembar = PANEL_ITEMBAR (widget); gboolean result; - cairo_t *cr; - GdkWindow *window; GdkRectangle rect; gint row_size; - result = (*GTK_WIDGET_CLASS (panel_itembar_parent_class)->expose_event) (widget, event); + result = (*GTK_WIDGET_CLASS (panel_itembar_parent_class)->draw) (widget, cr); if (itembar->highlight_index != -1) { @@ -714,17 +749,10 @@ panel_itembar_expose_event (GtkWidget *widget, } /* draw highlight box */ - window = gtk_widget_get_window (widget); - cr = gdk_cairo_create (window); cairo_set_source_rgb (cr, 1.00, 0.00, 0.00); - gdk_cairo_rectangle (cr, &event->area); - cairo_clip (cr); - gdk_cairo_rectangle (cr, &rect); cairo_fill (cr); - - cairo_destroy (cr); } return result; @@ -750,7 +778,7 @@ panel_itembar_remove (GtkContainer *container, panel_return_if_fail (PANEL_IS_ITEMBAR (itembar)); panel_return_if_fail (GTK_IS_WIDGET (widget)); - panel_return_if_fail (widget->parent == GTK_WIDGET (container)); + panel_return_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (container)); panel_return_if_fail (itembar->children != NULL); child = panel_itembar_get_child (itembar, widget); @@ -898,7 +926,7 @@ panel_itembar_get_child (PanelItembar *itembar, panel_return_val_if_fail (PANEL_IS_ITEMBAR (itembar), NULL); panel_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - panel_return_val_if_fail (widget->parent == GTK_WIDGET (itembar), NULL); + panel_return_val_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (itembar), NULL); for (li = itembar->children; li != NULL; li = g_slist_next (li)) { @@ -930,7 +958,7 @@ panel_itembar_insert (PanelItembar *itembar, panel_return_if_fail (PANEL_IS_ITEMBAR (itembar)); panel_return_if_fail (GTK_IS_WIDGET (widget)); - panel_return_if_fail (widget->parent == NULL); + panel_return_if_fail (gtk_widget_get_parent (widget) == NULL); child = g_slice_new0 (PanelItembarChild); child->widget = widget; @@ -954,7 +982,7 @@ panel_itembar_reorder_child (PanelItembar *itembar, panel_return_if_fail (PANEL_IS_ITEMBAR (itembar)); panel_return_if_fail (GTK_IS_WIDGET (widget)); - panel_return_if_fail (widget->parent == GTK_WIDGET (itembar)); + panel_return_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (itembar)); child = panel_itembar_get_child (itembar, widget); if (G_LIKELY (child != NULL)) @@ -980,7 +1008,7 @@ panel_itembar_get_child_index (PanelItembar *itembar, panel_return_val_if_fail (PANEL_IS_ITEMBAR (itembar), -1); panel_return_val_if_fail (GTK_IS_WIDGET (widget), -1); - panel_return_val_if_fail (widget->parent == GTK_WIDGET (itembar), -1); + panel_return_val_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (itembar), -1); for (idx = 0, li = itembar->children; li != NULL; li = g_slist_next (li), idx++) { @@ -1028,7 +1056,7 @@ panel_itembar_get_drop_index (PanelItembar *itembar, panel_return_val_if_fail (PANEL_IS_ITEMBAR (itembar), 0); /* add the itembar position */ - alloc = GTK_WIDGET (itembar)->allocation; + gtk_widget_get_allocation (GTK_WIDGET (itembar), &alloc); if (!IS_HORIZONTAL (itembar)) { @@ -1054,7 +1082,7 @@ panel_itembar_get_drop_index (PanelItembar *itembar, continue; panel_assert (child->widget != NULL); - alloc = child->widget->allocation; + gtk_widget_get_allocation (child->widget, &alloc); if (!IS_HORIZONTAL (itembar)) TRANSPOSE_AREA (alloc); @@ -1081,9 +1109,9 @@ panel_itembar_get_drop_index (PanelItembar *itembar, panel_assert (child2->widget != NULL); col_end_idx++; if (IS_HORIZONTAL (itembar)) - col_width = MAX (col_width, child2->widget->allocation.width); + col_width = MAX (col_width, gtk_widget_get_allocated_width (child2->widget)); else - col_width = MAX (col_width, child2->widget->allocation.height); + col_width = MAX (col_width, gtk_widget_get_allocated_height (child2->widget)); } } diff --git a/panel/panel-plugin-external-46.c b/panel/panel-plugin-external-46.c index 3e2c335..ca2a2e0 100644 --- a/panel/panel-plugin-external-46.c +++ b/panel/panel-plugin-external-46.c @@ -184,7 +184,7 @@ panel_plugin_external_46_get_argv (PanelPluginExternal *external, argv[PLUGIN_ARGV_0] = g_strdup (panel_module_get_filename (external->module)); argv[PLUGIN_ARGV_FILENAME] = g_strdup (""); /* unused, for wrapper only */ argv[PLUGIN_ARGV_UNIQUE_ID] = g_strdup_printf ("%d", external->unique_id);; - argv[PLUGIN_ARGV_SOCKET_ID] = g_strdup_printf ("%u", gtk_socket_get_id (GTK_SOCKET (external)));; + argv[PLUGIN_ARGV_SOCKET_ID] = g_strdup_printf ("%lu", gtk_socket_get_id (GTK_SOCKET (external)));; argv[PLUGIN_ARGV_NAME] = g_strdup (panel_module_get_name (external->module)); argv[PLUGIN_ARGV_DISPLAY_NAME] = g_strdup (panel_module_get_display_name (external->module)); argv[PLUGIN_ARGV_COMMENT] = g_strdup (panel_module_get_comment (external->module)); @@ -221,12 +221,12 @@ panel_plugin_external_46_set_properties (PanelPluginExternal *external, panel_return_if_fail (panel_atom != GDK_NONE); panel_return_if_fail (PANEL_IS_MODULE (external->module)); - if (!GTK_WIDGET_REALIZED (external)) + if (!gtk_widget_get_realized (GTK_WIDGET (external))) return; event.type = GDK_CLIENT_EVENT; - panel_return_if_fail (GDK_IS_WINDOW (GTK_WIDGET (external)->window)); - event.window = GTK_WIDGET (external)->window; + panel_return_if_fail (GDK_IS_WINDOW (gtk_widget_get_window (GTK_WIDGET (external)))); + event.window = gtk_widget_get_window (GTK_WIDGET (external)); event.send_event = TRUE; event.message_type = panel_atom; event.data_format = 16; diff --git a/panel/panel-plugin-external-wrapper.c b/panel/panel-plugin-external-wrapper.c index a97e90e..7260252 100644 --- a/panel/panel-plugin-external-wrapper.c +++ b/panel/panel-plugin-external-wrapper.c @@ -220,7 +220,7 @@ panel_plugin_external_wrapper_get_argv (PanelPluginExternal *external, argv[PLUGIN_ARGV_0] = g_strdup (WRAPPER_BIN); argv[PLUGIN_ARGV_FILENAME] = g_strdup (panel_module_get_filename (external->module)); argv[PLUGIN_ARGV_UNIQUE_ID] = g_strdup_printf ("%d", external->unique_id);; - argv[PLUGIN_ARGV_SOCKET_ID] = g_strdup_printf ("%u", gtk_socket_get_id (GTK_SOCKET (external)));; + argv[PLUGIN_ARGV_SOCKET_ID] = g_strdup_printf ("%lu", gtk_socket_get_id (GTK_SOCKET (external)));; argv[PLUGIN_ARGV_NAME] = g_strdup (panel_module_get_name (external->module)); argv[PLUGIN_ARGV_DISPLAY_NAME] = g_strdup (panel_module_get_display_name (external->module)); argv[PLUGIN_ARGV_COMMENT] = g_strdup (panel_module_get_comment (external->module)); diff --git a/panel/panel-plugin-external.c b/panel/panel-plugin-external.c index 0c4bc6c..3debd5c 100644 --- a/panel/panel-plugin-external.c +++ b/panel/panel-plugin-external.c @@ -521,7 +521,7 @@ panel_plugin_external_child_spawn (PanelPluginExternal *external) GTimeVal timestamp; panel_return_if_fail (PANEL_IS_PLUGIN_EXTERNAL (external)); - panel_return_if_fail (GTK_WIDGET_REALIZED (external)); + panel_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (external))); /* set plugin specific arguments */ argv = (*PANEL_PLUGIN_EXTERNAL_GET_CLASS (external)->get_argv) (external, external->priv->arguments); @@ -639,7 +639,7 @@ panel_plugin_external_child_respawn (gpointer user_data) panel_return_val_if_fail (PANEL_IS_PLUGIN_EXTERNAL (external), FALSE); /* abort startup if the plugin is not realized */ - if (!GTK_WIDGET_REALIZED (external)) + if (!gtk_widget_get_realized (GTK_WIDGET (external))) return FALSE; /* delay startup if the old child is still embedded */ @@ -760,7 +760,7 @@ panel_plugin_external_child_watch (GPid pid, } } - if (GTK_WIDGET_REALIZED (external) + if (gtk_widget_get_realized (GTK_WIDGET (external)) && (auto_restart || panel_plugin_external_child_ask_restart (external))) { panel_plugin_external_child_respawn_schedule (external); @@ -1082,7 +1082,7 @@ panel_plugin_external_set_sensitive (PanelPluginExternal *external) panel_return_if_fail (PANEL_IS_PLUGIN_EXTERNAL (external)); g_value_init (&value, G_TYPE_BOOLEAN); - g_value_set_boolean (&value, GTK_WIDGET_IS_SENSITIVE (external)); + g_value_set_boolean (&value, gtk_widget_is_sensitive (GTK_WIDGET (external))); panel_plugin_external_queue_add (external, PROVIDER_PROP_TYPE_SET_SENSITIVE, &value); diff --git a/panel/panel-plugin-external.h b/panel/panel-plugin-external.h index 5163447..afa591d 100644 --- a/panel/panel-plugin-external.h +++ b/panel/panel-plugin-external.h @@ -20,6 +20,7 @@ #define __PANEL_PLUGIN_EXTERNAL_H__ #include <gtk/gtk.h> +#include <gtk/gtkx.h> #include <libxfce4panel/libxfce4panel.h> #include <libxfce4panel/xfce-panel-plugin-provider.h> #include <panel/panel-module.h> diff --git a/panel/panel-preferences-dialog.c b/panel/panel-preferences-dialog.c index 6a131c5..49e905c 100644 --- a/panel/panel-preferences-dialog.c +++ b/panel/panel-preferences-dialog.c @@ -1309,8 +1309,8 @@ panel_preferences_dialog_plug_deleted (GtkWidget *plug) static void -panel_preferences_dialog_show_internal (PanelWindow *active, - GdkNativeWindow socket_window) +panel_preferences_dialog_show_internal (PanelWindow *active, + Window socket_window) { gint panel_id = 0; GObject *window, *combo; @@ -1419,12 +1419,12 @@ panel_preferences_dialog_show_from_id (gint panel_id, { PanelApplication *application; PanelWindow *window; - GdkNativeWindow socket_window = 0; + Window socket_window = 0; /* x11 windows are ulong on 64 bit platforms * or uint32 on other platforms */ if (socket_id != NULL) - socket_window = (GdkNativeWindow) strtoul (socket_id, NULL, 0); + socket_window = (Window) strtoul (socket_id, NULL, 0); application = panel_application_get (); window = panel_application_get_window (application, panel_id); diff --git a/panel/panel-tic-tac-toe.c b/panel/panel-tic-tac-toe.c index 87d757a..704b8b2 100644 --- a/panel/panel-tic-tac-toe.c +++ b/panel/panel-tic-tac-toe.c @@ -105,7 +105,7 @@ static void panel_tic_tac_toe_init (PanelTicTacToe *dialog) { GtkWidget *button; - GtkWidget *table; + GtkWidget *grid; GtkWidget *separator; guint i; GtkWidget *label; @@ -118,54 +118,54 @@ panel_tic_tac_toe_init (PanelTicTacToe *dialog) gtk_window_set_title (GTK_WINDOW (dialog), "Tic-tac-toe"); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_window_set_icon_name (GTK_WINDOW (dialog), "applications-games"); - gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); button = xfce_gtk_button_new_mixed (GTK_STOCK_NEW, _("_New Game")); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_ACCEPT); gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); - vbox = gtk_vbox_new (FALSE, 6); - gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, TRUE, TRUE, 0); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), vbox, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox), 6); - hbox = gtk_hbox_new (FALSE, 12); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); label = gtk_label_new_with_mnemonic (_("_Level:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - dialog->level = combo = gtk_combo_box_new_text (); + dialog->level = combo = gtk_combo_box_text_new (); gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0); gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Novice")); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Intermediate")); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Experienced")); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo), _("Expert")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Novice")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Intermediate")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Experienced")); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), _("Expert")); gtk_combo_box_set_active (GTK_COMBO_BOX (combo), LEVEL_EXPERIENCED); align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0); - table = gtk_table_new (5, 5, FALSE); - gtk_table_set_col_spacings (GTK_TABLE (table), 1); - gtk_table_set_row_spacings (GTK_TABLE (table), 1); - gtk_container_add (GTK_CONTAINER (align), table); + grid = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (grid), 1); + gtk_grid_set_row_spacing (GTK_GRID (grid), 1); + gtk_container_add (GTK_CONTAINER (align), grid); - separator = gtk_hseparator_new (); - gtk_table_attach (GTK_TABLE (table), separator, 0, 5, 1, 2, GTK_FILL, GTK_FILL, 0, 0); - separator = gtk_hseparator_new (); - gtk_table_attach (GTK_TABLE (table), separator, 0, 5, 3, 4, GTK_FILL, GTK_FILL, 0, 0); - separator = gtk_vseparator_new (); - gtk_table_attach (GTK_TABLE (table), separator, 1, 2, 0, 5, GTK_FILL, GTK_FILL, 0, 0); - separator = gtk_vseparator_new (); - gtk_table_attach (GTK_TABLE (table), separator, 3, 4, 0, 5, GTK_FILL, GTK_FILL, 0, 0); + separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); + gtk_grid_attach (GTK_GRID (grid), separator, 0, 5, 1, 2); + separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); + gtk_grid_attach (GTK_GRID (grid), separator, 0, 5, 3, 4); + separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); + gtk_grid_attach (GTK_GRID (grid), separator, 1, 2, 0, 5); + separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); + gtk_grid_attach (GTK_GRID (grid), separator, 3, 4, 0, 5); for (i = 0; i < 9; i++) { button = dialog->buttons[i] = gtk_button_new (); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_widget_set_size_request (button, 70, 70); - GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_DEFAULT | GTK_CAN_FOCUS); + gtk_widget_set_can_default (button, FALSE); + gtk_widget_set_can_focus (button, FALSE); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (panel_tic_tac_toe_button_clicked), dialog); @@ -175,12 +175,9 @@ panel_tic_tac_toe_init (PanelTicTacToe *dialog) row = (i / 3) * 2; col = (i % 3) * 2; - gtk_table_attach (GTK_TABLE (table), button, - col, col + 1, - row, row + 1, - GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, - 0, 0); + gtk_grid_attach (GTK_GRID (grid), button, + col, col + 1, + row, row + 1); } /* set label attributes */ diff --git a/panel/panel-window.c b/panel/panel-window.c index 93964ed..339e1c7 100644 --- a/panel/panel-window.c +++ b/panel/panel-window.c @@ -85,8 +85,8 @@ static void panel_window_set_property (GObject *o const GValue *value, GParamSpec *pspec); static void panel_window_finalize (GObject *object); -static gboolean panel_window_expose_event (GtkWidget *widget, - GdkEventExpose *event); +static gboolean panel_window_draw (GtkWidget *widget, + cairo_t *cr); static gboolean panel_window_delete_event (GtkWidget *widget, GdkEventAny *event); static gboolean panel_window_enter_notify_event (GtkWidget *widget, @@ -109,8 +109,12 @@ static gboolean panel_window_button_release_event (GtkWidget *w GdkEventButton *event); static void panel_window_grab_notify (GtkWidget *widget, gboolean was_grabbed); -static void panel_window_size_request (GtkWidget *widget, - GtkRequisition *requisition); +static void panel_window_get_preferred_width (GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +static void panel_window_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height); static void panel_window_size_allocate (GtkWidget *widget, GtkAllocation *alloc); static void panel_window_size_allocate_set_xy (PanelWindow *window, @@ -336,7 +340,7 @@ panel_window_class_init (PanelWindowClass *klass) gobject_class->finalize = panel_window_finalize; gtkwidget_class = GTK_WIDGET_CLASS (klass); - gtkwidget_class->expose_event = panel_window_expose_event; + gtkwidget_class->draw = panel_window_draw; gtkwidget_class->delete_event = panel_window_delete_event; gtkwidget_class->enter_notify_event = panel_window_enter_notify_event; gtkwidget_class->leave_notify_event = panel_window_leave_notify_event; @@ -346,7 +350,8 @@ panel_window_class_init (PanelWindowClass *klass) gtkwidget_class->button_press_event = panel_window_button_press_event; gtkwidget_class->button_release_event = panel_window_button_release_event; gtkwidget_class->grab_notify = panel_window_grab_notify; - gtkwidget_class->size_request = panel_window_size_request; + gtkwidget_class->get_preferred_width = panel_window_get_preferred_width; + gtkwidget_class->get_preferred_height = panel_window_get_preferred_height; gtkwidget_class->size_allocate = panel_window_size_allocate; gtkwidget_class->screen_changed = panel_window_screen_changed; gtkwidget_class->style_set = panel_window_style_set; @@ -750,22 +755,24 @@ panel_window_finalize (GObject *object) static gboolean -panel_window_expose_event (GtkWidget *widget, - GdkEventExpose *event) +panel_window_draw (GtkWidget *widget, + cairo_t *cr) { - PanelWindow *window = PANEL_WINDOW (widget); - cairo_t *cr; - GdkColor *color; - guint xx, yy, i; - gint xs, xe, ys, ye; - gint handle_w, handle_h; - gdouble alpha = 1.00; - GtkWidget *child; + PanelWindow *window = PANEL_WINDOW (widget); + GdkRGBA bg_rgba, light_rgba, dark_rgba; + GtkSymbolicColor *literal; + GtkSymbolicColor *shade; + guint xx, yy, i; + gint xs, xe, ys, ye; + gint handle_w, handle_h; + gdouble alpha = 1.00; + GtkWidget *child; + GtkStyleContext *ctx; /* expose the background and borders handled in PanelBaseWindow */ - (*GTK_WIDGET_CLASS (panel_window_parent_class)->expose_event) (widget, event); + (*GTK_WIDGET_CLASS (panel_window_parent_class)->draw) (widget, cr); - if (window->position_locked || !GTK_WIDGET_DRAWABLE (widget)) + if (window->position_locked || !gtk_widget_is_drawable (widget)) goto end; if (IS_HORIZONTAL (window)) @@ -776,11 +783,6 @@ panel_window_expose_event (GtkWidget *widget, xs = HANDLE_SPACING + 1; xe = window->alloc.width - HANDLE_SIZE - HANDLE_SIZE; ys = ye = (window->alloc.height - handle_h) / 2; - - /* dirty check if we have to redraw the handles */ - if (event->area.x > xs + HANDLE_SIZE - && event->area.x + event->area.width < xe) - goto end; } else { @@ -790,35 +792,36 @@ panel_window_expose_event (GtkWidget *widget, xs = xe = (window->alloc.width - handle_w) / 2; ys = HANDLE_SPACING + 1; ye = window->alloc.height - HANDLE_SIZE - HANDLE_SIZE; - - /* dirty check if we have to redraw the handles */ - if (event->area.y > ys + HANDLE_SIZE - && event->area.y + event->area.height < ye) - goto end; } /* create cairo context and set some default properties */ - cr = gdk_cairo_create (widget->window); - panel_return_val_if_fail (cr != NULL, FALSE); cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - /* clip the drawing area */ - gdk_cairo_rectangle (cr, &event->area); - cairo_clip (cr); - /* alpha color */ if (PANEL_BASE_WINDOW (window)->is_composited) alpha = MAX (0.50, PANEL_BASE_WINDOW (window)->background_alpha); + ctx = gtk_widget_get_style_context (widget); + gtk_style_context_get_background_color (ctx, GTK_STATE_NORMAL, &bg_rgba); + literal = gtk_symbolic_color_new_literal (&bg_rgba); + shade = gtk_symbolic_color_new_shade (literal, 1.3); + gtk_symbolic_color_resolve (shade, NULL, &light_rgba); + gtk_symbolic_color_unref (shade); + shade = gtk_symbolic_color_new_shade (literal, 0.7); + gtk_symbolic_color_resolve (shade, NULL, &dark_rgba); + gtk_symbolic_color_unref (shade); + gtk_symbolic_color_unref (literal); + light_rgba.alpha = alpha; + dark_rgba.alpha = alpha; + for (i = HANDLE_PIXELS; i >= HANDLE_PIXELS - 1; i--) { /* set the source color */ if (i == HANDLE_PIXELS) - color = &(widget->style->light[GTK_STATE_NORMAL]); + gdk_cairo_set_source_rgba (cr, &light_rgba); else - color = &(widget->style->dark[GTK_STATE_NORMAL]); - panel_util_set_source_rgba (cr, color, alpha); + gdk_cairo_set_source_rgba (cr, &dark_rgba); /* draw the dots */ for (xx = 0; xx < (guint) handle_w; xx += HANDLE_PIXELS + HANDLE_PIXEL_SPACE) @@ -832,13 +835,11 @@ panel_window_expose_event (GtkWidget *widget, cairo_fill (cr); } - cairo_destroy (cr); - end: /* send the expose event to the child */ child = gtk_bin_get_child (GTK_BIN (widget)); if (G_LIKELY (child != NULL)) - gtk_container_propagate_expose (GTK_CONTAINER (widget), child, event); + gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr); return FALSE; } @@ -1015,7 +1016,7 @@ panel_window_button_press_event (GtkWidget *widget, guint modifiers; /* leave if the event is not for this window */ - if (event->window != widget->window) + if (event->window != gtk_widget_get_window (widget)) goto end; modifiers = event->state & gtk_accelerator_get_default_mod_mask (); @@ -1155,26 +1156,26 @@ panel_window_grab_notify (GtkWidget *widget, static void -panel_window_size_request (GtkWidget *widget, - GtkRequisition *requisition) +panel_window_get_preferred_width (GtkWidget *widget, + gint *minimum_width, + gint *natural_width) { PanelWindow *window = PANEL_WINDOW (widget); - GtkRequisition child_requisition = { 0, 0 }; + gint m_width = 0; + gint n_width = 0; gint length; - gint extra_width = 0, extra_height = 0; + gint extra_width = 0; PanelBorders borders; /* get the child requisition */ - if (GTK_BIN (widget)->child != NULL) - gtk_widget_size_request (GTK_BIN (widget)->child, &child_requisition); + if (gtk_bin_get_child (GTK_BIN (widget)) != NULL) + gtk_widget_get_preferred_width (gtk_bin_get_child (GTK_BIN (widget)), &m_width, &n_width); /* handle size */ if (!window->position_locked) { if (IS_HORIZONTAL (window)) extra_width += 2 * HANDLE_SIZE_TOTAL; - else - extra_height += 2 * HANDLE_SIZE_TOTAL; } /* get the active borders */ @@ -1183,31 +1184,77 @@ panel_window_size_request (GtkWidget *widget, extra_width++; if (PANEL_HAS_FLAG (borders, PANEL_BORDER_RIGHT)) extra_width++; - if (PANEL_HAS_FLAG (borders, PANEL_BORDER_TOP)) - extra_height++; - if (PANEL_HAS_FLAG (borders, PANEL_BORDER_BOTTOM)) - extra_height++; - requisition->height = child_requisition.height + extra_height; - requisition->width = child_requisition.width + extra_width; + m_width += extra_width; + n_width += extra_width; /* respect the length and monitor/screen size */ if (IS_HORIZONTAL (window)) { if (!window->length_adjust) - requisition->width = extra_width; + { + m_width = n_width = extra_width; + } length = window->area.width * window->length; - requisition->width = CLAMP (requisition->width, length, window->area.width); + m_width = CLAMP (m_width, length, window->area.width); + n_width = CLAMP (n_width, length, window->area.width); } - else + + *minimum_width = m_width; + *natural_width = n_width; +} + + + +static void +panel_window_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height) +{ + PanelWindow *window = PANEL_WINDOW (widget); + gint m_height = 0; + gint n_height = 0; + gint length; + gint extra_height = 0; + PanelBorders borders; + + /* get the child requisition */ + if (gtk_bin_get_child (GTK_BIN (widget)) != NULL) + gtk_widget_get_preferred_height (gtk_bin_get_child (GTK_BIN (widget)), &m_height, &n_height); + + /* handle size */ + if (!window->position_locked) + { + if (!IS_HORIZONTAL (window)) + extra_height += 2 * HANDLE_SIZE_TOTAL; + } + + /* get the active borders */ + borders = panel_base_window_get_borders (PANEL_BASE_WINDOW (window)); + if (PANEL_HAS_FLAG (borders, PANEL_BORDER_TOP)) + extra_height++; + if (PANEL_HAS_FLAG (borders, PANEL_BORDER_BOTTOM)) + extra_height++; + + m_height += extra_height; + n_height += extra_height; + + /* respect the length and monitor/screen size */ + if (!IS_HORIZONTAL (window)) { if (!window->length_adjust) - requisition->height = extra_height; + { + m_height = n_height = extra_height; + } length = window->area.height * window->length; - requisition->height = CLAMP (requisition->height, length, window->area.height); + m_height = CLAMP (m_height, length, window->area.height); + n_height = CLAMP (n_height, length, window->area.height); } + + *minimum_height = m_height; + *natural_height = n_height; } @@ -1222,7 +1269,7 @@ panel_window_size_allocate (GtkWidget *widget, PanelBorders borders; GtkWidget *child; - widget->allocation = *alloc; + gtk_widget_set_allocation (widget, alloc); window->alloc = *alloc; if (G_UNLIKELY (window->autohide_state == AUTOHIDE_HIDDEN @@ -1554,7 +1601,7 @@ panel_window_screen_struts_set (PanelWindow *window) panel_return_if_fail (cardinal_atom != 0 && net_wm_strut_partial_atom != 0); panel_return_if_fail (GDK_IS_SCREEN (window->screen)); - if (!GTK_WIDGET_REALIZED (window)) + if (!gtk_widget_get_realized (GTK_WIDGET (window))) return; /* set the struts */ @@ -1608,15 +1655,15 @@ panel_window_screen_struts_set (PanelWindow *window) gdk_error_trap_push (); /* set the wm strut partial */ - panel_return_if_fail (GDK_IS_WINDOW (GTK_WIDGET (window)->window)); - gdk_property_change (GTK_WIDGET (window)->window, + panel_return_if_fail (GDK_IS_WINDOW (gtk_widget_get_window (GTK_WIDGET (window)))); + gdk_property_change (gtk_widget_get_window (GTK_WIDGET (window)), net_wm_strut_partial_atom, cardinal_atom, 32, GDK_PROP_MODE_REPLACE, (guchar *) &struts, N_STRUTS); #if SET_OLD_WM_STRUTS /* set the wm strut (old window managers) */ - gdk_property_change (GTK_WIDGET (window)->window, + gdk_property_change (gtk_widget_get_window (GTK_WIDGET (window)), net_wm_strut_atom, cardinal_atom, 32, GDK_PROP_MODE_REPLACE, (guchar *) &struts, 4); @@ -1808,11 +1855,9 @@ panel_window_display_layout_debug (GtkWidget *widget) if (panel_debug_has_domain (PANEL_DEBUG_DISPLAY_LAYOUT)) { - g_string_append_printf (str, "{comp=%s, sys=%p:%p, rgba=%p:%p}", + g_string_append_printf (str, "{comp=%s, sys=%p, rgba=%p}", PANEL_DEBUG_BOOL (gdk_screen_is_composited (screen)), - gdk_screen_get_system_colormap (screen), gdk_screen_get_system_visual (screen), - gdk_screen_get_rgba_colormap (screen), gdk_screen_get_rgba_visual (screen)); } @@ -1923,7 +1968,7 @@ panel_window_screen_layout_changed (GdkScreen *screen, window, screen_num); /* out of range, hide the window */ - if (GTK_WIDGET_VISIBLE (window)) + if (gtk_widget_get_visible (GTK_WIDGET (window))) gtk_widget_hide (GTK_WIDGET (window)); return; } @@ -2011,7 +2056,7 @@ panel_window_screen_layout_changed (GdkScreen *screen, window, window->output_name); /* hide the panel if the monitor was not found */ - if (GTK_WIDGET_VISIBLE (window)) + if (gtk_widget_get_visible (GTK_WIDGET (window))) gtk_widget_hide (GTK_WIDGET (window)); return; } @@ -2080,7 +2125,7 @@ panel_window_screen_layout_changed (GdkScreen *screen, if (force_struts_update) panel_window_screen_struts_set (window); - if (!GTK_WIDGET_VISIBLE (window)) + if (!gtk_widget_get_visible (GTK_WIDGET (window))) gtk_widget_show (GTK_WIDGET (window)); } @@ -2742,20 +2787,20 @@ panel_window_focus (PanelWindow *window) XClientMessageEvent event; panel_return_if_fail (PANEL_IS_WINDOW (window)); - panel_return_if_fail (GTK_WIDGET_REALIZED (window)); + panel_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (window))); /* we need a slightly custom version of the call through Gtk+ to * properly focus the panel when a plugin calls * xfce_panel_plugin_focus_widget() */ event.type = ClientMessage; - event.window = GDK_WINDOW_XID (GTK_WIDGET (window)->window); + event.window = GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (window))); event.message_type = gdk_x11_get_xatom_by_name ("_NET_ACTIVE_WINDOW"); event.format = 32; event.data.l[0] = 0; gdk_error_trap_push (); - XSendEvent (GDK_DISPLAY (), GDK_ROOT_WINDOW (), False, + XSendEvent (gdk_x11_get_default_xdisplay (), GDK_ROOT_WINDOW (), False, StructureNotifyMask, (XEvent *) &event); gdk_flush (); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits