From e00d4e423f9a50ba6727cafe50d4bd5dc78e3ad7 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 26 Mar 2008 20:27:44 +0000 Subject: [PATCH] big wilber is watching you from the toolbox! Removed forgotten menubar 2008-03-26 Michael Natterer * app/widgets/gimptoolbox.[ch]: big wilber is watching you from the toolbox! Removed forgotten menubar cruft. svn path=/trunk/; revision=25249 --- ChangeLog | 5 +++ app/widgets/gimptoolbox.c | 71 +++++++++++++++++++++++++++++++++++---- app/widgets/gimptoolbox.h | 4 ++- 3 files changed, 72 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8eb445be79..d258200d80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-03-26 Michael Natterer + + * app/widgets/gimptoolbox.[ch]: big wilber is watching you from + the toolbox! Removed forgotten menubar cruft. + 2008-03-26 Sven Neumann * app/widgets/gimpcairo-wilber.[ch]: diff --git a/app/widgets/gimptoolbox.c b/app/widgets/gimptoolbox.c index a4bee0ab5c..24e5b874ed 100644 --- a/app/widgets/gimptoolbox.c +++ b/app/widgets/gimptoolbox.c @@ -37,6 +37,7 @@ #include "file/file-open.h" #include "file/file-utils.h" +#include "gimpcairo-wilber.h" #include "gimpdevices.h" #include "gimpdialogfactory.h" #include "gimpdockseparator.h" @@ -74,6 +75,9 @@ static void gimp_toolbox_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gimp_toolbox_style_set (GtkWidget *widget, GtkStyle *previous_style); +static gboolean gimp_toolbox_expose_event (GtkWidget *widget, + GdkEventExpose *event); + static void gimp_toolbox_book_added (GimpDock *dock, GimpDockbook *dockbook); static void gimp_toolbox_book_removed (GimpDock *dock, @@ -139,6 +143,7 @@ gimp_toolbox_class_init (GimpToolboxClass *klass) widget_class->delete_event = gimp_toolbox_delete_event; widget_class->size_allocate = gimp_toolbox_size_allocate; widget_class->style_set = gimp_toolbox_style_set; + widget_class->expose_event = gimp_toolbox_expose_event; dock_class->book_added = gimp_toolbox_book_added; dock_class->book_removed = gimp_toolbox_book_removed; @@ -199,6 +204,11 @@ gimp_toolbox_constructor (GType type, gtk_box_reorder_child (GTK_BOX (main_vbox), vbox, 0); gtk_widget_show (vbox); + toolbox->header = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (toolbox->header), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (vbox), toolbox->header, FALSE, FALSE, 0); + gtk_widget_show (toolbox->header); + toolbox->tool_wbox = gtk_hwrap_box_new (FALSE); gtk_wrap_box_set_justify (GTK_WRAP_BOX (toolbox->tool_wbox), GTK_JUSTIFY_TOP); gtk_wrap_box_set_line_justify (GTK_WRAP_BOX (toolbox->tool_wbox), @@ -461,6 +471,56 @@ gimp_toolbox_style_set (GtkWidget *widget, gimp_toolbox_set_geometry (GIMP_TOOLBOX (widget)); } +static gboolean +gimp_toolbox_expose_event (GtkWidget *widget, + GdkEventExpose *event) +{ + GimpToolbox *toolbox = GIMP_TOOLBOX (widget); + GdkRectangle clip_rect; + + GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event); + + if (gdk_rectangle_intersect (&event->area, + &toolbox->header->allocation, + &clip_rect)) + { + cairo_t *cr; + gint header_height; + gint header_width; + gdouble wilber_width; + gdouble wilber_height; + gdouble factor; + + cr = gdk_cairo_create (widget->window); + gdk_cairo_rectangle (cr, &clip_rect); + cairo_clip (cr); + + header_width = toolbox->header->allocation.width; + header_height = toolbox->header->allocation.height; + + gimp_cairo_wilber_get_size (cr, &wilber_width, &wilber_height); + + factor = header_width / wilber_width * 0.9; + + cairo_scale (cr, factor, factor); + + gimp_cairo_wilber (cr, + (header_width / factor - wilber_width) / 2.0, + (header_height / factor - wilber_height) / 2.0); + + cairo_set_source_rgba (cr, + widget->style->fg[widget->state].red / 65535.0, + widget->style->fg[widget->state].green / 65535.0, + widget->style->fg[widget->state].blue / 65535.0, + 0.10); + cairo_fill (cr); + + cairo_destroy (cr); + } + + return FALSE; +} + static void gimp_toolbox_book_added (GimpDock *dock, GimpDockbook *dockbook) @@ -498,19 +558,16 @@ gimp_toolbox_set_geometry (GimpToolbox *toolbox) if (tool_button) { - GtkWidget *main_vbox; - GtkRequisition menubar_requisition = { 0, 0 }; + GtkWidget *main_vbox = GIMP_DOCK (toolbox)->main_vbox; GtkRequisition button_requisition; gint border_width; GdkGeometry geometry; - main_vbox = GIMP_DOCK (toolbox)->main_vbox; - - if (toolbox->menu_bar) - gtk_widget_size_request (toolbox->menu_bar, &menubar_requisition); - gtk_widget_size_request (tool_button, &button_requisition); + gtk_widget_set_size_request (toolbox->header, + -1, button_requisition.height); + border_width = gtk_container_get_border_width (GTK_CONTAINER (main_vbox)); geometry.min_width = (2 * border_width + diff --git a/app/widgets/gimptoolbox.h b/app/widgets/gimptoolbox.h index 051ce6c61e..0bfa20e22e 100644 --- a/app/widgets/gimptoolbox.h +++ b/app/widgets/gimptoolbox.h @@ -37,8 +37,10 @@ struct _GimpToolbox { GimpImageDock parent_instance; - GtkWidget *menu_bar; + GtkWidget *header; + GtkWidget *tool_wbox; + GtkWidget *area_wbox; GtkWidget *color_area; GtkWidget *foo_area;