diff options
author | Soeren Sandmann <sandmann@daimi.au.dk> | 2004-02-26 22:29:24 +0000 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@src.gnome.org> | 2004-02-26 22:29:24 +0000 |
commit | dc0718bd7e95bb93e1c1c0fe715d3827e79a6080 (patch) | |
tree | 4d6752cf63fc177832ccba2d19f66424785fb002 /gtk/gtkstatusbar.c | |
parent | 211b6450571da88fe776f2dc0b8ae29f71e1af67 (diff) | |
download | gtk+-dc0718bd7e95bb93e1c1c0fe715d3827e79a6080.tar.gz |
New function. Use resize cursors for resize grips. (Bug #129621)
Thu Feb 26 23:26:00 2004 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtkstatusbar.c (set_grip_cursor): New function. Use resize
cursors for resize grips. (Bug #129621)
* gtk/gtktoolbar.c (gtk_toolbar_get_relief_style): Documentation
fix - patch by Torsten Schoenfeld.
* gtk/gtkmenubar.c (gtk_menu_bar_size_request): don't request
space between the items. (Bug #110775)
* gtk/gtkrc.c (_gtk_rc_init): Provide extra horizontal padding
inside menu items that are inside a menu bar. (Bug #110775)
* configure.in (HAVE_XCURSOR): Make XCurosr part of GDK_EXTRA_,
not GDK_PACKAGES, to prevent applications from getting linked to
it (Bug #119804)
* gtk/gtkmenubar.c (gtk_menu_bar_size_allocate): Put the vertical
ipadding inside the item. (Bug #61843)
Diffstat (limited to 'gtk/gtkstatusbar.c')
-rw-r--r-- | gtk/gtkstatusbar.c | 101 |
1 files changed, 69 insertions, 32 deletions
diff --git a/gtk/gtkstatusbar.c b/gtk/gtkstatusbar.c index 12d0cee766..ffe114fee3 100644 --- a/gtk/gtkstatusbar.c +++ b/gtk/gtkstatusbar.c @@ -54,36 +54,39 @@ enum PROP_HAS_RESIZE_GRIP }; -static void gtk_statusbar_class_init (GtkStatusbarClass *class); -static void gtk_statusbar_init (GtkStatusbar *statusbar); -static void gtk_statusbar_destroy (GtkObject *object); -static void gtk_statusbar_update (GtkStatusbar *statusbar, - guint context_id, - const gchar *text); -static void gtk_statusbar_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_statusbar_realize (GtkWidget *widget); -static void gtk_statusbar_unrealize (GtkWidget *widget); -static void gtk_statusbar_map (GtkWidget *widget); -static void gtk_statusbar_unmap (GtkWidget *widget); -static gboolean gtk_statusbar_button_press (GtkWidget *widget, - GdkEventButton *event); -static gboolean gtk_statusbar_expose_event (GtkWidget *widget, - GdkEventExpose *event); -static void gtk_statusbar_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_statusbar_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_statusbar_create_window (GtkStatusbar *statusbar); -static void gtk_statusbar_destroy_window (GtkStatusbar *statusbar); -static void gtk_statusbar_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void gtk_statusbar_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); +static void gtk_statusbar_class_init (GtkStatusbarClass *class); +static void gtk_statusbar_init (GtkStatusbar *statusbar); +static void gtk_statusbar_destroy (GtkObject *object); +static void gtk_statusbar_update (GtkStatusbar *statusbar, + guint context_id, + const gchar *text); +static void gtk_statusbar_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static void gtk_statusbar_realize (GtkWidget *widget); +static void gtk_statusbar_unrealize (GtkWidget *widget); +static void gtk_statusbar_map (GtkWidget *widget); +static void gtk_statusbar_unmap (GtkWidget *widget); +static gboolean gtk_statusbar_button_press (GtkWidget *widget, + GdkEventButton *event); +static gboolean gtk_statusbar_expose_event (GtkWidget *widget, + GdkEventExpose *event); +static void gtk_statusbar_size_request (GtkWidget *widget, + GtkRequisition *requisition); +static void gtk_statusbar_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static void gtk_statusbar_direction_changed (GtkWidget *widget, + GtkTextDirection prev_dir); +static void gtk_statusbar_create_window (GtkStatusbar *statusbar); +static void gtk_statusbar_destroy_window (GtkStatusbar *statusbar); +static void gtk_statusbar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void gtk_statusbar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); + static GtkContainerClass *parent_class; static guint statusbar_signals[SIGNAL_LAST] = { 0 }; @@ -145,6 +148,8 @@ gtk_statusbar_class_init (GtkStatusbarClass *class) widget_class->size_request = gtk_statusbar_size_request; widget_class->size_allocate = gtk_statusbar_size_allocate; + + widget_class->direction_changed = gtk_statusbar_direction_changed; class->messages_mem_chunk = g_mem_chunk_new ("GtkStatusbar messages mem chunk", sizeof (GtkStatusbarMsg), @@ -529,9 +534,30 @@ get_grip_rect (GtkStatusbar *statusbar, rect->y = widget->allocation.y + widget->allocation.height - h; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - rect->x = widget->allocation.x + widget->allocation.width - w; + rect->x = widget->allocation.x + widget->allocation.width - w; else - rect->x = widget->allocation.x + widget->style->xthickness; + rect->x = widget->allocation.x + widget->style->xthickness; +} + +static void +set_grip_cursor (GtkStatusbar *statusbar) +{ + if (statusbar->has_resize_grip) + { + GtkWidget *widget = GTK_WIDGET (statusbar); + GdkDisplay *display = gtk_widget_get_display (widget); + GdkCursorType cursor_type; + GdkCursor *cursor; + + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) + cursor_type = GDK_BOTTOM_RIGHT_CORNER; + else + cursor_type = GDK_BOTTOM_LEFT_CORNER; + + cursor = gdk_cursor_new_for_display (display, cursor_type); + gdk_window_set_cursor (statusbar->grip_window, cursor); + gdk_cursor_unref (cursor); + } } static void @@ -563,6 +589,17 @@ gtk_statusbar_create_window (GtkStatusbar *statusbar) statusbar->grip_window = gdk_window_new (widget->window, &attributes, attributes_mask); gdk_window_set_user_data (statusbar->grip_window, widget); + + set_grip_cursor (statusbar); +} + +static void +gtk_statusbar_direction_changed (GtkWidget *widget, + GtkTextDirection prev_dir) +{ + GtkStatusbar *statusbar = GTK_STATUSBAR (widget); + + set_grip_cursor (statusbar); } static void |