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.
Mon Jan 26 17:12:12 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* docs/gtkfaq.sgml: additions/changes from new FAQ maintainers
Nathan Froyd and Tony Gale.
Mon Jan 26 02:15:29 1998 Tim Janik <timj@gimp.org>
* gdk/gdkdraw.c:
* gdk/gdkgc.c:
* gdk/gdkimage.c:
* gdk/gdkinput.c:
* gdk/gdkpixmap.c:
* gdk/gdkproperty.c:
* gdk/gdkselection.c:
* gdk/gdkwindow.c: added a bunch of checks for window != NULL and
private->destroyed.
(don't trust this cvs commit message, i didn't modify that many files!)
Sun Jan 25 19:15:32 1998 Tim Janik <timj@gimp.org>
* gtk/gtkwidget.h (enum): added new widget flag GTK_LEAVE_PENDING.
* gtk/gtkmain.c (gtk_main_iteration_do): if a widget has
GTK_LEAVE_PENDING set, send it its LEAVE_NOTIFY event, regardless
of a grab or sensitivity.
changed the compression code for enter/leave notify events to
free *both* compressed event, and removed an unneccessary call
to g_list_remove.
* ChangeLog: finally catched up with the recent changes on my part.
Mon Jan 19 16:21:00 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gtk/gtktoolbar.c (gtk_toolbar_class_init): Set
container_class->focus to NULL. Widgets in the toolbar should not
get the focus via the normal key bindings (no toolkit does this,
and it makes sense).
Mon Jan 19 16:21:00 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gtk/testgtk.c (create_toolbar): Removed the GTK_PIXMAP casts to
match Eckehard's new prototypes.
* gtk/gtktoolbar.h: Switched the order of the tooltip_text and
widget parameters to the gtk_toolbar_*_widget() functions, to be
friendlier to the C++ bindings. This is per request of Guillaume
Laurent.
Mon Jan 19 09:16:38 1998 Tim Janik <timj@psynet.net>
* gtk/gtkmain.c (gtk_grab_add) (gtk_grab_remove): this is a stack
of grabbing widgets now, having unique entries. the GTK_HAS_GRAB
flag of a widget is set while it is on the stack (wasn't
implemented before).
Mon Jan 19 00:46:18 1998 MET Eckehard Berns <eb@berns.prima.de>
* gtk/gtktoolbar.[ch]: changed
gtk_toolbar_{append,prepend,inser]_item to accept any GtkWidget
as icon to allow more flexibility
Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
* gstring.{c,h} gscanner.c:
renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now.
Sun Jan 18 09:57:00 1998 Owen Taylor <owt1@cornell.edu>
* gtkbutton.c gtkclist.c gtkdrawingarea.c gtkentry.c gtkeventbox.c
gtkfixed.c gtkhandlebox.c gtkhscale.c gtkhscrollbar.c gtkitem.c
gtklist.c gtkmenushell.c gtkmisc.c gtknotebook.c gtkpaned.c
gtkpreview.c gtkprogressbar.c gtkruler.c gtktext.c gtktree.c
gtkviewport.c gtkvscale.c gtkvscrollbar.c gtkwidget.{c,h}
Added gtk_widget_set_parent and gtk_widget_get_parent. All
widgets should use:
gtk_widget_get_parent() instead of widget->parent->window.
Any widget that wants to have children not in the parent window,
should use gtk_widget_set_parent () in their realize() and
add () routines.
CList and Viewport widgets changed to do this. (Viewport
widget using code from gtk-fortier-980117-0.patch.)
Sun Jan 18 03:57:52 1998 Tim Janik <timj@psynet.net>
* gtk/gtkbox.h:
* gtk/gtkbox.c: new functions gtk_box_reorder_child,
gtk_box_query_child_packing and gtk_box_set_child_packing to
allow modification of the child linkage after the widget tree
is setup.
* gtk/gtkbox.c:
* gtk/gtklabel.c:
* gtk/gtkwindow.c:
* gtk/gtkwidget.c:
* gtk/gtkobject.c: gtk_*_get_arg() and gtk_*_set_arg() fixes
and implementations.
Sat Jan 17 13:26:15 CST 1998 Shawn T. Amundson <amundson@gimp.org>
* gtk/gtkentry.[ch]: Applied patch from <lupus@lettere.unipd.it>
which adds gtk_entry_set_max_length function. This was
part of gtk-lupus-970112-0.
* gtk/testgtk.c: Applied gtk-wille-980113-0 which fixes
a problem with a shaped widget keeping grab forever
when double clicked.
* docs/gtk.texi: patch from Gregory McLean <gregm@randomc.com>
to add some on aspect_frame, button_box, and color_selection
widgets
Fri Jan 16 00:36:31 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gtk/gtkhandlebox.c: Now we use a GtkWindow of type
GTK_WINDOW_DIALOG as a destination for reparenting the child of
the handle box. This solves the problem of having X calls in
Gtk. It also makes the handle box work with KWM, OLVWM, 4Dwm (so
I expect mwm to work as well). I hadn't noticed that previously
it only worked with fvwm and twm.
* gtk/gtkhandlebox.h (struct _GtkHandleBox): Removed the
real_parent field, as it is never used.
(struct _GtkHandleBox): Added a float_window field. This is a
GtkWindow to where the child is now reparented.
Fri Jan 16 00:36:31 1998 Federico Mena <federico@bananoid.nuclecu.unam.mx>
* gtk/gtkhandlebox.c: Lots of changes all over the place. Now the
widget has two windows. The steady_window stays put in the parent
container, and the widget->window is the one that gets
reparented. Now that window is transient, in compliance with the
ICCCM, instead of an OverrideRedirect window.
We have two windows so that we can properly receive Expose events
for the thin 3D line that marks the place where the handlebox is
docked.
* gtk/gtkhandlebox.h (struct _GtkHandleBox): Added fields for
dragging (mouse position information). Added fleur_cursor so that
we look pretty. Added steady_window field; it is the window that
actually stays on the parent (widget->window is the one that gets
reparented).
Owen, this is the version with the two X calls in gtkhandlebox.c.
I'll do as you say; either we can add new calls to Gdk, or I can
modify the handle box code to use a separate GtkWindow and reparent
the child into that.
- Federico
Thu Jan 15 19:03:19 1998 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gtk/gtkclist.c (gtk_clist_set_column_width): Call
gtk_clist_size_allocate_columns every time the column
configuration changes.
1998-01-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtktoolbar.c: (gtk_real_toolbar_style_changed): Fixed
child->icon and child->label == NULL bugs.
* gtk/gtktoolbar.h: Added some new functions:
gtk_toolbar_append_widget()
gtk_toolbar_prepend_widget()
gtk_toolbar_insert_widget()
These let the user insert any kind of widget in the toolbar. Also
changed the gtk_toolbar_*_item() functions to return a
GtkWidget * so that the user can do things with the toolbar buttons.
* gtk/gtktoolbar.c: Now the toolbar supports its own buttons and
arbitrary widgets as well. Geometry management has been changed
accordingly. Added gtk_toolbar_remove() function, so container
functionality should be complete now.
* gtk/testgtk.c (create_toolbar): Added an entry widget to test
the new toolbar.
* Most of these changes are adapted from the
gtk-lupus-970112-0-patch (should be 970112... :-)
I also added Sopwith's changes to gtk_clist_insert so you can pass the title
pointer as a null to insert a blank row. Please make consistant changes
for things like this. -Jay
* Several portability fixes from Michael Callahan
<callahan@xmission.com> including adding in missing
#includes and adding void in function prototypes.
-Shawn
* gtk/gtkviewport.c: corrects a small resize bug in the
viewport widget. The viewport widget provides a _set_shadow
function to draw its shadows. But if GTK_SHADOW_NONE is sent
to this function, the viewport isn't resized correctly (it's
still considered as a shadowed widget). (gtk-fortier-971213-0)
* gtk/gtknotebook.c: this patch fixes the redraw problems of
notebook tabs, without using gdk_gc_set_clip_rectangle.
(gtk-hamann_jeske-971218-0)
* add gtk_widget_(show/hide)_all (Stefan Wille)
(gtk-wille-301297-0) Patch for testgtk not included
because it did not patch clean.
-Shawn
Mon Dec 29 22:05:45 1997 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdk/gdkgc.c (gdk_gc_copy): New function, used to copy the values
from one gc to another gc.
* gtk/gtkscrolledwindow.c (SCROLLBAR_SPACING): this macro computes
the spacing from klass->scrollbar_spacing now. adapted all functions
that used this macro (based on a patch from Patrice Fortier).
* gtk/gtkscrolledwindow.h (struct _GtkScrolledWindowClass): added
scrollbar_spacing to substitute a define (patch from Patrice Fortier).
-timj
* gtk/gtkrc.h (gtk_rc_parse_string): new function.
* gtk/gtkrc.c: many functions adapted to use GScanner for scanning.
(gtk_rc_parse): use gtk_rc_parse_any for parsing.
(gtk_rc_parse_string): new function to support parsing from
strings, just calls gtk_rc_parse_any.
(gtk_rc_parse_any): new function using GScanner as lexer.
-timj
Corrects a bug in gtk_tree_remove_items and gtk_tree_item_destroy.
Adds the possibility to connect all items by lines. This is the
default now. You can overide this with the function
gtk_tree_set_view_line which take a tree and a boolean.
This tree widget looks way more finished with the lines. Very
nice. Check it out and run gtk/testtree.
-Shawn