[gtk+] API: widget: Remove the expose event
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] API: widget: Remove the expose event
- Date: Sun, 26 Sep 2010 13:43:51 +0000 (UTC)
commit 326f887ae7c48812c23e27cac50a4f3cff00afa8
Author: Benjamin Otte <otte redhat com>
Date: Sat Sep 11 00:42:51 2010 +0200
API: widget: Remove the expose event
gtk_widget_send_expose() now calls the draw function.
gtk/gtkwidget.c | 132 +++++++++++++++++++------------------------------------
gtk/gtkwidget.h | 2 -
2 files changed, 46 insertions(+), 88 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 8b77e21..38d3dea 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -342,8 +342,6 @@ static gboolean gtk_widget_real_show_help (GtkWidget *widget,
static void gtk_widget_dispatch_child_properties_changed (GtkWidget *object,
guint n_pspecs,
GParamSpec **pspecs);
-static gboolean gtk_widget_real_expose_event (GtkWidget *widget,
- GdkEventExpose *event);
static gboolean gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event);
static gboolean gtk_widget_real_key_release_event (GtkWidget *widget,
@@ -629,7 +627,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->motion_notify_event = NULL;
klass->delete_event = NULL;
klass->destroy_event = NULL;
- klass->expose_event = gtk_widget_real_expose_event;
klass->key_press_event = gtk_widget_real_key_press_event;
klass->key_release_event = gtk_widget_real_key_release_event;
klass->enter_notify_event = NULL;
@@ -1614,33 +1611,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
/**
- * GtkWidget::expose-event:
- * @widget: the object which received the signal.
- * @event: (type Gdk.EventExpose): the #GdkEventExpose which triggered
- * this signal.
- *
- * The ::expose-event signal is emitted when an area of a previously
- * obscured #GdkWindow is made visible and needs to be redrawn.
- * #GTK_NO_WINDOW widgets will get a synthesized event from their parent
- * widget.
- *
- * To receive this signal, the #GdkWindow associated to the widget needs
- * to enable the #GDK_EXPOSURE_MASK mask.
- *
- * Returns: %TRUE to stop other handlers from being invoked for the event.
- * %FALSE to propagate the event further.
- */
- widget_signals[EXPOSE_EVENT] =
- g_signal_new (I_("expose-event"),
- G_TYPE_FROM_CLASS (gobject_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkWidgetClass, expose_event),
- _gtk_boolean_handled_accumulator, NULL,
- _gtk_marshal_BOOLEAN__BOXED,
- G_TYPE_BOOLEAN, 1,
- GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
-
- /**
* GtkWidget::key-press-event:
* @widget: the object which received the signal
* @event: (type Gdk.EventKey): the #GdkEventKey which triggered this signal.
@@ -5150,59 +5120,6 @@ _gtk_widget_draw_internal (GtkWidget *widget,
}
static gboolean
-gtk_widget_real_expose_event (GtkWidget *widget,
- GdkEventExpose *expose)
-{
- GdkWindow *window, *w;
- gboolean result = FALSE;
- cairo_t *cr;
- int x, y;
-
- if (!gtk_widget_is_drawable (widget))
- return FALSE;
-
- cr = gdk_cairo_create (expose->window);
- gtk_cairo_set_event (cr, expose);
-
- gdk_cairo_region (cr, expose->region);
- cairo_clip (cr);
-
- if (!gtk_widget_get_has_window (widget))
- {
- x = widget->priv->allocation.x;
- y = widget->priv->allocation.y;
- }
- else
- {
- x = 0;
- y = 0;
- }
-
- /* translate cairo context properly */
- window = gtk_widget_get_window (widget);
-
- for (w = expose->window; w && w != window; w = gdk_window_get_parent (w))
- {
- int wx, wy;
- gdk_window_get_position (w, &wx, &wy);
- x -= wx;
- y -= wy;
- }
-
- if (w)
- cairo_translate (cr, x, y);
-
- _gtk_widget_draw_internal (widget, cr, w != NULL);
-
- /* unset here, so if someone keeps a reference to cr we
- * don't leak the window. */
- gtk_cairo_set_event (cr, NULL);
- cairo_destroy (cr);
-
- return result;
-}
-
-static gboolean
gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event)
{
@@ -5296,12 +5213,55 @@ gint
gtk_widget_send_expose (GtkWidget *widget,
GdkEvent *event)
{
+ GdkWindow *window, *w;
+ gboolean result = FALSE;
+ cairo_t *cr;
+ int x, y;
+
g_return_val_if_fail (GTK_IS_WIDGET (widget), TRUE);
g_return_val_if_fail (gtk_widget_get_realized (widget), TRUE);
g_return_val_if_fail (event != NULL, TRUE);
g_return_val_if_fail (event->type == GDK_EXPOSE, TRUE);
- return gtk_widget_event_internal (widget, event);
+ cr = gdk_cairo_create (event->expose.window);
+ gtk_cairo_set_event (cr, &event->expose);
+
+ gdk_cairo_region (cr, event->expose.region);
+ cairo_clip (cr);
+
+ if (!gtk_widget_get_has_window (widget))
+ {
+ x = widget->priv->allocation.x;
+ y = widget->priv->allocation.y;
+ }
+ else
+ {
+ x = 0;
+ y = 0;
+ }
+
+ /* translate cairo context properly */
+ window = gtk_widget_get_window (widget);
+
+ for (w = event->expose.window; w && w != window; w = gdk_window_get_parent (w))
+ {
+ int wx, wy;
+ gdk_window_get_position (w, &wx, &wy);
+ x -= wx;
+ y -= wy;
+ }
+
+ if (w)
+ cairo_translate (cr, x, y);
+
+ _gtk_widget_draw_internal (widget, cr, w != NULL);
+
+ /* unset here, so if someone keeps a reference to cr we
+ * don't leak the window. */
+ gtk_cairo_set_event (cr, NULL);
+ cairo_destroy (cr);
+
+ return result;
}
static gboolean
@@ -6677,7 +6637,7 @@ gtk_widget_set_mapped (GtkWidget *widget,
* @app_paintable: %TRUE if the application will paint on the widget
*
* Sets whether the application intends to draw on the widget in
- * an #GtkWidget::expose-event handler.
+ * an #GtkWidget::draw handler.
*
* This is a hint to the widget and does not affect the behavior of
* the GTK+ core; many widgets ignore this flag entirely. For widgets
@@ -6715,7 +6675,7 @@ gtk_widget_set_app_paintable (GtkWidget *widget,
* @widget: a #GtkWidget
*
* Determines whether the application intends to draw on the widget in
- * an #GtkWidget::expose-event handler.
+ * an #GtkWidget::draw handler.
*
* See gtk_widget_set_app_paintable()
*
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 1e4d61b..5b9e3a5 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -375,8 +375,6 @@ struct _GtkWidgetClass
GdkEventAny *event);
gboolean (* destroy_event) (GtkWidget *widget,
GdkEventAny *event);
- gboolean (* expose_event) (GtkWidget *widget,
- GdkEventExpose *event);
gboolean (* key_press_event) (GtkWidget *widget,
GdkEventKey *event);
gboolean (* key_release_event) (GtkWidget *widget,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]