From 26be2f7003d278f1abdea92e363da8272098f1b5 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 18 Dec 1997 02:24:41 +0000 Subject: [PATCH] Filling in the details. --- ChangeLog | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-0 | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-10 | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-2 | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-4 | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-6 | 194 ++++++++++++++++++++++++++++++++++++++++++++- ChangeLog.pre-2-8 | 194 ++++++++++++++++++++++++++++++++++++++++++++- REFCOUNTING | 92 +++++++++++++++++++++ 8 files changed, 1443 insertions(+), 7 deletions(-) create mode 100644 REFCOUNTING diff --git a/ChangeLog b/ChangeLog index 508477f2de..48f2271d1a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 508477f2de..48f2271d1a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,195 @@ +Wed Dec 17 20:59:52 1997 Owen Taylor + * gdk/gdkinput.c gdk/gdkinput.h gdk/gdkinputcommon.h + gdk/gdkinputxfree.h gdk/gdkinputgxi.h gdk/gdkinputnone.h. + gtk/gtkinputdialog.h gtk/testinput.c + Added support for device keys mapping to key events. + Fixed various bugs. + +Wed Dec 17 20:53:00 1997 Owen Taylor + * gdk/gdk.c gdk/gdk.h: Changed gdk_get_event to remove + predicate filtering, and to allocate the events. + Added gdk_event_get_graphics_expose for scroll handling. + * gtk/gtkmain.c gtk/gtktext.c: + Use above changes. Interface change for gtk_get_current_event. + * testgtk.c + Added another test to test new scrolling mechanism.s + * gdk/gdk.c gdk/gdk.h gdk/gdkwindow.c gdk/gdkprivate.h: + Added beginnings of event filtering. Removed obsolte + OtherEvent mechanism. + * gdk/gdk.c: Combined FocusIn/FocusOut events. Now ignore + focus events which aren't for window itself. (Only pay + attention to NotifyAncestor/Inferior/Nonlinear) + * gtk/gtkwindow.c gtk/gtkwindow.h: Virtualize set_focus + function so it can be overridden. + * gtk/gtkwidget.c: Reparenting should now work for + containers. (Guillaume Laurent ) + * gdk/gdkgc.c: By default, GraphicsExpose events are now + _not_ generated. + * gtk/testselection.c: Suppress a warning, fix a bug? + +Wed Dec 17 20:47:42 1997 Owen Taylor + * configure.in, glib/configure.in: + Remember if user set CFLAGS, so we can set it for --enable-debug + only if they didn't. + Added missing quotes. )Raphael.Quinet@eed.ericsson.se) + Only use -DX_LOCALE if setlocale doesn't work. + * gdk/gdki18n.h: Simplified system for trying to get iswalnum() - + include if present, otherwise if present. + +Wed Dec 17 21:09:12 1997 Owen Taylor + 1997-10-13 Marius Vollmer + + Bug fixes: + + * gtksignal.c (gtk_params_get): Initialize the GtkArg even when + the return type is GTK_TYPE_NONE. + + Revamped reference counting, see the file REFCOUNTING. + + * Makefile.am (EXTRA_DIST): Added REFCOUNTING. + * REFCOUNTING: New file. + + * gdk/gdk.c (received_destroy_notify, window_to_destroy): Removed. + (gdk_event_get): Code that deals with the above removed. + (gdk_event_translate): Abort when the GdkWindow for the XEvent + cannot be found. For DestroyNotify: Do not use + receive_destroy_notify and window_to_destroy but call + gdk_window_destroy_notify. + + * gdk/gdk.h: (gdk_pixmap_destroy, gdk_colormap_destroy, + gdk_fontset_free): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_unref): New prototypes. + (gdk_font_free, gdk_font_unref): Renamed gdk_font_free to + gdk_font_unref. + + * gdk/gdkcolor.c (gdk_colormap_real_destroy): Made static. + (gdk_colormap_destroy): Removed. + + * gdk/gdkfont.c (gdk_font_free): Renamed to gdk_font_unref. + Handle fontsets as well. + (gdk_fontset_free): Removed. + + * gdk/gdkpixmap.c (gdk_pixmap_destroy): Removed. + (gdk_pixmap_ref, gdk_pixmap_unref, gdk_bitmap_ref, + gdk_bitmap_ref): New functions. + + * gdk/gdkwindow.c: (gdk_window_new, gdk_window_foreign_new): Call + gdk_window_ref for the pointer in the xid table. + (gdk_window_internal_destroy): Renamed from gdk_window_destroy. + New parameter XDESTROY that takes the role of `destroyed==2'; + removed special casing of `destroyed==2'. Free dnd_data only when + really destroying. Do not touch the ref_count. Calling + gdk_window_destroy on a Pixmap is now a real error, not just a + warning. + (gdk_window_destroy): Just call gdk_window_internal_destroy and + gdk_window_unref, as advertised in REFCOUNTING. + (gdk_window_destroy_notify): New function. + (gdk_window_unref): Print a warning when the ref_count is zero and + the window has not been destroyed. Should never happen. Do not + destroy the window, just free the memory. + + * gdk/gdkprivate.h (gdk_window_real_destroy): Removed. + + * gtk/gtkaccelerator.c (gtk_accelerator_table_destroy): Removed. + (gtk_accelerator_table_unref): Do the job of + gtk_accelerator_table_destroy directly. + (gtk_accelerator_table_init): Init ref_count with 1. + + * gtk/gtkaccelerator.h (gtk_accelerator_table_destroy): Removed. + + * gtk/gtkcurve.c, gtk/gtkgamma.c: Replaced gdk_pixmap_destroy with + gdk_pixmap_unref. + + * gtk/gtkhscrollbar.c (gtk_hscrollbar_realize): Reflect the fact + that the widget->window is used as the range->trough in the + ref_count. + * gtk/gtkvscrollbar.c (gtk_vscrollbar_realize): Likewise. + + * gtk/gtkmain.c (gtk_main_iteration): Protect event_widget with + ref/unref while handling the GDK_DELETE and GDK_DESTROY events. + + * gtk/gtkmenu.c (gtk_menu_set_accelerator_table): Don't do + anything when the new accel_table is the old one. + + * gtk/gtkmenufactory.c (gtk_menu_factory_destroy): Unref + factory->table if there is one. + (gtk_menu_factory_create, gtk_menu_factory_create_widget): Don't + ref newly created accel_table, it is now created with a ref_count + of 1. + + * gtk/gtkmenuitem.c (gtk_menu_item_set_submenu): Don't do + anything when the new submenu is the old one. + + * gtk/gtkpixmap.c (gtk_pixmap_destroy): New static function. + (parent_class): New global variable. + (gtk_pixmap_init): Set object_class->destroy. + (gtk_pixmap_set): Don't do anything about the pixmap when the new + pixmap is the old one. Likewise for the mask. + + * gtk/gtkprogressbar.c, gtk/gtkruler.c: Replaced + gdk_pixmap_destroy with gdk_pixmap_unref. + + * gtk/gtkrange.c (gtk_range_set_adjustment): Don't do + anything when the new adjustment is the old one. + + * gtk/gtkrc.c: Replaced gdk_fontset_free/gdk_font_free with + gdk_font_unref. + + * gtk/gtkstyle.c (gtk_style_new): Initialize ref_count with 1. + (gtk_styles_init): Replace gtk_style_destroy with gtk_style_unref + for the cache. + (gtk_style_new_from_key): Ref style before returning it when it + has not been newly created. + (gtk_style_destroy): Don't look at the ref_count, destroy always. + Free style-font with gdk_font_unref, regardless of font->type. + + * gtk/gtktooltips.c (gtk_tooltips_real_destroy): Renamed from + gtk_tooltips_destroy and made static. Don't look at ref_count, + destroy always. + (gtk_tooltips_new): Initialize ref_count with 1. + (gtk_tooltips_unref): Don't look at pending_destroy, destroy + always when ref_count is 0. + (gtk_tooltios_widget_remove): Use gtk_tooltips_destroy_data + instead of hand-coded destruction. + + * gtk/gtktooltips.h (GtkTooltips::pending_destroy): Removed. + (gtk_tooltips_destroy): Removed. + + * gtk/gtkviewport.c (gtk_viewport_set_hadjustment, + gtk_viewport_set_vadjustment): Don't do anything when the new + adjustment is the old one. + + * gtk/gtkwidget.c (gtk_widget_reparent): Protect the reparented + widget with ref/unref while moving it. + (gtk_widget_set_default_colormap): Replace gdk_colormap_destroy + with the proper ref/unref spell. + (gtk_widget_set_default_style): Don't do anything when the new + style is the old one. + + * gtk/testinput.c (configure_event): Replaced gdk_pixmap_destroy + with gdk_pixmap_unref. + + More Interpreter support: + + * gdk/gdktypes.h (GdkDestroyNotify): New type. + + * gdk/gdk.c (struct _GdkInput::destroy): New field. + (gdk_input_add_interp): New version of gdk_input_add that follows + the interp conventions for callbacks. + (gdk_input_add): Implement in terms of gdk_input_add_interp. + (gdk_input_remove): Call destroy notify when appropriate. + + * gdk/gdk.h (gdk_input_add_interp): New prototype. + + * gtk.defs: Updated from guile-gtk. + * gtk/gtktypebuiltins.c, gtk/gtktypebuiltins.h: Regenerated. + + * gtk/gtkmain.c (GtkInputFunction, struct _GtkInputFunction): New + types. + (gtk_invoke_input_function, gtk_destroy_input_function, + gtk_input_add_interp, gtk_input_remove): New functions. + Wed Dec 17 12:00:48 1997 Federico Mena * gdk/gdkcc.c: New GdkColorContext functionality! This should @@ -32,7 +224,7 @@ Fri Dec 12 Owen Taylor rectangle = NULL, remove clip mask, instead of segfaulting. * gtk/gtknotebook.c: Set clip mask before redrawing, so that we don't overwrite things outside of exposed areas when - drawing the shadows. (Based on a patch from + drawing them shadows. (Based on a patch from Lars Hamann , and Stefan Jeske) Thu Dec 11 10:57:29 CST 1997 Shawn T. Amundson diff --git a/REFCOUNTING b/REFCOUNTING new file mode 100644 index 0000000000..d51d810929 --- /dev/null +++ b/REFCOUNTING @@ -0,0 +1,92 @@ +How ref counting works within Gdk and Gtk +========================================= + +Each data structure that provides ref counting offers a bunch of +functions that follow these conventions: + + *_new: Create a new structure with a reference count of 1. + *_ref: Increase ref count by one. + *_unref: Decrease ref count by one. If the count drops to zero, + free the memory. No user visible actions should take place, + like destryoing windows, etc. + +Some structures also provide a *_destroy function. + +GdkWindow +--------- + +A GdkWindow has to be explicitely destroyed with gdk_window_destroy. +This will send out a request to destroy this window and all its +children, and will decrement the ref_count of the GdkWindow by one. +Thus, it releases the inital reference created by gdk_window_new. + +All GdkWindows are kept in a hash table to translate from their XId to +the actual structure and the pointer in the hash table is reflected in +the reference count. When a DestroyNotify event is received for a +particular GdkWindow, it is removed from the hash table and the +ref_count is updated accordingly. + +You can call gdk_window_destroy more than once on a particular +GdkWindow, it will only be destroyed when it hasn't been yet. The +ref_count is *always* decremented, tho. + +GdkPixmap +--------- + +There is no gdk_pixmap_destroy function. The Pixmap is destroyed when +the last reference to it vanishes. + +GdkPixmaps are kept in the same hash table as GdkWindows but the +pointer in the hash table is *not* reflected in the ref_count. + +This works only when Pixmaps never get XEvents. I'm not sure if this +is the case. + +GdkBitmap +--------- + +A GdkBitmap is only another name for a special use of GdkPixmap. + +GdkVisual +--------- + +There are no *_new or *_destroy functions and the *_ref and *_unref +functions are noops. GdkVisuals are static structures and thus do not +need reference counting. The ref counting functions are only there +for extra defensive programming. + +GdkColormap +----------- + +Nothing special. There is no gdk_colormap_destroy function. + +GdkFont / GdkFontSet +-------------------- + +GdkFont and GdkFontSet are equivalent as far as ref counting is +concerned. Use gdk_font_ref and gdk_font_unref for both. + +There is no gdk_font_free or gdk_fontset_free function. + +GtkAcceleratorTable +------------------- + +There is no gtk_accelerator_table_destroy function. + +GtkTooltips +----------- + +There is no gtk_tooltips_destroy function. + +GtkStyle +-------- + +There is no gtk_style_destroy function. + +GtkObject +--------- + +This one is the most tricky and I'm still meditating over it. + + +- Marius Vollmer