Owen Taylor [Tue, 12 Jan 1999 23:27:30 +0000 (23:27 +0000)]
Add a drag_data_received handler for the label.
Tue Jan 12 18:30:51 1999 Owen Taylor <otaylor@redhat.com>
* gtk/testdnd.c (label_drag_data_received): Add
a drag_data_received handler for the label.
Tue Jan 12 15:01:50 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.c: Removed the putback_events queue,
since it was causing problems with event ordering -
just keep a single queue. If we need it, we can
add priorities to events.
* gdk/gdkevents.c: Annotate events with flags - we allocate
a GdkEventPrivate structure in gdk_event_new() and use these
flags to mark an event being translated as "pending" -
I.e., not yet ready to be dequeued. So we can put
the event on the queue and get the order of the
events right. (This solves the double-click problems)
* gdk/gdk.h gdk/gdkevents.h: Add gdk_event_peek() to get a copy
of the next event on the event queue.
* gtk/gtkmain.c (gtk_main_do_event): Use gdk_event_peek()
to check the next event without causing event queue
reordering.
Tim Janik [Tue, 12 Jan 1999 15:12:14 +0000 (15:12 +0000)]
reworked the redrawing heuristics somewhat, this fixed a bunch of existing
Tue Jan 12 13:47:07 1999 Tim Janik <timj@gtk.org>
* reworked the redrawing heuristics somewhat, this fixed a bunch of
existing redrawing problems and majorly reduces overall redrawing needs
during normal operation. basically we now only queue redraws when
neccessary and much rely on the draw_area coalescing code in gtkwidget.c
to optimize the queued portions. widgets will now upon reallocation only
get redrawed if their allocation has changed. upon hide/show only the
area allocated by the child will be queued for the parent, this has the
side effect that parents which change their appearance in dependance on
the numer of visible children have to keep track of their children's
visiblity and eventually fully redraw themselves. this is a minor
constrain with great benefits in terms of redraw reduction, and only got
triggered by the notebook widget.
* gtk/gtkwidget.c:
(gtk_widget_queue_clear): don't bother if width and height == 0.
(gtk_widget_queue_clear_child): new static function to queue a redraw of
the area obscured by a child on a parent.
(gtk_widget_queue_resize): queue_clear the widget if it is drawable.
(gtk_widget_show): queue resize on the widget before showing.
(gtk_widget_hide): queue resize on the widget after hiding.
(gtk_widget_map): queue_draw the widget after mapping.
(gtk_widget_unmap): queue_clear_child the widget.
(gtk_widget_size_allocate): queue_clear_child and queue_draw if the
widget's allocation changed.
(gtk_widget_unparent): queue_clear_child so the parent redraws obscured
portions.
(gtk_widget_real_show):
(gtk_widget_real_hide):
(gtk_widget_real_map):
(gtk_widget_real_unmap):
(gtk_widget_real_size_allocate): don't bother with redraw queueing,
descendants that override these functions don't do either and we handle
all redrawing/resizing related stuff before or after the signal emission
now.
* gtk/gtkcontainer.c:
(gtk_container_resize_children): don't bother about redrawing anymore
since gtk_widget_size_allocate handles that for us now.
* gtk/gtknotebook.h:
* gtk/gtknotebook.c:
added a flag have_visible_child to indicate whether we need to draw
non child related portions at all, e.g. shadows etc.
(gtk_notebook_draw): if have_visible_child changed, do a full paint
instead of updating a small area only.
Mon Jan 11 20:44:35 1999 Tim Janik <timj@gtk.org>
* gtk/gtkstyle.c: changed gtk_style_apply_default_pixmap to
gtk_style_apply_default_background which takes an extra argument
copy_area to determine NO_WINDOW widget pixmap copying.
changed callers accordingly.
* gtk/gtktogglebutton.c:
(gtk_toggle_size_allocate):
(gtk_toggle_button_expose):
(gtk_toggle_button_paint): avoid messing with our parent's window if
toggle_button->draw_indicator == TRUE and we are a NO_WINDOW widget.
* gtk/gtkcheckbutton.c (gtk_real_check_button_draw_indicator): draw
the draw_indicator with GTK_STATE_ACTIVE if the toggle button is active.
* gtk/check-n.xpm:
* gtk/check-y.xpm:
* gtk/testgtkrc: set pixmaps for ACTIVE and NORMAL check button
bg_pixmaps.
Tim Janik [Mon, 11 Jan 1999 18:49:54 +0000 (18:49 +0000)]
eliminated some queue_draws when invoking gtk_widget_set_state, since that
Mon Jan 11 15:23:32 1999 Tim Janik <timj@gtk.org>
* gtk/gtktogglebutton.c: eliminated some queue_draws when invoking
gtk_widget_set_state, since that cares about redrawing already.
some code cleanups.
* gtk/gtktogglebutton.[hc]:
* gtk/gtkfontsel.c:
* gtkgamma.c:
s/gtk_toggle_button_set_state/gtk_toggle_button_set_active/ since
set_state is already taken by gtkwidget.h.
Tim Janik [Mon, 11 Jan 1999 12:43:07 +0000 (12:43 +0000)]
removed Paolo Molaro's type creation hooks again, since they 1) don't care
Mon Jan 11 13:31:49 1999 Tim Janik <timj@gtk.org>
* gtk/gtktypeutils.[hc]: removed Paolo Molaro's type creation hooks
again, since they 1) don't care about infinite recursion (likely
to achive), 2) we are in feature freeze for 1.2. this definitely
deserves a sane implementation in 1.3 though (but without a hook
return value, without seq_id hackery and with recursion checks).
Tim Janik [Mon, 11 Jan 1999 12:22:52 +0000 (12:22 +0000)]
only pass key events to the focus widget if it is sensitive.
Mon Jan 11 13:18:37 1999 Tim Janik <timj@gtk.org>
* gtk/gtkwindow.c:
(gtk_window_key_release_event):
(gtk_window_key_press_event): only pass key events to the focus widget
if it is sensitive.
* gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
submenu if it isn't sensitive.
(gtk_menu_item_paint): state_type doesn't need to be reset to
GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
* gtk/gtkcontainer.c (gtk_container_real_focus):
* gtk/gtklist.c (gtk_list_focus):
* gtk/gtkmenushell.c (gtk_menu_shell_move_selected):
* gtk/gtknotebook.c (gtk_notebook_focus):
s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
sensitivity is determined through the parent as well,
GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
sensitivity.
* gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
object if it is an insensitive widget.
Tim Janik [Sun, 10 Jan 1999 19:05:36 +0000 (19:05 +0000)]
if the lookup failed, try to initialize the object class and reattempt the
1999-01-10 Tim Janik <timj@gtk.org>
* gtk/gtksignal.c (gtk_signal_lookup): if the lookup failed, try
to initialize the object class and reattempt the lookup, reported
by Paolo Molaro <lupus@lettere.unipd.it>.
Lars Hamann [Fri, 8 Jan 1999 00:21:36 +0000 (00:21 +0000)]
call gtk_spin_button_update before returning a value
Fri Jan 8 00:42:00 1999 Lars Hamann <lars@gtk.org>
* gtk/gtkspinbutton.c (gtk_spin_button_get_value_as_int)
(gtk_spin_button_get_value_as_float): call gtk_spin_button_update
before returning a value
* gtk/gtkclist.c (gtk_clist_motion): don't allow 'drag selections'
if clist is a drag source.
(gtk_clist_drag_begin): remove pointer grabs, end ongoing selections.
* gtk/gtkctree.c (remove_grab): copy of clist function.
(gtk_ctree_drag_begin): let clists drag_begin method set the
source info struct.
Owen Taylor [Fri, 8 Jan 1999 00:12:43 +0000 (00:12 +0000)]
Fixes to drawing the background of the bin window so that clearing and
Thu Jan 7 19:10:21 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkviewport.c (gtk_viewport_style_set): Fixes
to drawing the background of the bin window
so that clearing and redrawing of child
widgets work properly.
* gtk/gtkwidget.c (gtk_widget_idle_draw): Juggle around
data so that if somebody triggers more redraw queuing
from a expose_event handler, it doesn't confuse the
heck out of GTK+. (But is highly liable to cause
an infinite loop...)
Owen Taylor [Wed, 6 Jan 1999 00:41:04 +0000 (00:41 +0000)]
Push GdkRGB's visual and colormap around the color selection dialog so
Tue Jan 5 19:01:18 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkcolorsel.c (gtk_color_selection_dialog_init): Push
GdkRGB's visual and colormap around the color selection
dialog so that the window and the previews have the
same colormap. If an app adds things to the colorsel
dialog, it will have to take care of them itself.
Owen Taylor [Tue, 5 Jan 1999 23:45:21 +0000 (23:45 +0000)]
Make gtk_propagate_event() non-static, we need it in gtkdnd.c so that the
Tue Jan 5 15:03:47 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkmain.c (gtk_propagate_event): Make
gtk_propagate_event() non-static, we need it in gtkdnd.c
so that the button-release we synthesize gets propagated
correctly.
* gtk/gtkdnd.c: Use gtk_propagate_event() so
release gets to a GtkList. But we can't really
get this right without access to the windows
event masks and doing X-style propagation ourselves.
Tue Jan 5 11:31:55 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkselection.c (gtk_target_list_unref): Free
memory allocated for target lists.
* gtk/gtkdnd.c (gtk_drag_drop_finished): Release
selections before destroying info structure.
* gdk/gdkdnd.c gdktypes.h (gdk_drag_get_protocol): Add
new value GDK_DRAG_PROTO_NONE, use it for non-drag
targets, to quiet Purify.
* gdk/gdkdnd.c (gdk_window_register_dnd): Set size
of property properly.
Jeff Garzik [Fri, 1 Jan 1999 23:36:32 +0000 (23:36 +0000)]
Check for features.h.
* configure.in, config.h.in:
Check for features.h.
* gdk/gdkevents.c (gdk_event_put, gdk_events_queue):
Fixed bug in linked list append logic by replacing hand-coded
logic with a call to g_list_append. Bug found by tml.
* gdk/gdkimage.c:
'gcc -ansi -pedantic' on GNU/Linux spews warnings and errors
in sys/ipc.h, including one specific admonishment to use
_SVID_SOURCE or _XOPEN_SOURCE. Manually defined the latter, and
included features.h if present to obtain the necessary
side-effects.
Elliot Lee [Thu, 31 Dec 1998 21:01:18 +0000 (21:01 +0000)]
gtk.m4: When testing to see if glib exists, set LIBS="$GTK_LIBS $LIBS" NOT
gtk.m4:
When testing to see if glib exists, set
LIBS="$GTK_LIBS $LIBS"
NOT
LIBS="$LIBS $GTK_LIBS"
because order matters - if the user specifies their own $LIBS to
./configure, these need to be passed in last.
gtk/Makefile.am:
Fix problems with gtktypebuiltins* getting rebuilt every single
time 'make' was run.
gtk/gtkcalendar.c:
Set 'week' variable to 0 to get rid of uninitialized
variable warning. Better solution is to give it the right value
somewhere :)
gtk/gtkclist.c:
When computing optimum column size, don't subtract the borders.(?)
Elliot Lee [Wed, 23 Dec 1998 16:24:15 +0000 (16:24 +0000)]
*/Makefile.am: Now passes 'make distcheck'. Now loops. I'm not sure what
*/Makefile.am: Now passes 'make distcheck'. Now loops. I'm not sure what
is up.
1998-12-23 Elliot Lee <sopwith@redhat.com>
* gtk/gtkmenu.c: Allow programmer to gtk_object_set_data(obj,
"GtkTearoffMenuItem_window_title", ..) on a GtkMenuItem and have
it be recognized. If we're getting the title out of the GtkLabel,
then remove all underscores.
Owen Taylor [Tue, 22 Dec 1998 22:00:43 +0000 (22:00 +0000)]
Request XmTRANFER_FAILURE on Motif drops not within a drop zone. I don't
Tue Dec 22 17:01:43 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_dest_handle_event):
Request XmTRANFER_FAILURE on Motif drops not within
a drop zone. I don't know why this is necessary,
but it is.
* gdk/gdkdnd.c (gdk_drop_reply): Fixed error where
Motif flag field in response was getting wrong
values.
Owen Taylor [Tue, 22 Dec 1998 20:06:44 +0000 (20:06 +0000)]
Optimization - when we've already found a widget, skip all checks for
Tue Dec 22 14:50:25 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_find_widget): Optimization -
when we've already found a widget, skip all checks
for subsequent children.
* gtk/gtkdnd.c (gtk_drag_find_widget): Checked for
!MAPPED, not !VISIBLE, since a widget (like a notebook
page), can be VISIBLE, but !REALIZED or !MAPPED.
* gtk/gtkdnd.c (gtk_drag_find_widget): Use forall(),
not foreach().
Tim Janik [Sat, 19 Dec 1998 05:15:15 +0000 (05:15 +0000)]
removed return_if_fail (label->words != NULL) since that's a valid case
Sat Dec 19 05:37:51 1998 Tim Janik <timj@gtk.org>
* gtk/gtklabel.c (gtk_label_expose): removed return_if_fail
(label->words != NULL) since that's a valid case when the label
is empty, or just default constructed.
fixed indentation prototype arguments and braces in some places.
also, pointer comparisions and initializations are done with NULL
not 0, there's a reason GLib defines NULL.
* gdk/gdkevents.c (gdk_events_pending): return (queued_events ||
putback_events) so this again returns whether events are pending,
not whether other sources like idles are pending.
* gtk/gtkmain.c (gtk_main_iteration_do):
(gtk_main_iteration): return whether the loop is done, not whether
something got dispatch to restore the original behaviour (yosh: this
fixes code like in GleSelector).
Tim Janik [Fri, 18 Dec 1998 02:23:48 +0000 (02:23 +0000)]
added gdk_flush() after g_main_run(), so we get the original behaviour
Fri Dec 18 01:32:59 1998 Tim Janik <timj@gtk.org>
* gtk/gtkmain.c (gtk_main): added gdk_flush() after g_main_run(), so we
get the original behaviour back, i.e. the event queue needs to be flushed
after a main loop has been quitted.
(gtk_main): add/remove the current main loop to/from the main loop
before/after init/quit functions have been exected to preserve the
original gtk_main_quit() behaviour.
Thu Dec 17 23:48:29 1998 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_events_init): changed argument order in call
to g_main_add_poll() to match recent glib changes.
Owen Taylor [Thu, 17 Dec 1998 23:35:22 +0000 (23:35 +0000)]
Remove the info tag from the context so if the source unexpectedly
Thu Dec 17 18:25:52 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_drop_finished): Remove the
info tag from the context so if the source unexpectedly
responds in the future, we do nothing properly.
Thu Dec 17 18:24:41 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]paned.c (gtk_[hv]paned_size_allocate): Handle
the case where one side of the the pane is empty.
* gtk/gtkfilesel.c (gtk_file_selection_init): Set
dir_title before using it. (Pointed out by
Lavoie Philippe <lavoie@zeus.genie.uottawa.ca>)
Owen Taylor [Thu, 17 Dec 1998 16:13:20 +0000 (16:13 +0000)]
Use setlocale (LC_ALL, NULL), not (LC_ALL, "") to query current locale.
Thu Dec 17 11:00:48 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkim.c (gdk_set_locale): Use setlocale (LC_ALL, NULL),
not (LC_ALL, "") to query current locale.
(Pointed out by Ullrich Hafner <hafner@informatik.uni-wuerzburg.de>)
Owen Taylor [Wed, 16 Dec 1998 20:09:30 +0000 (20:09 +0000)]
Move main thread lock back to GDK - we need it there for locking when
Wed Dec 16 13:06:17 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.[ch] gtk/gtkmain.[ch] gtk/gtkprivate.h: Move main
thread lock back to GDK - we need it there for locking
when translating events. Rename things appropriately.
Wed Dec 16 11:44:21 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkrange.c (gtk_range_expose): Fix a x/y typo.
* gtk/gtkprivate.h: changed GTK_THREADS_ENTER and GTK_THREADS_LEAVE
to function macros GTK_THREADS_ENTER() and GTK_THREADS_LEAVE().
honour G_THREADS_ENABLED in the definition of GTK_THREADS_ENTER()
and GTK_THREADS_LEAVE(). changed callers accordingly.