Owen Taylor [Sun, 3 May 1998 22:41:32 +0000 (22:41 +0000)]
configure.in acheader.h gdk/gdkwindow.c Check for Shape extension both on
Sun May 3 13:38:22 1998 Owen Taylor <otaylor@gtk.org>
* configure.in acheader.h gdk/gdkwindow.c
Check for Shape extension both on the client and server
side. (And, more importantly, check for the shape extension
so we may include -lXext even when compiling with --disable-xshm)
Don't set override_redirect on all shaped windows. It isn't
necessary.
* gdk/gdkwindow.c: Set ->colormap to NULL for root
and foreign windows. Use this to check if we
need to get the colormap from X.
Fri May 1 22:32:47 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtkbutton.c (gtk_button_paint): Draw the areas
between the default and the button always in GTK_STATE_NORMAL.
* gtk/gtkrange.c (gtk_range_style_set): Added a style_set
callback.
Fri May 1 16:40:57 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkpixmap.c (gdk_pixmap_colormap_create_from_xpmp[_d]):
Fix a buffer overflow on pixmaps that claim to have
more than 31 characters per pixel.
(gdk_pixmap_read_string): Don't wrap around strings longer
than half of address space ;-)
* gtk/gtk[vh]ruler.c gtk/gtkinputdialog.c: Expand some buffers
that were used for printing integers.
* */* (almost):
Style: All
int foo () { ... }
changed to
int foo (void) { ... }
^^^^^^^ This is why some many files changed
Even where there were proper prototypes elsewhere.
* gdk/gxid.c (handle_claim_device): Some extra checks.
It isn't safe against being fed bad X id's, but at
least it should be safe against deleting all your
files.
Tim Janik [Sun, 3 May 1998 19:13:24 +0000 (19:13 +0000)]
new function to set the adjustments value without causing a current
Sun May 3 19:45:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkadjustment.c (gtk_adjustment_assimilate_value): new function
to set the adjustments value without causing a current emission of
"value_changed" to be restarted.
* gtk/gtksignal.c: added new functions to retrive the number of
existing emissions for a certain signal.
(gtk_signal_n_emissions): new function.
(gtk_signal_n_emissions_by_name): new function.
Tim Janik [Sun, 3 May 1998 15:45:08 +0000 (15:45 +0000)]
new function to set the current focus_child of a container, does proper
Sun May 3 16:55:43 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcontainer.c (gtk_container_set_focus_child): new function to
set the current focus_child of a container, does proper referencing and
adjusts the vadjustment/hadjustment associated with the focus widget.
* gtk/gtkwidget.c (gtk_widget_grab_focus): set the focused child on
containers via gtk_container_set_focus_child.
* gtk/gtknotebook.c: modifications to use gtk_container_set_focus_child
where appropriate.
* gtk/gtkcontainer.c (gtk_container_remove): removed unsetting of focus
child since not every child removal goes through this function (this
showed up after gtk_container_set_focus_child() started to reference the
focus_child of a container).
* gtk/gtkwidget.c (gtk_widget_unparent): moved unsetting the focus_child
of a container from gtk_container_remove into this place.
Tim Janik [Sat, 2 May 1998 20:48:49 +0000 (20:48 +0000)]
added new functions to operate on intermediate function pointers.
Sat May 2 22:33:45 1998 Tim Janik <timj@gtk.org>
* gtk/gtksignal.c: added new functions to operate on intermediate
function pointers. implemented incremental blocking.
(gtk_signal_disconnect_by_func): new function.
(gtk_signal_handler_block_by_func): new function.
(gtk_signal_handler_unblock_by_func): new function
Tim Janik [Sat, 2 May 1998 18:35:23 +0000 (18:35 +0000)]
only emit "value_changed" if we really passed a new value.
Sat May 2 20:19:03 1998 Tim Janik <timj@gtk.org>
* gtk/gtkadjustment.c (gtk_adjustment_set_value): only emit
"value_changed" if we really passed a new value.
(gtk_adjustment_changed): new function to emit the "changed" signal.
(gtk_adjustment_set_value): new function to emit the "value_changed"
signal.
Tim Janik [Sat, 2 May 1998 04:20:55 +0000 (04:20 +0000)]
do not just return if the combo-list is empty since that will cause the
Fri May 1 20:25:29 1998 Tim Janik <timj@gtk.org>
* gtk/gtkcombo.c (gtk_combo_popup_list): do not just return if
the combo-list is empty since that will cause the combo to operate
on a non existing GtkList window.
(gtk_combo_get_pos): provide the combo list with a usfull default
height if empty.
(gtk_combo_popup_button_press): grab the focus.
(gtk_combo_activate): grab the focus.
Lars Hamann [Fri, 1 May 1998 23:45:18 +0000 (23:45 +0000)]
removed unneeded GtkCTree::draw_lines (gtk_ctree_get_node_info): New
* gtkctree.[ch]: removed unneeded GtkCTree::draw_lines
(gtk_ctree_get_node_info): New funtion to get data of ctree row.
(draw_row): changed drawing order of tree lines, draw triangles
in case of GTK_CTREE_LINES_NONE.
rhlabs [Fri, 1 May 1998 23:18:21 +0000 (23:18 +0000)]
<raster@redhat.com>
<raster@redhat.com>
AHA! more bugs in the get_visual and get_colormap stuff.. guarateed to barf
if the gdk window you are querying is gdk's own gdk_root_window :) Added
checks to see if this window is infact the root window.... :)
now ee doesnt barf if you set the image as the bg.. :)
Tim Janik [Fri, 1 May 1998 13:16:49 +0000 (13:16 +0000)]
prefixed all clist flags with GTK_ to avoid name clashes. redefined
Fri May 1 13:57:36 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h:
* gtk/gtkclist.c: prefixed all clist flags with GTK_ to avoid name
clashes. redefined GTK_CLIST_SET_FLAGS and GTK_CLIST_UNSET_FLAGS as
GTK_CLIST_SET_FLAG and GTK_CLIST_UNSET_FLAG to automatically add
the GTK_ prefix (this solution involved less changes in the
gtkclist.c code). added a GTK_CLIST_CONSTRUCTED flag to substitute
the mem_chunk==NULL test in gtk_clist_construct. merged in changes
from lars & stefan to support the derivation of GtkCtree.
* gtkctree.h:
* gtkctree.c:
initial import of a tree widget derived from gtkclist, courtesy
of Lars Hamann <lars@gtk.org> and Stefan Jeske <jeske@gtk.org>,
it just damn rocks!
Fri May 1 10:05:44 1998 Tim Janik <timj@gtk.org>
* gtk/gtklist.c (gtk_list_add): let gtk_list_append_items do the work
for us.
(gtk_list_insert_items):
(gtk_list_remove_items_internal):
(gtk_list_clear_items):
remove a possible pointer grab, we might get thrown into a loop
otherwise.
(gtk_list_button_press): grab the pointer *before* selecting the child,
because selection of items may cause the lists children to change,
resulting in a grab release.
(gtk_list_clear_items): use gtk_list_unselect_child() for unselection of
children.
(gtk_list_shutdown): remove all children from the list.
(gtk_real_list_unselect_child):
(gtk_real_list_select_child): *always* put our internal structures into
sane state *before* signal emisions (i.e. list->selection updates prior
to gtk_list_item_[de]select() calls).
* gtk/gtkcombo.c (gtk_combo_init): adjust the scrollbar if the lists
focused child walks out of the window.
removed CAN_FOCUS for the combo arrow's button since it doesn't react
to keyboard events ("clicked" connection is missing).
Owen Taylor [Thu, 30 Apr 1998 15:18:19 +0000 (15:18 +0000)]
Allow the user to use the popup list like a menu.
Thu Apr 30 11:18:00 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtkcombo.[ch]: Allow the user to use the popup list
like a menu.
* gtk/gtkmenuitem.c gtk/gtkitem.c: Moved enter/leave handlers
to gtkitem.c so dragging can also work in lists.
* gtk/gtklist.[ch]: Track child enter events and use
those to allow dragging the selection.
Thu Apr 30 11:16:06 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtktext.c: Try enabling background pixmaps for editable text
widgets. There is a bit of flashing, but not too bad. If you
don't want the flashing, you can always not set a background
pixmap.
Wed Apr 29 15:46:13 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtktext.c: Fixed a bug where the drawn level
was being messed up when the text was scrolled
during a deletion.
Miguel de Icaza [Wed, 29 Apr 1998 00:51:55 +0000 (00:51 +0000)]
Random debugging fixed this bug: There is no need to set the ExposureMask
1998-04-28 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdk/gdk.c (gdk_event_translate): Random debugging fixed this
bug: There is no need to set the ExposureMask in the XGrabPointer
(this caused DnD programs to crash).
Owen Taylor [Fri, 24 Apr 1998 01:03:32 +0000 (01:03 +0000)]
merging changes from owen:
Wed Apr 15 20:42:46 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtkpreview.c (gtk_preview_get_visuals): Make sure
that when we are running with a non-installed colormap,
in 8-bit pseudo-color, we actually are using the system
visual. (Fixes *Bad Match* errors on Digital Unix machines
with multiple 8-bit pseudo-color visuals)
Tim Janik [Fri, 24 Apr 1998 00:26:01 +0000 (00:26 +0000)]
changed ref_count field to be of type guint. added check for ref_count>0;
Fri Apr 24 01:29:04 1998 Tim Janik <timj@gtk.org>
* gtk/gtkaccelerator.h (struct _GtkAcceleratorTable): changed ref_count
field to be of type guint.
* gtk/gtkaccelerator.c (gtk_accelerator_table_unref): added check for
ref_count>0;
(gtk_accelerator_table_install): keep a per object list of accelerator
tables that refer to this object.
(gtk_accelerator_table_remove): remove the accelerator table from the
per object list.
(gtk_accelerator_table_clean): warn if there are any object references
left in an accelerator table upon destruction.
(gtk_accelerator_tables_delete): new function to delete object
references from the accelerator tables associated with this object.
* gtk/gtkwidget.c (gtk_widget_class_init): changed emission of
GtkWidget::install_accelerator to GTK_RUN_LAST so the installation
of an accelerator can be prevented by gtk_signal_emit_stop().
(gtk_widget_real_destroy): call gtk_accelerator_tables_delete (),
so there are no stale pointers in accelerator tables left.
this change is binary compatible, so just touch gtkaccelerator.h -r gtkwidget.h
Tim Janik [Wed, 22 Apr 1998 02:20:50 +0000 (02:20 +0000)]
prepend the running_timeouts list with the tmp_list link itself, not with
Wed Apr 22 04:15:26 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmain.c (gtk_handle_current_timeouts): prepend the
running_timeouts list with the tmp_list link itself, not with a new
GList structure pointing to our link. that would fill up memory and
causes the GList.data fields of the running_timeouts list to point to
GList structures and not GtkTimeoutFunction structures which is a
*really* bad thing.
(gtk_handle_current_idles): likewise (exchange "timout" with "idle" in
the above entry ;).
Tim Janik [Sat, 18 Apr 1998 20:33:35 +0000 (20:33 +0000)]
new function ala gtk_radio_button_set_group. (gtk_radio_menu_item_init):
Sat Apr 18 22:18:12 1998 Tim Janik <timj@gtk.org>
* gtk/gtkradiomenuitem.h:
* gtk/gtkradiomenuitem.c (gtk_radio_menu_item_set_group): new function
ala gtk_radio_button_set_group.
(gtk_radio_menu_item_init): assure that we always have at least a group
that points to self.
* gtk/gtkradiobutton.c (gtk_radio_button_set_group): few cleanups and
added g_return_if_fail() statements.
(gtk_radio_button_init): assure that we always have at least a group
that points to self.
Miguel de Icaza [Wed, 15 Apr 1998 02:15:36 +0000 (02:15 +0000)]
Fix the problem introduced by whoever thought that randomly changing ints
1998-04-14 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdk/gdkwindow.c (gdk_window_xid_at): Fix the problem introduced
by whoever thought that randomly changing ints to unsigned int
without reviewing the code was a good idea. It is, btw not
mentioned in the ChangeLog as usual, but I know it was not Elliot
the culprit this time.
Owen Taylor [Tue, 14 Apr 1998 01:39:40 +0000 (01:39 +0000)]
Don't read the character past the end of the text.
Mon Apr 13 21:40:14 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtktext.c (find_char_width): Don't read the
character past the end of the text.
* gtk/gtkrange.c (gtk_real_range_timer): If the mouse
button has been released before the timer is activated,
don't keep on scrolling.
* gdk/gdk.c (gdk_event_translate): Filter subsequent configure
events after we discard the first. Removed obsolete and
sometimes very slow GdkOtherEvent. (Left in gdktypes.h
with signal in GTK)
Owen Taylor [Mon, 13 Apr 1998 00:20:17 +0000 (00:20 +0000)]
Set a flag so instead of clearing the area in advance. That looked
Sun Apr 12 20:09:40 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtklabel.[ch] (gtk_label_expose): Set a flag so
instead of clearing the area in advance. That looked
_really_ bad.
* gtk/gtkcontainer.c (gtk_container_class_init): Changed
"focus" to RUN_LAST.
* gtk/gtkentry.c (gtk_entry_realize): Fixed place
where allocation was used where requisition was meant.
(Found by David J N Begley <david@avarice.nepean.uws.edu.au>)
* gtk/gtkwindow.c (gtk_window_set_default): Fixed
assertion in when setting default to NULL>
("Damon Chaplin" <DAChaplin@email.msn.com>)
* gtk/gtkwidget.c (gtk_widget_unparent): Unset the
default widget on the toplevel, if necessary.
Sun Apr 12 02:04:21 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkpreview.c: Removed unecessary and harmful
htons/ntohs when storing properties. (X does the byte
swapping itself)
Owen Taylor [Wed, 8 Apr 1998 21:40:45 +0000 (21:40 +0000)]
Make sure widgets get removed from the resize queue before the connection
Wed Apr 8 17:27:40 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkwidget.c (gtk_widget_unparent): Make sure
widgets get removed from the resize queue before the
connection between them and the resize queue is broken
by unparenting their parent.
Miguel de Icaza [Wed, 8 Apr 1998 19:46:09 +0000 (19:46 +0000)]
During drag and drop, set the event mask at ButtonPress time to include
1998-04-08 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gdk/gdk.c (gdk_event_translate): During drag and drop, set the
event mask at ButtonPress time to include ButtonPressMask and
ButtonReleaseMask, otherwise, if the button is released, and we
get a LeaveNotify event, it still thinks we are doing a drag.
Owen Taylor [Tue, 7 Apr 1998 23:59:25 +0000 (23:59 +0000)]
Removed, because that's what a NULL comparison function means. And it
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
* gutils.c (g_direct_compare): Removed, because that's what
a NULL comparison function means. And it wasn't 64 bit safe.
Tue Apr 7 19:14:03 1998 Owen Taylor <owt1@cornell.edu>
* gdk/gdkpixmap.c: Added maximum field widths to prevent
possible '%s' scanf overflows. Replaced scanf("%c")
with getc(), Don't interpret /*/ as a full comment. Use
g_realloc/g_new.
* gtk/gtkwidget.h gtk/gtkprivate.h: Changed all flag
tests to check for ((GTK_WIDGET_FLAGS(widget) & FLAG) != 0)
instead of (GTK_WIDGET_FLAGS(widget) & FLAG)
* gtk/gtkfilesel.c: Use getwd() instead of getcwd() on
SunOS, because getcwd() hangs up in a wait4().
(Found by David Monniaux <monniaux@clipper.ens.fr>)
- Check device/inode/mtime not just inode/mtime, when
caching scanned directories.
(From: scottk@ig.utexas.edu (Scott Kempf))
* gdk/gdkpixmap.c: Check for 0 width/height when
creating pixmaps.
* gtk/*.c: Global substitution of recently introduced
"MAX (0," for allocations to "MAX (1,", since
creating a backing pixmap with a zero width or height
fails.
* gdk/gdkwindow.c (gdk_window_new): Don't set all the
WM properties for child windows. Don't set the base
size, since the value we set will be taken as a minimum
size.
* gtk/gtkmain.c (gtk_main_iteration_do): gdk_flush() the X-queue if
iteration_done==TRUE since we will most likely not get invoked again
(Marius Vollmer).
Elliot Lee [Tue, 7 Apr 1998 19:51:06 +0000 (19:51 +0000)]
gtk_button_remove(): When removing a child widget from a button, we don't
gtk_button_remove():
When removing a child widget from a button, we don't want to check
the child's visibility after removal (for the purpose of knowing
whether a queue_resize is needed), we want to check it *before*,
because the child may be destroyed during the
gtk_widget_unparent()
The diff is clearer than this stupid log message. :)
Added function to set the homogeneous flag of the table (needed by derived
1998-04-06 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtktable.h:
* gtk/gtktable.c (gtk_table_set_homogeneous): Added function to
set the homogeneous flag of the table (needed by derived widgets
and such).
1998-04-03 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkradiobutton.h: Add prototype for gtk_radio_button_new_with_label_from_widget.
Owen Taylor [Mon, 6 Apr 1998 12:59:06 +0000 (12:59 +0000)]
Take border in account properly.
Mon Apr 6 08:05:23 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkbutton.c (gtk_button_paint): Take border in
account properly.
* gtk/gtktext.c (gtk_text_realize): Don't recompute
geometry when creating with initial 1x1 geometry,
since our calculations can't handle that. Leave
text->line_start_cache NULL as sign we don't have
a real geometry yet.
* gtk/gtkentry.c (gtk_entry_motion_notify): Use the x
value we get from gdk_window_get_pointer, not from
event->x - since we always specify OwnerGrabButtonMask
(why???), event->x can refer to another window.
Owen Taylor [Mon, 6 Apr 1998 04:31:15 +0000 (04:31 +0000)]
Make tab key move in reading order (left-to-right top to bottom) - which
Mon Apr 6 00:28:28 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkcontainer.c (gtk_container_focus_tab): Make
tab key move in reading order (left-to-right top
to bottom) - which might have been the original intended
behavior modulo sorting bugs.
* gtk-config.in: Never output -I/usr/include from --cflags
Owen Taylor [Sun, 5 Apr 1998 23:30:26 +0000 (23:30 +0000)]
Fixed assignment of adjustment->value to negative values. Moved a few
Sun Apr 5 19:30:23 1998 Owen Taylor <owt1@cornell.edu>
* gtk/gtkclist.c: Fixed assignment of adjustment->value
to negative values. Moved a few other allocation type things
around in ways that may or may matter. Fixed some allocation
errors (scrollbars were overlapping main window).
* gtk/gtkbutton.c (gtk_real_button_released): Small hack to keep
button labels from vanishing when the invoked operation blocks.
* gtk/gtkbox.c (gtk_box_remove): Assigning GTK_WIDGET_VISIBLE (widget)
to a gboolean (char) is _bad_. GTK_VISIBLE == 256.
Tim Janik [Sun, 5 Apr 1998 09:18:08 +0000 (09:18 +0000)]
take expired timeouts into account, otherwise things like e.g.
Sun Apr 5 09:35:55 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmain.c (gtk_events_pending): take expired timeouts into
account, otherwise things like e.g. spin-buttons don't work.
also, count gtk_main_quit() as an event.