Havoc Pennington [Wed, 13 Feb 2002 23:44:03 +0000 (23:44 +0000)]
just go ahead and flush all the first validate stuff if it hasn't been
2002-02-13 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_paint): just go ahead and flush
all the first validate stuff if it hasn't been done, presumably
someone called process_updates at a weird time.
* tests/testtext.c (do_apply_colors): terminate on >= end, not >
end, avoids infinite loop when end is at the end of the buffer.
* gtk/gtktextbtree.c (_gtk_text_btree_delete): when creating a
line data, we were adding it to the wrong line ("line" instead of
"start_line")
Joe Shaw [Wed, 13 Feb 2002 22:49:40 +0000 (22:49 +0000)]
Don't chain up to the container's expose event. Instead call
2002-02-13 Joe Shaw <joe@ximian.com>
* gtk/gtktreeitem.c (gtk_tree_item_expose): Don't chain up to the
container's expose event. Instead call
gtk_tree_item_expose_child() on each child. Avoids a failed
g_assert() in gtk_container_propagate_expose().
(gtk_tree_item_expose_child): Added. Synthesize an expose event
for our children. Basically gtk_container_propagate_expose()
minus the g_assert(). (#71396)
Tim Janik [Wed, 13 Feb 2002 05:48:56 +0000 (05:48 +0000)]
partly revert my recent expanding change to not expand the table if all
Wed Feb 13 06:42:37 2002 Tim Janik <timj@gtk.org>
* gtk/gtktable.c (gtk_table_size_allocate_pass1): partly revert
my recent expanding change to not expand the table if all children
have not epxand behaviour. this fixes palette views which often
use homogeneous non-expanding tables.
Matthias Clasen [Tue, 12 Feb 2002 23:28:05 +0000 (23:28 +0000)]
Add a (#ifdef 0'ed) test provoking a segfault in TIFFReadDirectory().
* test-images.h (tiff1_test_3), test-loaders.c (main): Add a
(#ifdef 0'ed) test provoking a segfault in TIFFReadDirectory().
* io-ico.c (DecodeHeader): Check that pixbuf could be allocated.
* test-images.h (ico_test_2), test-loaders.c (main): Test the
previous change.
* io-wbmp.c (gdk_pixbuf__wbmp_image_load_increment): Don't write
beyond the end of buffer if width % 8 != 0.
* io-tga.c (try_preload): Enforce that ctx->hdr->type is one of
the supported types, otherwise parse_data_for_row () will not make
any progress, leading to an infinite loop.
emit row_deleted before we start unreffing the nodes ourselves
Tue Feb 12 14:27:41 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_deleted): emit
row_deleted before we start unreffing the nodes ourselves
(gtk_tree_model_sort_increment_stamp): always increment the stamp,
and not only if the stamp equals 0 (pointed out by Darin Adler)
* gtk/gtktreemodel.c (gtk_tree_row_ref_deleted_callback): we want
to continue the while loop and not the nested for loop.
Tim Janik [Tue, 12 Feb 2002 01:39:28 +0000 (01:39 +0000)]
always spread out the extra space allocated for the homogeneous case, as
Tue Feb 12 02:19:49 2002 Tim Janik <timj@gtk.org>
* gtk/gtktable.c (gtk_table_size_allocate_pass1): always spread out
the extra space allocated for the homogeneous case, as we don't
properly deal with readjusting table allocation within it. (for this
purpose, a GtkAlignment can be used as table parent).
Darin Adler [Tue, 12 Feb 2002 01:00:22 +0000 (01:00 +0000)]
Consider reordering the row even when there's no sort column, if there's a
* gtk/gtktreemodelsort.c: (gtk_tree_model_sort_row_changed):
Consider reordering the row even when there's no sort column, if
there's a default sort function.
(gtk_tree_model_sort_rows_reordered): Use symbolic constants.
(gtk_tree_model_sort_level_find_insert): Add code to handle the
case where there is no sort column, but a default sort function.
(gtk_tree_model_sort_insert_value): Add code to handle the case
where there is no sort column an no default sort function.
(gtk_tree_model_sort_set_model): Use symbolic constant.
(gtk_tree_model_sort_reset_default_sort_func): Use symbolic constant.
Mon Feb 11 21:42:17 2002 Kristian Rietveld <kris@gtk.org>
Implements DnD scrolling and fixes #71139
* gtk/gtktreeview.c (gtk_tree_view_vertical_autoscroll): new function,
(scroll_row_timeout): new function,
(gtk_tree_view_drag_motion): create scroll_timeout, so
scroll_row_timeout gets called
set upper member of hadjustment correct, so the hscrollbars of lists
Mon Feb 11 17:54:46 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper
member of hadjustment correct, so the hscrollbars of lists smaller
than 1 page (in width) are somewhat saner
set value of func to NULL during initialization (we don't use func in the
Mon Feb 11 16:48:34 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtkliststore.c (gtk_list_store_set_valist): set value of
func to NULL during initialization (we don't use func in the
!SORTED case, so we just silent the compiler here) (#71029)
increase value of new_location by one if cmp_a > 0 and we hit the end of
Sun Feb 10 22:20:46 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtkliststore.c (gtk_list_store_sort_iter_changed): increase
value of new_location by one if cmp_a > 0 and we hit the end of
the list and pass NULL instead of a 'NULL-iter' with
_rows_reordered
Anders Carlsson [Sun, 10 Feb 2002 14:33:06 +0000 (14:33 +0000)]
Set finalize handler; (gtk_calendar_finalize): Rename gtk_calendar_destroy
2002-02-10 Anders Carlsson <andersca@gnu.org>
* gtk/gtkcalendar.c (gtk_calendar_class_init): Set finalize handler;
(gtk_calendar_finalize): Rename gtk_calendar_destroy to gtk_calendar_finalize
since ::destroy can be called multiple times, resulting in double-freeing memory.
Hans Breuer [Sun, 10 Feb 2002 13:18:51 +0000 (13:18 +0000)]
don't reduce the scroll rect size by the scroll amount
2002-02-10 Hans Breuer <hans@breuer.org>
* gdk/win32/gdkgeometry-win32.c : don't reduce the scroll
rect size by the scroll amount
* gdk/win32/gdkwindow-win32.c
* gdk/win32/gdkselection-win32.c : added some casts to
make it compile with msvc's strict type checking
* gtk/fnmatch.c : #include <ctype.h> again for tolower
prototype. The fnmatch() code assumes to be in the crt
locale though it is feeded by utf8 strings from gtkfilesel.c
* gtk/gtkfilesel.c : let ->cmpl_text be a strdup managed by
_CompletionDir instead of referencing already freed memory
* gtk/gtktooltips.c (gtk_tooltips_init) : fix typo to
gtk_rc_parse_string (theDefaultTooltipColor) once as it
was intended
* tests/makefile.msc : added more tests
* tests/testgtk.c (create_list) : don't try to load gtkenums.h
from the current directory use ../gtk/gtkenums.h instead
Matthias Clasen [Sat, 9 Feb 2002 22:12:04 +0000 (22:12 +0000)]
Avoid segfault for selectable tab labels (even without a segfault, they
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
for selectable tab labels (even without a segfault, they make the
notebook almost unusable, though). (#69985)
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
nothing if the parent is not a menu. (#66492)
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
gtk_item_factory_path_from_widget): Try fetching the return value
from menu_item->submenu as a fallback. (#69020)
convert the iter to a child iter again, after doing _iter_children. It's
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
the iter to a child iter again, after doing _iter_children. It's
possible that _iter_children added some rows and updated the stamp.
Daniel Elstner [Sat, 9 Feb 2002 19:14:54 +0000 (19:14 +0000)]
Add missing curled braces so that it doesn't always return. Also indent
2002-02-09 Daniel Elstner <daniel.elstner@gmx.net>
* gtk/gtktextchild.c (CHECK_IN_BUFFER_RETURN): Add missing curled braces so that it doesn't always return. Also indent both CHECK_IN_BUFFER* macros properly, and make use of G_STMT_START/G_STMT_END.
fix evil ref bug where the wrong row and a deleted row was unreffed. Found
Fri Feb 8 21:25:56 2002 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_deleted): fix
evil ref bug where the wrong row and a deleted row was unreffed.
Found by Darin Adler <darin@bentspoon.com>
Darin Adler [Fri, 8 Feb 2002 17:13:14 +0000 (17:13 +0000)]
Pass the ref_node and unref_node calls through to the child model.
* gtk/gtktreemodelsort.c: (gtk_tree_model_sort_ref_node),
(gtk_tree_model_sort_unref_node): Pass the ref_node and
unref_node calls through to the child model.
Owen Taylor [Fri, 8 Feb 2002 01:10:25 +0000 (01:10 +0000)]
Add ::move-focus-out signal to handle Control[-Shift]-Tab and
Thu Feb 7 19:52:00 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtknotebook.[ch]: Add ::move-focus-out signal
to handle Control[-Shift]-Tab and Control-arrow
bindings and implement bindings as per #53612.
* gtk/gtktextview.c (gtk_text_view_move_focus): Fix
fetching the toplevel for plug-socket.
* gtk/gtknotebook.c (gtk_notebook_class_init): Remove
bindings for Return/Enter to select the page.
* gtk/gtknotebook.c (gtk_notebook_change_current_page):
Beep at ends.
* gtk/gtknotebook.c (focus_tabs_move): Don't wrap around
and beep at ends.
* gtk/gtknotebook.c (gtk_notebook_focus): When focusing into
the page with the arrow keys, focus the first widget,
not the directionally closest widget.
Fixes #70782 and some drag dest rectangle/line issues
Thu Feb 7 19:39:27 2002 Kristian Rietveld <kris@gtk.org>
Fixes #70782 and some drag dest rectangle/line issues
* gtk/gtktreeview.c (gtk_tree_view_set_model): set
GTK_TREE_VIEW_IS_LIST flag (we can switch from a TreeStore to a
ListStore for example)
(gtk_tree_view_get_path_at_pos): revert previous change, we
shouldn't correct for the header, because we are taking bin_window
coordinates here
(gtk_tree_view_set_drag_dest_row): queue old drag_dest row and
upper/lower neighbors for draw, so the drag dest rectangle/line will
be cleared correctly
(gtk_tree_view_get_dest_row_at_pos): correct for treeview header
here, as drag_y is relative to the widget and _get_path_at_pos wants
coords relative to bin_window, draw black outline rectangle after
drawing the cells
Owen Taylor [Thu, 7 Feb 2002 15:57:32 +0000 (15:57 +0000)]
Use layout text (which may be affected by invisible char) to compute
Thu Feb 7 10:53:12 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkentry.c (gtk_entry_draw_text): Use layout text
(which may be affected by invisible char) to compute
selection bounds, not entry text. (#70733, Alex Larsson)
Change show_help signal to return gboolean instead of void. This allows
* gtk/gtkwidget.[ch]:
Change show_help signal to return gboolean instead of void. This
allows the keypress which invokes the signal to be propagated to the
focus widgets ancestors if not handled by the focus widget.
* gtk/gtktoolips.[ch]
Change _gtk_tooltips_show_tip () to return a gboolean indicating
whether widget has tooltip to display.
Change popup_menu signal to return gboolean instead of void. This allows
* gtk/gtkwidget.[ch]:
Change popup_menu signal to return gboolean instead of void. This
allows the keypress which invokes the signal to be propagated to the
focus widgets ancestors if not handled by the focus widget.
* gtk/gtkcolorsel.c gtk/gtkentry.c gtk/gtktextview.c:
Change signature of popup_menu signal handler to return gboolean
instead of void and return TRUE in the signal handler
Wed Feb 6 23:28:39 2002 Kristian Rietveld <kris@gtk.org>
Fixes #70708
* gtk/gtktreeview.c (gtk_tree_view_get_path_at_pos): we're dealing
with widget coordinates here, so take the header height into
account while converting
(gtk_tree_view_widget_to_tree_coords): take header height into
account
(gtk_tree_view_tree_to_widget_coords): ditto
(gtk_tree_view_get_dest_row_at_pos): we were passing coords
relative to the tree with _get_path_at_pos, while that function
wants coords relative to the widget
remove unused variable (gtk_text_view_get_window): add warning about how
2002-02-06 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_scroll_hpages): remove unused variable
(gtk_text_view_get_window): add warning about how you
can't get the private window. #70683, and avoid default: in the
switch so we get "enum value unhandled" warnings
Add warnings if you try to use a child anchor that isn't inside a buffer.
2002-02-06 Havoc Pennington <hp@redhat.com>
* gtk/gtktextchild.c: Add warnings if you try to use a child
anchor that isn't inside a buffer. Really kind of lame;
we should separate the anchor from the buffer. But not worth
fixing for now. #70601
Owen Taylor [Wed, 6 Feb 2002 00:41:07 +0000 (00:41 +0000)]
Keep the length of the anti-expose queue finite, by if it gets too long,
Tue Feb 5 19:13:42 2002 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkgeometry-x11.c (gdk_window_queue): Keep
the length of the anti-expose queue finite, by if
it gets too long, first doing a XSync() and checking
the event queue, and if that doesn't work, simply
discarding all anti-expose items in the queue.
* gdk/x11/gdkdnd-x11.c (gdk_window_cache_filter): Fix ordering
on ConfigureNotify (#56349, Thomas Leonard)
offset area being gotten from pixmap by the align/padding offsets, so we
2002-02-05 Havoc Pennington <hp@redhat.com>
* gtk/gtkimage.c (gtk_image_expose): offset area being gotten from
pixmap by the align/padding offsets, so we don't get warnings
in gdk_pixbuf_get_from_drawable (and so it works, of course)
let's set the path, which we're going to pass with the emission of
Tue Feb 5 22:54:16 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtkliststore.c (gtk_list_store_insert_after): let's set the
path, which we're going to pass with the emission of row_inserted, to
the iter we inserted and not its sibling.
Owen Taylor [Mon, 4 Feb 2002 15:43:09 +0000 (15:43 +0000)]
Fix from Matthias Clasen to clear background appropriately for theme by
Mon Feb 4 10:40:28 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.c (gtk_default_draw_resize_grip):
Fix from Matthias Clasen to clear background appropriately
for theme by calling gtk_style_apply_default_background().
(#70449)
Owen Taylor [Sun, 3 Feb 2002 03:02:07 +0000 (03:02 +0000)]
RC file lookup improvements (#68234, suggestions from Matthias Clasen.)
Sat Feb 2 21:54:01 2002 Owen Taylor <otaylor@redhat.com>
RC file lookup improvements (#68234, suggestions
from Matthias Clasen.)
* gtk/gtkrc.c (gtk_rc_parse_file): Look for the
locale suffix variants (gtkrc.en_US, gtkrc.en) for
all RC files we parse, not just the default RC
files.
* gtk/gtkrc.c (gtk_rc_parse_default_files): Remove
support for charset specific RC files.
Owen Taylor [Sun, 3 Feb 2002 01:25:32 +0000 (01:25 +0000)]
Non-exported _gtk_menu_select_first() function that selects the first item
Sat Feb 2 20:16:04 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmenushell.c (_gtk_menu_shell_select_first):
Non-exported _gtk_menu_select_first() function that
selects the first item of the menu in a standard
way. (Skipping tearoffs.)
* gtk/gtkmenushell.c gtk/gtkentry.c gtk/gtktextview.c
gtkmenuitem.c: Use _gtk_menu_shell_select_first().
* gtk/gtkmenuitem.c (gtk_real_menu_item_select): Remember
if we are starting the timeout from a keypress so
we can set menushell->ignore_enter properly.
* gtk/gtknotebook.c (focus_child_in): Return something
meaningful if there are no children.
Owen Taylor [Sat, 2 Feb 2002 22:52:22 +0000 (22:52 +0000)]
Add a GtkSetting (gtk-entry-select-on-focus) controlling whether the
Sat Feb 2 17:43:00 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkentry.c (gtk_entry_grab_focus): Add a GtkSetting
(gtk-entry-select-on-focus) controlling whether the
contents of an entry are selected on focus in.
* gtk/gtkmenu.c (gtk_menu_key_press): Add a GtkSetting
(gtk-can-change-accels) controlling whether accelerators can be
changed on the fly or not. (#51902)
* gtk/gtkmenu.c (gtk_menu_key_press): Allow unmodified
accelerators, now that accelerator changing can be turned
off for those who won't expect it. (#61285)
* gtk/gtkaccelgroup.c (gtk_accelerator_valid): Allow
Backspace/Delete/KP_Delete as valid accelerators.
* gtk/gtkmenu.c (gtk_menu_key_press): Allow setting of
Delete/Backspace as accelerators by making them toggle
the menu item between empty and the pressed key.
(#58605)
* tests/testgtkrc: Remove the objectionably short cursor blink
time setting.
Owen Taylor [Sat, 2 Feb 2002 21:50:46 +0000 (21:50 +0000)]
To get around the fact that we may have a owner_events = FALSE grab in
Sat Feb 2 16:43:31 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmenu.c (gtk_menu_popup): To get around the fact
that we may have a owner_events = FALSE grab in effect
when we pop up a window, make a temporary grab on a
different window, then grab on the real window. Fixes
a problem where if a context menu popped up under the
cursor, the first item would be stuck unselected.
(#59812, reported by Arnaud Charlet.)
Owen Taylor [Sat, 2 Feb 2002 17:52:01 +0000 (17:52 +0000)]
Remove the "select first item if popped up from keypress" hack -- was
Sat Feb 2 11:37:21 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmenu.c (gtk_menu_popup): Remove the
"select first item if popped up from keypress" hack --
was causing more problems than it was worth
(#53191, #68483)
* gtk/gtktextview.c (popup_targets_received):
gtk/gtkentry.c (popup_targets_received): If activated
from keyboard, select first item of popup menu.
set upper member of vadjustment correct, so the vscrollbars of lists
Sat Feb 2 18:07:51 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeview.c (gtk_tree_view_size_allocate): set upper member
of vadjustment correct, so the vscrollbars of lists smaller than
1 page are somewhat saner (#66905)
* gtk/gtkliststore.c (gtk_list_store_remove_silently): do not
increment the stamp, liststore is a model with persisting iters