summaryrefslogtreecommitdiff
path: root/gtk/gtkseparatortoolitem.c
diff options
context:
space:
mode:
authorSoeren Sandmann <sandmann@daimi.au.dk>2003-07-07 14:35:31 +0000
committerSøren Sandmann Pedersen <ssp@src.gnome.org>2003-07-07 14:35:31 +0000
commit71ff8228032a4d99bde376b9af0ca2ce9352f9e1 (patch)
tree09f573b939bec85ff679aec78094f16255069d8c /gtk/gtkseparatortoolitem.c
parentc084f54145e2e77ff69ac65b297b1720daee33e0 (diff)
downloadgtk+-71ff8228032a4d99bde376b9af0ca2ce9352f9e1.tar.gz
remove accidentally committed debugging spew
Mon Jul 7 16:50:32 2003 Soeren Sandmann <sandmann@daimi.au.dk> * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_class_init): remove accidentally committed debugging spew * gtk/gtktoolbar.c (gtk_toolbar_paint_space_line): remove this function (gtk_toolbar_expose): always propagate expose, even if the item is a separator item * gtk/gtkseparatortoolitem.c (gtk_separator_tool_item_expose): moved here from gtktoolbar.c (get_space_size): new function. (get_space_style): new function
Diffstat (limited to 'gtk/gtkseparatortoolitem.c')
-rw-r--r--gtk/gtkseparatortoolitem.c99
1 files changed, 96 insertions, 3 deletions
diff --git a/gtk/gtkseparatortoolitem.c b/gtk/gtkseparatortoolitem.c
index 52051d6dd5..b7b1a60b1f 100644
--- a/gtk/gtkseparatortoolitem.c
+++ b/gtk/gtkseparatortoolitem.c
@@ -19,14 +19,28 @@
* Boston, MA 02111-1307, USA.
*/
+#undef GTK_DISABLE_DEPRECATED
+
#include "gtkseparatormenuitem.h"
#include "gtkseparatortoolitem.h"
#include "gtkintl.h"
+#include "gtktoolbar.h"
+
+/* note: keep in sync with DEFAULT_SPACE_SIZE and DEFAULT_SPACE_STYLE in gtktoolbar.c */
+#define DEFAULT_SPACE_SIZE 5
+#define DEFAULT_SPACE_STYLE GTK_TOOLBAR_SPACE_LINE
-static void gtk_separator_tool_item_class_init (GtkSeparatorToolItemClass*class);
+#define SPACE_LINE_DIVISION 10
+#define SPACE_LINE_START 3
+#define SPACE_LINE_END 7
-static void gtk_separator_tool_item_add (GtkContainer *container,
- GtkWidget *child);
+static void gtk_separator_tool_item_class_init (GtkSeparatorToolItemClass *class);
+static gboolean gtk_separator_tool_item_expose (GtkWidget *widget,
+ GdkEventExpose *event);
+static void gtk_separator_tool_item_add (GtkContainer *container,
+ GtkWidget *child);
+static GtkToolbarSpaceStyle get_space_style (GtkToolItem *tool_item);
+static gint get_space_size (GtkToolItem *tool_item);
static GObjectClass *parent_class = NULL;
@@ -57,17 +71,52 @@ gtk_separator_tool_item_get_type (void)
return type;
}
+static GtkToolbarSpaceStyle
+get_space_style (GtkToolItem *tool_item)
+{
+ GtkToolbarSpaceStyle space_style = DEFAULT_SPACE_STYLE;
+ GtkWidget *parent = GTK_WIDGET (tool_item)->parent;
+
+ if (GTK_IS_TOOLBAR (parent))
+ {
+ gtk_widget_style_get (parent,
+ "space_style", &space_style,
+ NULL);
+ }
+
+ return space_style;
+}
+
+static gint
+get_space_size (GtkToolItem *tool_item)
+{
+ gint space_size = DEFAULT_SPACE_SIZE;
+ GtkWidget *parent = GTK_WIDGET (tool_item)->parent;
+
+ if (GTK_IS_TOOLBAR (parent))
+ {
+ gtk_widget_style_get (parent,
+ "space_size", &space_size,
+ NULL);
+ }
+
+ return space_size;
+}
static void
gtk_separator_tool_item_class_init (GtkSeparatorToolItemClass *class)
{
GtkContainerClass *container_class;
GtkToolItemClass *toolitem_class;
+ GtkWidgetClass *widget_class;
parent_class = g_type_class_peek_parent (class);
container_class = (GtkContainerClass *)class;
toolitem_class = (GtkToolItemClass *)class;
+ widget_class = (GtkWidgetClass *)class;
+ widget_class->expose_event = gtk_separator_tool_item_expose;
+
container_class->add = gtk_separator_tool_item_add;
}
@@ -78,6 +127,50 @@ gtk_separator_tool_item_add (GtkContainer *container,
g_warning("attempt to add a child to an GtkSeparatorToolItem");
}
+static gboolean
+gtk_separator_tool_item_expose (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ GtkToolItem *tool_item = GTK_TOOL_ITEM (widget);
+ gint space_size;
+ GtkAllocation *allocation;
+ GtkOrientation orientation;
+ GdkRectangle *area;
+
+ if (get_space_style (tool_item) == GTK_TOOLBAR_SPACE_LINE)
+ {
+ space_size = get_space_size (tool_item);
+ allocation = &(widget->allocation);
+ orientation = gtk_tool_item_get_orientation (tool_item);
+ area = &(event->area);
+
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ gtk_paint_vline (widget->style, widget->window,
+ GTK_WIDGET_STATE (widget), area, widget,
+ "separator_tool_item",
+ allocation->y + allocation->height *
+ SPACE_LINE_START / SPACE_LINE_DIVISION,
+ allocation->y + allocation->height *
+ SPACE_LINE_END / SPACE_LINE_DIVISION,
+ allocation->x + (space_size - widget->style->xthickness) / 2);
+ }
+ else if (orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ gtk_paint_hline (widget->style, widget->window,
+ GTK_WIDGET_STATE (widget), area, widget,
+ "separator_tool_item",
+ allocation->x + allocation->width *
+ SPACE_LINE_START / SPACE_LINE_DIVISION,
+ allocation->x + allocation->width *
+ SPACE_LINE_END / SPACE_LINE_DIVISION,
+ allocation->y + (space_size - widget->style->ythickness) / 2);
+ }
+ }
+
+ return TRUE;
+}
+
GtkToolItem *
gtk_separator_tool_item_new (void)
{