diff options
author | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2010-08-30 14:56:28 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2010-08-30 14:56:28 +0900 |
commit | 54d44a9bd04cfbed8426614fc69c027a46f41a14 (patch) | |
tree | 34bdf65a6e8d5d6d4016154345d1d803ba0da379 /gtk/gtkstatusbar.c | |
parent | b3b22c31b997fb85b3319b392a1a69407703184c (diff) | |
parent | 67194ed77b153eb5a7eb6c596f3c20e274b7787a (diff) | |
download | gtk+-native-layout.tar.gz |
Merge branch 'master' into native-layoutnative-layout
Conflicts:
gtk/gtkplug.c
gtk/gtkscrolledwindow.c
Diffstat (limited to 'gtk/gtkstatusbar.c')
-rw-r--r-- | gtk/gtkstatusbar.c | 109 |
1 files changed, 58 insertions, 51 deletions
diff --git a/gtk/gtkstatusbar.c b/gtk/gtkstatusbar.c index ded06208c6..7924067700 100644 --- a/gtk/gtkstatusbar.c +++ b/gtk/gtkstatusbar.c @@ -75,7 +75,7 @@ */ typedef struct _GtkStatusbarMsg GtkStatusbarMsg; -struct _GtkStatusbarPriv +struct _GtkStatusbarPrivate { GtkWidget *frame; GtkWidget *label; @@ -250,20 +250,20 @@ gtk_statusbar_class_init (GtkStatusbarClass *class) GTK_SHADOW_IN, GTK_PARAM_READABLE)); - g_type_class_add_private (class, sizeof (GtkStatusbarPriv)); + g_type_class_add_private (class, sizeof (GtkStatusbarPrivate)); } static void gtk_statusbar_init (GtkStatusbar *statusbar) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; GtkBox *box = GTK_BOX (statusbar); GtkWidget *message_area; GtkShadowType shadow_type; statusbar->priv = G_TYPE_INSTANCE_GET_PRIVATE (statusbar, GTK_TYPE_STATUSBAR, - GtkStatusbarPriv); + GtkStatusbarPrivate); priv = statusbar->priv; gtk_widget_set_redraw_on_allocate (GTK_WIDGET (box), TRUE); @@ -314,7 +314,7 @@ gtk_statusbar_buildable_get_internal_child (GtkBuildable *buildable, const gchar *childname) { GtkStatusbar *statusbar = GTK_STATUSBAR (buildable); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; if (strcmp (childname, "message_area") == 0) return G_OBJECT (gtk_bin_get_child (GTK_BIN (priv->frame))); @@ -342,7 +342,7 @@ gtk_statusbar_update (GtkStatusbar *statusbar, guint context_id, const gchar *text) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; g_return_if_fail (GTK_IS_STATUSBAR (statusbar)); @@ -370,7 +370,7 @@ guint gtk_statusbar_get_context_id (GtkStatusbar *statusbar, const gchar *context_description) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; gchar *string; guint id; @@ -412,7 +412,7 @@ gtk_statusbar_push (GtkStatusbar *statusbar, guint context_id, const gchar *text) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; GtkStatusbarMsg *msg; g_return_val_if_fail (GTK_IS_STATUSBAR (statusbar), 0); @@ -452,7 +452,7 @@ void gtk_statusbar_pop (GtkStatusbar *statusbar, guint context_id) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; GtkStatusbarMsg *msg; g_return_if_fail (GTK_IS_STATUSBAR (statusbar)); @@ -502,7 +502,7 @@ gtk_statusbar_remove (GtkStatusbar *statusbar, guint context_id, guint message_id) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; GtkStatusbarMsg *msg; g_return_if_fail (GTK_IS_STATUSBAR (statusbar)); @@ -555,7 +555,7 @@ void gtk_statusbar_remove_all (GtkStatusbar *statusbar, guint context_id) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; GtkStatusbarMsg *msg; GSList *prev, *list; @@ -622,7 +622,7 @@ void gtk_statusbar_set_has_resize_grip (GtkStatusbar *statusbar, gboolean setting) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; g_return_if_fail (GTK_IS_STATUSBAR (statusbar)); @@ -681,7 +681,7 @@ gtk_statusbar_get_has_resize_grip (GtkStatusbar *statusbar) GtkWidget* gtk_statusbar_get_message_area (GtkStatusbar *statusbar) { - GtkStatusbarPriv *priv; + GtkStatusbarPrivate *priv; g_return_val_if_fail (GTK_IS_STATUSBAR (statusbar), NULL); @@ -694,7 +694,7 @@ static void gtk_statusbar_destroy (GtkObject *object) { GtkStatusbar *statusbar = GTK_STATUSBAR (object); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GSList *list; for (list = priv->messages; list; list = list->next) @@ -742,7 +742,7 @@ gtk_statusbar_get_property (GObject *object, GParamSpec *pspec) { GtkStatusbar *statusbar = GTK_STATUSBAR (object); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; switch (prop_id) { @@ -770,35 +770,38 @@ static void get_grip_rect (GtkStatusbar *statusbar, GdkRectangle *rect) { - GtkWidget *widget; + GtkAllocation allocation; + GtkStyle *style; + GtkWidget *widget = GTK_WIDGET (statusbar); gint w, h; - - widget = GTK_WIDGET (statusbar); + + gtk_widget_get_allocation (widget, &allocation); + style = gtk_widget_get_style (widget); /* These are in effect the max/default size of the grip. */ w = 18; h = 18; - if (w > widget->allocation.width) - w = widget->allocation.width; + if (w > allocation.width) + w = allocation.width; + + if (h > allocation.height - style->ythickness) + h = allocation.height - style->ythickness; - if (h > widget->allocation.height - widget->style->ythickness) - h = widget->allocation.height - widget->style->ythickness; - rect->width = w; rect->height = h; - rect->y = widget->allocation.y + widget->allocation.height - h; + rect->y = allocation.y + allocation.height - h; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - rect->x = widget->allocation.x + widget->allocation.width - w; - else - rect->x = widget->allocation.x + widget->style->xthickness; + rect->x = allocation.x + allocation.width - w; + else + rect->x = allocation.x + style->xthickness; } static void set_grip_cursor (GtkStatusbar *statusbar) { - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; if (priv->has_resize_grip && priv->grip_window != NULL) { @@ -827,7 +830,7 @@ static void gtk_statusbar_create_window (GtkStatusbar *statusbar) { GtkWidget *widget; - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GdkWindowAttr attributes; gint attributes_mask; GdkRectangle rect; @@ -850,9 +853,8 @@ gtk_statusbar_create_window (GtkStatusbar *statusbar) attributes_mask = GDK_WA_X | GDK_WA_Y; - priv->grip_window = gdk_window_new (widget->window, - &attributes, attributes_mask); - + priv->grip_window = gdk_window_new (gtk_widget_get_window (widget), + &attributes, attributes_mask); gdk_window_set_user_data (priv->grip_window, widget); gdk_window_raise (priv->grip_window); @@ -881,7 +883,7 @@ gtk_statusbar_state_changed (GtkWidget *widget, static void gtk_statusbar_destroy_window (GtkStatusbar *statusbar) { - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; gdk_window_set_user_data (priv->grip_window, NULL); gdk_window_destroy (priv->grip_window); @@ -892,7 +894,7 @@ static void gtk_statusbar_realize (GtkWidget *widget) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GTK_WIDGET_CLASS (gtk_statusbar_parent_class)->realize (widget); @@ -904,7 +906,7 @@ static void gtk_statusbar_unrealize (GtkWidget *widget) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; if (priv->grip_window) gtk_statusbar_destroy_window (statusbar); @@ -916,7 +918,7 @@ static void gtk_statusbar_map (GtkWidget *widget) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GTK_WIDGET_CLASS (gtk_statusbar_parent_class)->map (widget); @@ -928,7 +930,7 @@ static void gtk_statusbar_unmap (GtkWidget *widget) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; if (priv->grip_window) gdk_window_hide (priv->grip_window); @@ -941,7 +943,7 @@ gtk_statusbar_button_press (GtkWidget *widget, GdkEventButton *event) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GtkWidget *ancestor; GdkWindowEdge edge; @@ -979,7 +981,8 @@ gtk_statusbar_expose_event (GtkWidget *widget, GdkEventExpose *event) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; + GtkStyle *style; GdkRectangle rect; GTK_WIDGET_CLASS (gtk_statusbar_parent_class)->expose_event (widget, event); @@ -992,8 +995,9 @@ gtk_statusbar_expose_event (GtkWidget *widget, get_grip_rect (statusbar, &rect); - gtk_paint_resize_grip (widget->style, - widget->window, + style = gtk_widget_get_style (widget); + gtk_paint_resize_grip (style, + gtk_widget_get_window (widget), gtk_widget_get_state (widget), &event->area, widget, @@ -1003,8 +1007,8 @@ gtk_statusbar_expose_event (GtkWidget *widget, /* don't draw grip over the frame, though you * can click on the frame. */ - rect.width - widget->style->xthickness, - rect.height - widget->style->ythickness); + rect.width - style->xthickness, + rect.height - style->ythickness); } return FALSE; @@ -1015,7 +1019,7 @@ gtk_statusbar_size_request (GtkWidget *widget, GtkRequisition *requisition) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GtkShadowType shadow_type; gtk_widget_style_get (GTK_WIDGET (statusbar), "shadow-type", &shadow_type, NULL); @@ -1030,7 +1034,7 @@ gtk_statusbar_size_request (GtkWidget *widget, static gboolean has_extra_children (GtkStatusbar *statusbar) { - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; GtkPackType child_pack_type, frame_pack_type; GtkWidget *child, *frame; GList *l, *children; @@ -1080,7 +1084,7 @@ gtk_statusbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkStatusbar *statusbar = GTK_STATUSBAR (widget); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; gboolean extra_children = FALSE; GdkRectangle rect; @@ -1116,10 +1120,11 @@ gtk_statusbar_size_allocate (GtkWidget *widget, if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) allocation->x -= rect.width; - widget->allocation = *allocation; + gtk_widget_set_allocation (widget, allocation); } else { + GtkAllocation child_allocation, frame_allocation; GtkWidget *child; /* Use the frame's child instead of priv->label directly, in case @@ -1128,13 +1133,15 @@ gtk_statusbar_size_allocate (GtkWidget *widget, */ child = gtk_bin_get_child (GTK_BIN (priv->frame)); - if (child->allocation.width + rect.width > priv->frame->allocation.width) + gtk_widget_get_allocation (child, &child_allocation); + gtk_widget_get_allocation (priv->frame, &frame_allocation); + if (child_allocation.width + rect.width > frame_allocation.width) { /* shrink the label to make room for the grip */ - *allocation = child->allocation; + *allocation = child_allocation; allocation->width = MAX (1, allocation->width - rect.width); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) - allocation->x += child->allocation.width - allocation->width; + allocation->x += child_allocation.width - allocation->width; gtk_widget_size_allocate (child, allocation); } @@ -1159,7 +1166,7 @@ label_selectable_changed (GtkWidget *label, gpointer data) { GtkStatusbar *statusbar = GTK_STATUSBAR (data); - GtkStatusbarPriv *priv = statusbar->priv; + GtkStatusbarPrivate *priv = statusbar->priv; if (statusbar && priv->has_resize_grip && priv->grip_window) |