1998-02-19 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkcombo.c (gtk_combo_entry_key_press): Added M-p and M-n
key equivalents for up and down keys. Just for us Emacs weenies :-)
Thu Feb 19 12:18:24 1998 Owen Taylor <owt1@cornell.edu>
* gtk/testgtk.c : Use POINTER_MOTION_HINT when dragging
shapes around.
(gtk-wille-980203-0
Stefan Wille <1wille@vsys1.informatik.uni-hamburg.de>)
* gtk/gtktext.c : Fixes to inserting and deleting characters
on line breaks.
(gtk-magnus-980210-0 Magnus Hulthen <magnus@axiom.se>)
Thu Feb 19 06:56:52 1998 Tim Janik <timj@gimp.org>
* gtkbox.c:
* gtkbutton.c:
* gtkcontainer.c:
* gtkframe.c:
* gtklabel.c:
* gtkobject.c:
* gtkwidget.c:
* gtkwindow.c:
present the argument access masks on their announcement.
* gtk/gtkobject.h:
* gtk/gtkobject.c:
(gtk_object_add_arg_type): take an additional argument describing
the access mask of the new arg. this can be of GTK_ARG_READABLE,
GTK_ARG_WRITABLE or GTK_ARG_READWRITE (the latter is an alias for
the two previous ones).
(gtk_object_query_args): provide an access_mask array if desired.
* gtk/gtkwidget.c (gtk_widget_real_realize):
realized the assumtion that widget is a NO_WINDOW widget
in actuall code.
* gtkwindow.c:
slight changes to gtk_window_configure_event that will make
the resizing behaviour a little less odd.
sigh, for some (buggy) reason, there are still container resizes
triggered by manual resizing to very small window sizes.
the cointainer resizes will cause gtk_real_window_move_resize to
be invoked, which makes the app look like it wants to fight the users
resizing action. ;(
Thu Feb 19 01:11:48 1998 Owen Taylor <owt1@cornell.edu>
* configure.in gdk/gdk.[ch] gdk/gdkcc.c
gdk/gdkglobals.c gdk/gdkinputcommon.h gdk/gdkprivate.h
gdk/gdkvisual.c glib/configure.in glib/glib.h
glib/gutils.c gtk/Makefile.am gtk/gtkmain.c
gtk/gtkobject.[ch] gtk/gtkdebug.h docs/debugging.txt
New system for controlling debugging:
* --enable-debug=[no/yes/minimum]
* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
* G_NO_CHECK_CASTS to control cast checking
* G_ENABLE_DEBUG enables run time checking which controls:
Object tracing
Showing events
Miscellaneous g_print's in GDK
And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
* debug_level and show_events are gone from GTK
See docs/debugging.txt for details.
And some fixups to the configure.in's so '-g' can be
overriden on the command line for --enable-debug
Thu Feb 19 05:40:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtknotebook.h:
* gtk/gtknotebook.c:
applied gtk-hamann_jeske-980218-0.patch.gz, a patch from
Lars Hamann and Stefan Jeske which introduces major
usability improvements.
fixed bugs are:
- container border_width>0 does now work correctly for show_tabs==TRUE
and for tab_pos=GTK_POS_BOTTOM/GTK_POS_RIGHT.
- toggleing visibility of the tab labels works now.
- emission of GtkNotebook:switch_page and all page changes
also the signature for the GtkNotebook:switch_page signal changed,
callbacks should now look like:
gint notebook_switch_page (GtkWidget *widget, GtkNotebookPage *page,
gint page_num, gpointer data);
Wed Feb 18 04:38:24 1998 Tim Janik <timj@gimp.org>
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
new signal GtkWidget::set_parent. this signal will be emitted once a
widget gets a new/no parent assigned (i.e. from gtk_widget_unparent
and gtk_widget_set_parent).
Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org>
* gtk/gtktooltips.h:
new functions gtk_tooltips_data_get and
gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now.
(_GtkTooltips): removed some fields that were never used.
changed boolean fields to one bit size, to pack together with
the delay field.
(_GtkTooltipsData): added tip_private, renamed tips_text to
tip_text.
* gtk/gtktooltips.c:
(gtk_tooltips_data_get): new function to retrive the
_GtkTooltipsData structure of a widget.
(gtk_tooltips_set_tip): new function for more extensible tooltips
settings than gtk_tooltips_set_tips which is discuraged now.
removed a bug that caused a stale object_data key to a
_GtkTooltipsData structure.
removed a bug that caused tips falsly to come up for a grab widget
on widgets where events were grabbed from.
Tue Feb 17 05:41:31 1998 Tim Janik <timj@gimp.org>
* gtk/gtkentry.c (gtk_entry_init): invoke gtk_entry_grow_text already
in this place, so the application will never see entry->text==NULL.
(see also ChangeLog entry from Tue Feb 11 1997 on this).
also i added some blurb about recent changes to the NEWS file,
and updated the TODO.
Tue Feb 17 05:41:31 1998 Tim Janik <timj@gimp.org>
* gtk/gtkcheckbutton.c:
* gtk/gtkradiobutton.c:
* gtk/gtktogglebutton.c:
applied patch to fix draw_indicator behaviour from Lars Hamann
and Stefan Jeske.
* gtk/gtkmain.h:
* gtk/gtkmain.c (gtk_grab_get_current): new function
that returns the current grab widget or NULL.
* gdk/gdkwindow.c (gdk_window_shape_combine_mask): remove
shape mask if mask==NULL (provided by Stefan Wille).
Tue Feb 17 00:06:26 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkpaned.c, gtk/gtk[hv]paned.c: (gtk-fortier-980215-0)
From Patrice Fortier <Patrice.Fortier@aquarel.fr>
Add a widget->window for paned windows, so they
can be reparented properly.
Mon Feb 16 23:47:09 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkviewport.c: (gtk-fortier-980130-0)
From Patrice Fortier <Patrice.Fortier@aquarel.fr>
Eliminate some extra expose events for viewports.
(To be conservative, I set the user's event mask for
both widget->window, and viewport->bin_window -owt)
Fri Feb 13 19:08:51 1998 Tim Janik <timj@gimp.org>
* gtk/gtkclist.c (check_exposures): check for clist !REALIZED.
(draw_rows): bail out if the widget isn't drawable.
(hadjustment_value_changed):
(vadjustment_value_changed): bail out if clist isn't drawable.
* gdk/gdk.c (graphics_expose_predicate): check for private != NULL.
(gdk_event_get_graphics_expose): check for window != NULL.
Fri Feb 13 00:33:26 1998 Owen Taylor <owt1@cornell.edu>
* gtk/testgtk.c (shape_create_icon): Realize window before
creating xpm so it gets the right colormap/visual,
instead of the default one.
Thu Feb 12 23:59:49 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtksignal.[ch] gtk/gtkmain.[ch] gtk/gtkcontainer.[ch]
gtk/gtkselection.[ch] gdk/gdk.[ch] gtktypeutils.h
Replaced all _interp functions with _full functions.
(_interp functions left in for compatibility until 0.99.5).
Difference: _full functions take _both_ a C-language callback and a
marshaller, and simply ignore the C-language callback
if the marshaller is present. This allows the destroy notification
to be used without marshalling.
gtk_selection_add_handler[_full]() regularized to agree
with other callbacks.
Also, added gtk_input_add_full() to the header file.
(gtk_input_add_interp() was never there)
* gtk/gtkmain.[ch] gtk/gtkwidget.c: Idle functions are now prioritized.
Added new function gtk_idle_add_priority to create
an idle with a specified priority (default is zero)
constants #defined - GTK_PRIORITY_[HIGH/INTERNAL/DEFAULT/LOW]
(redraws, resizes run at GTK_PRIORITY_INTERNAL)
* gtk/gtkentry.c gtk/testselection.c: changes to keep up with change
to gtkselection.c.
Wed Feb 11 00:18:31 1998 Tim Janik <timj@gimp.org>
* docs/refcounting.txt: backed out the section "Gnits to care about".
* docs/developers.txt: new file, kinda developers FAQ.
Wed Feb 11 00:18:31 1998 Tim Janik <timj@gimp.org>
* gtk/gtksignal.h:
* gtk/gtksignal.c: new function gtk_signal_handler_pending() returning
the id of the next handler pending for that signal or 0.
put struct GtkHandler back into gtksignal.c along with
gtk_signal_get_handlers.
Tue Feb 10 07:12:07 1998 Tim Janik <timj@gimp.org>
* gtk/gtksignal.h:
* gtk/gtksignal.c:
ok, there have been several severe bugs in the signal handler
referencing and ->next connection stuff. these bugs caused
invokations of handlers that are disconnected and - worse -
destroyed already. invokation of *destroyd* handlers mean:
anything can be executed , because the handler structure can just
as well be realocated.
at the cost of an extra ->prev field per handler we should have a
reasonable stable system now, because of the various places that
can cause a handler to be disconnected (*any* handler invokation can
cause *any* or *all* handlers to be disconnected, there is no way
around a doubly linked list, actually handler disconnection has never
worked correctly because of this.
handlers are connected together via a *doubly* linked list now, and it
is *not* valid to remove a handler out of this list untill all its
references have been droped, i.e. handler->ref_count==0.
to prevent emissions of disconnected but still referenced handlers,
disconnected handlers are simply marked as blocked and get an id of 0
which is an invalid signal handler id.
the handler->id has been changed to have 28 significant bits (using
alignment gaps), since 65536 (old range: guint16) signal connections
(as a total) can easily be reached by complex applications.
this whole handler thingy is at least as tedious as writing doubly
linked list implementations ;)
Mon Feb 9 23:08:16 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkwidget.c (gtk_widget_unparent): Check for
the RESIZE_NEEDED flag and remove the widget from the list.
Remove the check from gtk_widget_destroy (no longer needed).
* Unrealize widget _before_ calling "destroy" signal, and
unset VISIBLE flag.
* Unrealize child widgets _after_ unrealizing parent to improve
visual appearance.
Mon Feb 9 16:42:21 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gtk/gtksignal.c (gtk_signal_get_handlers): no longer a private
routine;
gtksignal.h: export gtk_signal_get_handlers and GtkHandlers type.
Sun Feb 8 07:06:54 1998 Tim Janik <timj@gimp.org>
* gtk/gtkmenu.c (gtk_menu_get_attach_widget): new fundtion to return
the widget that the menu is attached to.
Sat Feb 7 11:33:08 1998 Owen Taylor <owt1@cornell.edu>
* gdk/gdkgc.c (gdk_gc_copy): use a mask of 0xffffffff
instead of 0xffff, since there are 22 flags currently
defined. (From: Jon Trowbridge <trow@emccta.com>)
Changed to something better. ~((~1) << GCLastBit)
(From: from Daniel Stephens <daniel@cheeseplant.org>)
Sat Feb 7 11:33:08 1998 Owen Taylor <owt1@cornell.edu>
* gdk/gdkgc.c (gdk_gc_copy): use a mask of 0xffffffff
instead of 0xffff, since there are 22 flags currently
defined. (From: Jon Trowbridge <trow@emccta.com>)
Sat Feb 7 02:29:01 1998 Tim Janik <timj@gimp.org>
* gdk/gdk.c (gdk_event_translate): don't wipe out window_private's x
and y coordinates if the configure notify is only about resizing,
query the correct origin instead.
Thu Feb 5 02:13:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtklist.h:
* gtk/gtklist.c (gtk_list_remove_items_no_unref): new function
to perform the same actions as gtk_list_remove_items, but
supply the removed widgets with an additional reference count.
* gtk/gtkmain.c (gtk_main_iteration_do): ignore events
with event_widget == NULL, since they are bogus events
from destroyed GdkWindows, exept for the case where
event->type==GDK_PROPERTY_NOTIFY. Always handle expired
timeout functions when returning from this function.
* gtk/gtkwidget.c (gtk_widget_event): ignore GDK_EXPOSE events
if event->window == NULL. Also, if this function couldn't handle
the event for any reason (including failing assumptions), make
the return value to look as if the event had been handled to
avoid further processing (and warnings).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: remove gtk_widget_sink, because there is
no point in providing such a function.
* gdk/gdk.c (gdk_init): changed options `-name' and `-class'
to `--name' and `--class', because the old names would
confuse getopt(). these arguments have been introduced in the
changes from gtk+970916 to gtk+970925 without a ChangeLog entry,
changing argument names is painful, it would be nice if people
would care about compatibility and consistency in the first place!
Tue Feb 3 15:09:55 1998 Tim Janik <timj@gimp.org>
* gtk/gtksignal.c (gtk_signal_real_emit): for the emission
of AFTER signals, fetch the objects signals via
gtk_signal_get_handlers again. some handlers might have
been removed or added. not doing this would mess up the
memchunk allocation of signal handlers (this had been
triggered by multiple *_while_alive connections), bad, bad, bad!
(gtk_handlers_run): do the referencing on signal handlers
unconditionally, the invokation of AFTER handlers will now take
care of modified lists.
* gtk/gtksignal.h: added gtk_signal_connect_while_alive.
Tue Feb 3 15:34:27 1998 Owen Taylor <owt1@cornell.edu>
* gdk/gdkcolor.c (gdk_colormap_get_system): Only query
the colormap for GRAYSCALE and PSEUDOCOLOR visuals,
and don't ask for more than 256 colors in any case.
* gdk/gdkwindow.c (gdk_window_internal_destroy): Remove
the input window information when we destroy the window,
not when we are notified of it.
* gdk/gdkinputcommon.h (gdk_input_device_new): Work around
bug in XFree86 3.3.1's handling of Wacom macro buttons.
by assumming no device will report exactly 25 buttons.
* gdk/gdkinputcommon.h (gdk_input_common_other_event): Fill
in string translation for generated key press events,
do sanity checking on received key codes.
* gdk/gdkcc.c (gdk_color_context_new): Allocate enough
room for a GdkColorContextPrivate, not just for a
GdkColorContext.
Tue Feb 3 15:09:55 1998 Tim Janik <timj@gimp.org>
* gtk/testgtk.c: don't add the same menu to different menuitems/
optionmenus.
* gtk/gtkmenuitem.h:
* gtk/gtkmenuitem.c: new function gtk_menu_item_remove_submenu ro
be consistent with optionmenu. use gtk_menu_attach_to_widget/
gtk_menu_detach for setting/removing the submenu.
invoke gtk_widget_destroy(submenu) in destructor to be consistent
with other destructors.
* gtk/gtkoptionmenu.h:
* gtk/gtkoptionmenu.c: attach/detach to menu widget via
gtk_menu_attach_to_widget/gtk_menu_detach.
invoke gtk_widget_destroy(menu) in destructor to be consistent
with other destructors.
Tue Feb 3 15:09:55 1998 Tim Janik <timj@gimp.org>
* gtk/gtkoptionmenu.h:
* gtk/gtkoptionmenu.c: attach/detach to menu widget via
* gtk/gtkmenu.h:
* gtk/gtkmenu.c: new functions gtk_menu_attach_to_widget
and gtk_menu_detach that correspond to the action of
gtk_widget_set_parent and gtk_widget_unparent.
* gtk/widget.c: few fixups.
Tue Feb 3 00:12:00 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtktable.c
Fixed problem with division by zero in row/column-spanned
tables. Also removed a bunch of conditionals by making
the observation that x/1 == x.
Mon Feb 2 04:15:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtkwindow.c:
* gtk/gtkwidget.c:
* gtk/gtkmain.c:
* gtk/gtkwidget.c:
* gtk/gtkcontainer.c:
* gtk/gtkprivate.h (GTK_PRIVATE_UNSET_FLAG) (GTK_PRIVATE_UNSET_FLAGS):
changed name to reflect that these macros in fact can't operate on
multiple flags.
Mon Feb 2 04:15:08 1998 Tim Janik <timj@gimp.org>
* gtk/gtkmain.c (gtk_propagate_event): fixed a bad, bad referencing
bug that could caused unreferencing of finalized objects.
* gtk/testgtk.c: destroy fileselection on "OK" (this triggered the
above mentioned bug).
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
implemented and object reference tracer (gtk_trace_referencing) which
is activated if GTK_TRACE_OBJECTS is defined (currently per default).
in gdb: set the static variable `gtk_trace_object' to point to the
object that you want to have reference traced.
* gtk/gtkfileselection.c: few cleanups.
Sat Jan 31 21:26:27 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkwidget.c: Added a new GTK_IN_REPARENT flag and revised
gtk_widget_reparent so that the child would not be unrealized
unnecessarily. Changed gtk_widget_unrealize () to recursively
unrealize the children (since the child windows will be
destroyed too.)
Sat Jan 31 00:13:33 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkstyle.c: Backed out change to close polygons
since it caused problems for the Notebook.
Fri Jan 30 22:28:09 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkclist.{c,h}:
- Conformity to new reference counting schemes
- Font and color information is no-longer taken from
the (possibly unitialized) style before the widget
is realized, but is obtained when needed. (Fixes
problems with non-default styles)
- white_gc => base_gc where appropriate
- Handle graphics expose events correctly (or as
correctly as anywhere else) so that scrolling when
overlapped works.
Fri Jan 30 08:51:16 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gdk/gdkcc.c (gdk_color_context_get_pixel): red/green/blue
parameters are now expected to be in [0, 65535], to be consistent
with the rest of Gdk.
(gdk_color_context_get_pixels): Made it use 16-bit color values as
well. Fixed mdist=1000000 buglet (it should start with at least
0x1000000).
(gdk_color_context_get_pixels_incremental): Same as
gdk_color_context_get_pixels().
Thu Jan 29 22:57:39 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkstyle.c (gtk_default_draw_polygon): Close
the polygon if it isn't already. (To match gtk_draw_polygon)
Simplified logic. (Appearance could probably be
improved for objects with gradual curves by adding in
some intermediate edge coloration)
Thu Jan 29 21:36:14 1998 Tim Janik <timj@gimp.org>
* gtk/gtksignal.c (gtk_signal_query): new function to gather
information about a certain signal.
* gtk/gtksignal.c (gtk_signal_newv): new function similar to
gtk_signal_new().
* gtk/gtksignal.c (gtk_signal_real_emit): check for function_offset
== 0.
* gtk/gtksignal.c (gtk_signal_connect_by_type): perform a signal
id lookup on the parent as well.
* gtk/gtkobject.c (gtk_object_class_add_user_signal): new
function for implementation of user defined signals.
* gtk/gtkobject.c (gtk_object_class_add_signals): free old
signal id array.
* gtk/gtkobject.h: this holds the typedefs for GtkSignalFunc and
GtkSignalMarshaller now, because they are used for
gtk_object_class_add_user_signal.
* gtk/gtktypeutils.c (gtk_type_class_init): reset object_class->signals
and object_class->nsignals for new object classes.
Tue Jan 27 15:52:48 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gtk/gtkhandlebox.c (gtk_handle_box_realize): The auto_shrink
policy of the floating window is now set to TRUE. This fixes the
problem of the floating window being too big when the handlebox
child is small.
(gtk_handle_box_motion): Now we use GDK_POINTER_MOTION_HINT_MASK
to improve movement.