Document expose event->region change and that gtk_widget_event doesn't
2001-03-09 Alexander Larsson <alexl@redhat.com> * docs/Changes-2.0.txt: Document expose event->region change and that gtk_widget_event doesn't allow passing expose events. * gdk/gdkevents.h: Add region to expose event. * gdk/gdkevents.c: Handle event->region in gdk_event_copy() and gdk_event_free(). * gdk/gdkwindow.c (gdk_window_process_updates_internal): Generate expose_event->region when creating expose events. * gdk/x11/gdkevents-x11.c: Generate expose events with regions when translating X events. * gtk/gtkcontainer.[ch]: Default expose handler that propagates expose events to NO_WINDOW children. New function gtk_container_propagate_expose() * gtk/gtkwidget.[ch]: Moved gtk_widget_event implementation to gtk_widget_event_internal. gtk_widget_event calls gtk_widget_event_internal but doesn't allow expose events. New function gtk_widget_send_expose() to send expose events. New function gtk_widget_region_intersect() to calculate window/region intersections. * gtk/gtkmain.c (gtk_main_do_event): Use gdk_window_begin_paint_region() instead of gdk_window_begin_paint_rect(). Use gtk_widget_send_expose() to send expose events. * gtk/gtkbin.c: * gtk/gtkbox.c: * gtk/gtkfixed.c: * gtk/gtkimagemenuitem.c: * gtk/gtklist.c: * gtk/gtkpacker.c: * gtk/gtktable.c: * gtk/gtktree.c: Remove expose handler, using the default container implementation instead. * gtk/gtkbutton.c: * gtk/gtkcheckbutton.c: * gtk/gtkeventbox.c: * gtk/gtkfixed.c: * gtk/gtkhandlebox.c: * gtk/gtklayout.c: * gtk/gtklistitem.c: * gtk/gtkmenu.c: * gtk/gtkmenubar.c: * gtk/gtkmenuitem.c: * gtk/gtknotebook.c: * gtk/gtkoptionmenu.c: * gtk/gtkpaned.c: * gtk/gtkscrolledwindow.c: * gtk/gtktogglebutton.c: * gtk/gtktoolbar.c: * gtk/gtktreeitem.c: * gtk/gtkviewport.c: Chain expose handler to parent class handler. Use gtk_container_propagate_expose() to propagate exposes. * gtk/gtkclist.c (check_exposures): * gtk/gtktext.c (process_exposes): Use gtk_widget_send_expose instead of gtk_widget_event.
This commit is contained in:
committed by
Alexander Larsson
parent
8f35f03045
commit
e7d4a7f90d
@ -58,6 +58,8 @@ static gint gtk_menu_bar_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event);
|
||||
|
||||
|
||||
static GtkMenuShellClass *parent_class = NULL;
|
||||
|
||||
GtkType
|
||||
gtk_menu_bar_get_type (void)
|
||||
{
|
||||
@ -92,6 +94,8 @@ gtk_menu_bar_class_init (GtkMenuBarClass *class)
|
||||
|
||||
GtkBindingSet *binding_set;
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
|
||||
object_class = (GtkObjectClass*) class;
|
||||
widget_class = (GtkWidgetClass*) class;
|
||||
menu_shell_class = (GtkMenuShellClass*) class;
|
||||
@ -384,11 +388,6 @@ static gint
|
||||
gtk_menu_bar_expose (GtkWidget *widget,
|
||||
GdkEventExpose *event)
|
||||
{
|
||||
GtkMenuShell *menu_shell;
|
||||
GdkEventExpose child_event;
|
||||
GList *children;
|
||||
GtkWidget *child;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, FALSE);
|
||||
g_return_val_if_fail (GTK_IS_MENU_BAR (widget), FALSE);
|
||||
g_return_val_if_fail (event != NULL, FALSE);
|
||||
@ -397,19 +396,7 @@ gtk_menu_bar_expose (GtkWidget *widget,
|
||||
{
|
||||
gtk_menu_bar_paint (widget, &event->area);
|
||||
|
||||
menu_shell = GTK_MENU_SHELL (widget);
|
||||
child_event = *event;
|
||||
|
||||
children = menu_shell->children;
|
||||
while (children)
|
||||
{
|
||||
child = children->data;
|
||||
children = children->next;
|
||||
|
||||
if (GTK_WIDGET_NO_WINDOW (child) &&
|
||||
gtk_widget_intersect (child, &event->area, &child_event.area))
|
||||
gtk_widget_event (child, (GdkEvent*) &child_event);
|
||||
}
|
||||
(* GTK_WIDGET_CLASS (parent_class)->expose_event) (widget, event);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user