summaryrefslogtreecommitdiff
path: root/gtk/gtkstatusbar.c
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2010-08-30 14:56:28 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2010-08-30 14:56:28 +0900
commit54d44a9bd04cfbed8426614fc69c027a46f41a14 (patch)
tree34bdf65a6e8d5d6d4016154345d1d803ba0da379 /gtk/gtkstatusbar.c
parentb3b22c31b997fb85b3319b392a1a69407703184c (diff)
parent67194ed77b153eb5a7eb6c596f3c20e274b7787a (diff)
downloadgtk+-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.c109
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)