summaryrefslogtreecommitdiff
path: root/gtk/gtkcheckbutton.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1999-01-15 16:00:39 +0000
committerOwen Taylor <otaylor@src.gnome.org>1999-01-15 16:00:39 +0000
commit2e99e7713dc73ea5b7a000ab03b4d64176b9ad40 (patch)
treeb53b62d8cc9bf47aa3b9c77015a260eb8fe09b09 /gtk/gtkcheckbutton.c
parent3bba8439685024f9fbfd9d1880da95f4cd9ce09f (diff)
downloadgtk+-2e99e7713dc73ea5b7a000ab03b4d64176b9ad40.tar.gz
nparams for selection_get should be 3, not 2. [ From Damon Chaplin
Fri Jan 15 10:22:21 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtkwidget.c (gtk_widget_class_init): nparams for selection_get should be 3, not 2. [ From Damon Chaplin <damon@karuna.freeserve.co.uk> ] * gtk/gtkeventbox.c (gtk_event_box_paint): Add a paint routine so queued redraws work inside event boxes. Thu Jan 14 17:47:37 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtkentry.c (gtk_entry_draw_cursor_on_drawable): Only redraw character under cursor when not displaying highlighted selection. * gdk/gdkrgb.c (gdk_rgb_init): Add in a cast to gpointer to make IRIX cc happy. Thu Jan 14 12:29:50 1999 Owen Taylor <otaylor@redhat.com> * gtk/gtkcheckbutton.c (gtk_check_button_draw): Restructure the drawing code to remove a bit of duplication - and to remove a call to gtk_widget_draw_focus() that queues a redraw when an expose occurs. * gtk/gtklabel.c (gtk_label_expose): Fix up handling of ypadding. * gtk/gtknotebook.c (gtk_notebook_draw): If we redraw the whole widget, also redraw the corresponding areas of the child widget. (have_visible_child still has some problems) * gdk/gdkpixmap.c: Change some g_new's to g_new0 so that fields unused for pixmaps get initialzized sanely. * gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: Add new calls gdk_window_is_visible() and gdk_window_is_viewable() and a mapped flag to the window private structure. * gtk/gtkbin.c gtk/gtkclist.c gtk/gtkfixed.c gtk/gtkitem.c gtk/gtklayout.c gtk/gtklist.c gtk/gtkmenushell.c gtk/gtknotebook.c gtk/gtkpaned.c gtk/gtktree.c gtk/gtktreeitem.c gtk/gtkviewport.c: Map windows after mapping children. * gtk/gtkwidget.c (gtk_widget_clip_rect): Handle rectangles completely clipped away correctly. * gtk/gtkwidget.c (gtk_widget_idle_draw): Don't call gtk_widget_draw if width or height is 0. * gtk/gtkwidget.c (gtk_widget_idle_draw): Don't rely on GTK_REDRAW_PENDING after we've cleared it. (This was causing draw-combining to not happen at all). * gtk/gtkbin.c gtk/gtkscale.c: Remove uneccessary calls to gtk_widget_queue_draw() when mapping.
Diffstat (limited to 'gtk/gtkcheckbutton.c')
-rw-r--r--gtk/gtkcheckbutton.c55
1 files changed, 37 insertions, 18 deletions
diff --git a/gtk/gtkcheckbutton.c b/gtk/gtkcheckbutton.c
index b77a373b9d..1e69eb56d9 100644
--- a/gtk/gtkcheckbutton.c
+++ b/gtk/gtkcheckbutton.c
@@ -37,6 +37,8 @@ static void gtk_check_button_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
static gint gtk_check_button_expose (GtkWidget *widget,
GdkEventExpose *event);
+static void gtk_check_button_paint (GtkWidget *widget,
+ GdkRectangle *area);
static void gtk_check_button_draw_indicator (GtkCheckButton *check_button,
GdkRectangle *area);
static void gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
@@ -119,6 +121,37 @@ gtk_check_button_new_with_label (const gchar *label)
return check_button;
}
+/* This should only be called when toggle_button->draw_indicator
+ * is true.
+ */
+static void
+gtk_check_button_paint (GtkWidget *widget,
+ GdkRectangle *area)
+{
+ GtkCheckButton *check_button;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_CHECK_BUTTON (widget));
+
+ check_button = GTK_CHECK_BUTTON (widget);
+
+ if (GTK_WIDGET_DRAWABLE (widget))
+ {
+ gint border_width;
+
+ gtk_check_button_draw_indicator (check_button, area);
+
+ border_width = GTK_CONTAINER (widget)->border_width;
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ gtk_paint_focus (widget->style, widget->window,
+ NULL, widget, "checkbutton",
+ border_width + widget->allocation.x,
+ border_width + widget->allocation.y,
+ widget->allocation.width - 2 * border_width - 1,
+ widget->allocation.height - 2 * border_width - 1);
+ }
+}
+
static void
gtk_check_button_draw (GtkWidget *widget,
GdkRectangle *area)
@@ -140,21 +173,9 @@ gtk_check_button_draw (GtkWidget *widget,
{
if (toggle_button->draw_indicator)
{
- gint border_width;
-
- gtk_check_button_draw_indicator (check_button, area);
-
- border_width = GTK_CONTAINER (widget)->border_width;
- if (GTK_WIDGET_HAS_FOCUS (widget))
- gtk_paint_focus (widget->style, widget->window,
- NULL, widget, "checkbutton",
- border_width + widget->allocation.x,
- border_width + widget->allocation.y,
- widget->allocation.width - 2 * border_width - 1,
- widget->allocation.height - 2 * border_width - 1);
-
- if (bin->child && GTK_WIDGET_NO_WINDOW (bin->child) &&
- gtk_widget_intersect (bin->child, area, &child_area))
+ gtk_check_button_paint (widget, area);
+
+ if (bin->child && gtk_widget_intersect (bin->child, area, &child_area))
gtk_widget_draw (bin->child, &child_area);
}
else
@@ -280,14 +301,12 @@ gtk_check_button_expose (GtkWidget *widget,
{
if (toggle_button->draw_indicator)
{
- gtk_check_button_draw_indicator (check_button, &event->area);
+ gtk_check_button_paint (widget, &event->area);
child_event = *event;
if (bin->child && GTK_WIDGET_NO_WINDOW (bin->child) &&
gtk_widget_intersect (bin->child, &event->area, &child_event.area))
gtk_widget_event (bin->child, (GdkEvent*) &child_event);
-
- gtk_widget_draw_focus (widget);
}
else
{