* gdk/gdktypes.h: Merge in Win32 version: Define macro GDKVAR for
declaring gdk variables exported/imported from the DLL. New image
type enum, GDK_IMAGE_SHARED_PIXMAP, for gdk_imlib. New drag and
drop protocol enums, GDK_DRAG_PROTO_WIN32_DROPFILES and
GDK_DRAG_PROTO_OLE2.
* gdk/gdk.h: Merge in Win32 version: Two new functions,
gdk_pixmap_create_on_shared_image and gdk_image_bitmap_new. So far
declared only for the Win32 version, but could be in the X11
version as well. (Needed for a Xlib-less gdk_imlib.)
gdk_color_hash should have only one parameter. Declare
gdk_threads_mutex with GDKVAR.
* gdk/gdkcolor.c (gdk_color_hash): As a hash function should have
just one parameter.
* gdk/gdkimage.c (gdk_image_get): Initialize bpp correctly. Bytes
per pixel, not bits.
* gdk/gdkrgb.c: Mingle includes somewhat. (gdk_rgb_select_conv):
Fetch bpp (which means bits-per-pixel here) from another place on
Win32. Accept also depth==32 (which we might get on Win32) with
bpp==32.
* gtk/{gtkclist,gtkctree,gtkdnd,gtkditable,gtkfontsel,
gtkhandlebox,gtklayout,gtkmain,gtkplug,gtkpreview,gtkrc,
gtkselection,gtksocket,gtkstyle,gtkwidget,gtkwindow}.c:
Include gdx.h from "gdkx.h", not "gdk/gdkx.h", as gdkx.h will be
in the backend-dependent directory, not in the common gdk
directory.
* gtk/testgtk.c: Ditto. Also, don't use ../gdk patchs to gdk
headers.
Mon Mar 15 03:38:34 1999 George Lebl <jirka@5z.com>
* gtk/gtkdnd.c: (gtk_drag_highlight) swap the
gtk_drag_highlight_expose and gtk_drag_highlight_paint since
it was connecting a void function to expose_event and the int
returning function to the draw signal
should break on Unix/X11.
Win32 merge and general portability stuff:
* acconfig.h,configure.in: Check for <sys/time.h>.
* gdk/win32: New directory (actually, been there for a while).
* gtk/fnmatch.c: Include <glib.h> for G_DIR_SEPARATOR, WIN32 and
NATIVE_WIN32, and use these. Always case fold on Win32. No
backslashed escapes on native Win32.
* gtk/{gtk.def,makefile.msc}: New files.
* gtk/Makefile.am: Add above new files.
* gtk/{gtkaccelgroup,gtkbindings}.c: Include <string.h>
instead of <strings.h>.
* gtk/{gtkcalendar,gtkitemfactory,gtkpreview,gtkrc}.c: Include
config.h. Protect inclusion of <sys/param.h>, <sys/time.h>, and
<unistd.h> appropriately.
* gtk/gtkdnd.c: Merge in Win32 version (which doesn't do much).
Use ABS() (from <glib.h>) instead of abs().
* gtk/gtkfilesel.c: Moved Win32-specific includes after inclusion
of gtk (and thus glib) headers, so that WIN32 will be
defined. With MS C, include <direct.h> for mkdir prototype.
* gtk/gtkitemfactory.c (gtk_item_factory_callback_marshal): Add
some casts, needed by MS C.
* gtk/{gtklayout,gtkplug}.c: Merge in Win32 version (which isn't
implemented).
* gtk/gtkmain.c: Include gdk/gdkx.h for GDK_WINDOWING. Include
<X11/Xlocale.h> only on X11 platform, otherwise <locale.h>. Use
G_SEARCHPATH_SEPARATOR_S and g_module_build_path.
* gtk/gtkmain.h: Mark variables for export/import on Win32.
* gtk/gtkrange.c (gtk_range_motion_notify): Set mods also in case
the event is not a hint, or its window is not the slider. Needed
on Win32, at least.
* gtk/gtkrc.c: Include config.h and gdk/gdkx.h. Use <locale.h>
unless on X11. Skip \r chars, too. Use G_DIR_SEPARATOR and
G_SEARCHPATH_SEPARATOR(_S). Use g_path_is_absolute. On Win32, use
a subdirectory of the Windows directory as gtk system
configuration directory.
* gtk/gtkselection.c: No chunks on Win32.
* gtk/gtksocket.c: Not implemented on Win32.
* gtk/gtkthemes.c (gtk_theme_engine_get): Use g_module_build_path.
* gtk/makeenums.h: Include gdkprivate.h after gdk.h.
* gtk/testrgb.c: Use dynamically allocated buffer. Use GTimers.
Mon Feb 22 19:06:30 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdnd.c (xdnd_send_*): When sending events to
windows with a proxy, set the window field in the
sent event to the original window, not to the proxy.
(This gives consistency with Motif, and also provides
information to the destination that it wouldn't have
otherwise).
* gtk/gtkdnd.c: Fixed some refcount leaks for windows.
* gdk/gdkdnd.c (xdnd_send_xevent): When sending
Xdnd event to the root window, set the event mask
to ButtonPressMask. Hopefully, this should give us
compatibility with kfm, if it uses the Qt style
of root window drops.
Mon Feb 15 18:02:22 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c: Some coding style fixups.
* gtk/gtkdnd.c (gtk_drag_set_icon_pixmap): Set a flag
so that we destroy the icon window that we created
when the drag ends.
Wed Feb 10 08:35:36 1999 Tim Janik <timj@gtk.org>
* gtk/gtkcolorsel.c (gtk_color_selection_draw_value_bar): asure that
->value_buf always points to an allocated area.
(gtk_color_selection_drag_end): new function hooked up to drag_end to
destroy the drag_window.
* gtk/gtkdnd.c: some coding style fixups.
Wed Feb 10 06:47:17 1999 Tim Janik <timj@gtk.org>
* gdk/gdkwindow.c: various indentation fixes.
* gdk/gdkevents.c: coding style fixups.
NULL initialize event_func, event_notify and event_chunk.
(expose_predicate): made this function static.
(gdk_event_handler_set): perform destroy notification even if no
event_func is set.
* gdk/gdkrectangle.c (gdk_rectangle_union): added g_return_if_fail
statements.
Fri Feb 5 13:23:50 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c (gdk_window_move_resize): Adjust
saved positions of children when resizing a
guffaw_gravity = TRUE window.
* gtk/gtkdnd.c (gtk_drag_highlight): Rework the
highlighting so that it is done in callbacks for
draw and expose. This should solve problems with
multiple highlights for the same GdkWindow.
* gtk/gtkdnd.c (gtk_drag_highlight): Fix bug where
the highlight was being drawn with an incorrect
width/height for !NO_WINDOW widgets.
Tue Feb 2 12:39:42 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c: Make sure we set the icon window position
before it is shown to prevent annoying flicking to 0,0.
Make it consistent that info->cur_x/y do not include
info->hot_x/y displacement.
Wed Jan 27 18:57:57 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.h gdk/gdkdnd.c: Change signatures for
gdk_drag_begin() and gdk_drag_motion() so that the set
of possible actions is passed on each motion, not just at
the beginning of the drag. We do this so that
we can restrict the set of possible drag events
when the user presses a modifier key during a
drag.
* gdk/gdkdnd.c: Send a motif Operation-changed
message when the set of possible actions change,
as well as when the suggested action change.
* gdk/gdkdnd.c: Change the XdndActionList whenever
the set of actions change.
* gdk/gdkdnd.c: Add a filter to catch changes to
the XdndActionList property for the source widget.
* gtk/gtkdnd.c: Change the set of possible actions
when the user presses Control, Shift, or Control-Shift,
to only include the corresponding action.
* gtk/gtkdnd.c (gtk_drag_button_release_cb):
Disconnect button signals before we possibly
free info structure.
Sat Jan 23 11:15:39 1999 Owen Taylor <otaylor@gtk.org>
* gdk/gdkdnd.c (gdk_window_register_dnd): X expects
longs, not uint32 for XChangeProperty, when
format == 32.
* gdk/gdkdnd.c (motif_read_initiator_info): Byte-swap
the MotifInitiatorInfo structure if necessary.
* gdk/gdkdnd.c: When extracting and constructing
Motif DND messages, don't use data.s[], data.l[]
since on 64bit architectures, these won't necessarily
be in the same place with data.b[].
* gtk/testdnd.c (target_drag_drop): Return TRUE for
drag_drop within the drop zone.
* gtk/gtkdnd.c (gtk_drag_dest_handle_event): Only send
a XmTRANSFER_FAILURE if no drop site is found, not
on every drop!
Thu Jan 21 00:44:47 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_dest_drop): Default handling
for drops should be keyed on GTK_DRAG_DEFAULT_DROP
not GTK_DRAG_DEFAULT_MOTION.
Wed Jan 20 19:57:14 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_begin): Start off with the
cursor for "no drop" since if we'll get a status
if we are over a drag window, but none if we aren't
over one.
1999-01-20 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gtk/gtkdnd.c (gtk_drag_get_event_action): Allow button 2 to act
as GDK_ACTION_ASK. Also, allow MOD1 to specify GDK_ACTION_ASK
only if that action is enabled in the actions argument.
Thu Jan 14 11:29:53 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_get_event_action): Make
MOD1-drag also do action ask.
* gtk/gtkdnd.c (gtk_drag_button_release_cb): Send the
button-release event we simulate to get grabs released,
with a window of GDK_ROOT_PARENT instead of the actual
widget. This is a bad hack in some sense, but seems
to work nicely. (It's sort of like what you would
if you grabbed on button press, then the user
released outside of the widget.)
Mon Jan 11 10:45:28 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c: Only remove handlers for motion/button_release
at drop, remove "selection_get" handler later.
Fri Jan 8 19:00:17 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdnd.c (gdk_window_cache_filter): Fixed
some list-manipulation breakage.
* gdk/gdkdnd.c (gdk_window_cache_destroy): Free
window cache structure.
* gtk/gtkdnd.c (gtk_drag_set_icon_pixmap): Set an
event mask on the drag window so clicking on it
doesn't pop up root menus, etc.
* gtk/gtkdnd.c (gtk_drag_button_release_cb): Remove
signal handlers at button release.
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.
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.
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().
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>)
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.
CVS:
Wed Dec 16 05:26:32 1998 Tim Janik <timj@gtk.org>
* configure.in: version bump to 1.1.8, binary age 0, interface age 0,
depend on GLib 1.1.8.
* gdk/gdkprivate.h:
* gdk/gdkglobals.c: removed last Gdk threads specific bits.
* gtk/gtkmain.c (gtk_init): s/g_thread_supported/g_thread_supported()/.
* 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.
Tue Dec 15 01:38:53 1998 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am: Commented out testthreads from
the build process, since we won't have any idea
how to create a thread.
* configure.in (LIBS): use glib-config ... gthread
so we always build a thread-compatible library.
* gtk/gtkaccellabel.c gtk/gtkclist.c gtk/gtkcolorsel.c
gtk/gtkcombo.c gtk/gtkcontainer.c gtk/gtkentry.c
gtk/gtklist.c gtk/gtkmenuitem.c gtk/gtknotebook.c
gtk/gtkrange.c gtk/gtkselection.c gtk/gtkspinbutton.c
gtk/gtktext.c gtk/gtktooltips.c gtk/gtkwidget.c:
Add GTK_THREADS_ENTER/LEAVE pairs around timeouts
and idles to account for the fact that they are no
longer called within the GTK+ lock.
* gtk/gtkprivate.h: Added definitions for locking
the main GTK+ mutex.
* gtk/gtkmain.c: Re-implement the main loop
in terms of the GLib main loop.
* gdk/gdk.h gdk/gdkthreads.c gdk/Makefile.am: Removed threading
functionality, as it seems better to subsume GDK within the
GTK+ lock than vice-versa.
* gdk/gdkevents.c: New file, containing event handling bits
from gdk.c.
* gdk/gdkevents.c: Implement event source for GDK
events.
* configure.in gdk/gdkevents.c: Removed attempts to
subtract base_id, which were already non-functional.
Thu Dec 10 20:42:22 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_dest_handle_event): Use
gdk_window_get_origin() instead of gdk_window_get_position,
because get_position is unreliable for plugs.
This is a bad hack, maybe we need GDK_WINDOW_PLUG?
Thu Dec 3 16:49:18 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (DROP_ABORT_TIME): Changed to 5 min
from 10 seconds, so it doesn't abort while users
have an ACTION_ASK menu up.
* gtk/gtkdnd.c: Hide the icon window between sending a a
drop event to the destination and displaying the
snapback animation, so that it doesn't hang around
during ACTION_ASK.
I submitted this patch twice to gtk-devel-list, and received no comments, so
am committing it. Although not exhaustively tested, I have been using this
gtk+ for a week w/o problems, and I did read the code to ensure that nothing
ever writes to these data structures. If by chance people encounter SEGV's in
gtk+ code that is setting values in global data structures, this patch could
be a possible culprit.
1998-11-30 Elliot Lee <sopwith@cuc.ml.org>
* {gdk,gtk}/*.c: Make read-only data structures "static const" to
allow them to be shared, mainly including (but not limited to) the
GtkTypeInfo structures for each class.
* gtk/gtkfilesel.c: Add /net to the "leave me alone" directory listing.
Fri Nov 27 12:17:15 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.[ch] (gtk_drag_get_source_widget): New function to
get the source widget of a drag.
* gtk/gtkdnd.[ch]: Target flags GTK_TARGET_SAME_[WIDGET/APP]
to restrict certain targets to the same widget or to
the same application.
* gtk/testdnd.c: Test gtk_drag_get_source_widget().
Tue Nov 24 11:11:05 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtklayout.[ch]: Fixed up copyright message.
* gdk/gdkrgb.c (DM): Make the dither matrix constant
so it can be shared.
* gtk/gtkdnd.c: Make cursor bitmaps const.
* gdk/gdk.h gdk/gdkpixmap.c: Added const to
gdk_pixmap/bitmap_create_from_data.
Wed Nov 18 11:54:57 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_find_widget): Accept drops
that are sent to a toplevel but are not within the
toplevels bounds.
* gdk/gdkdnd.c gdk/gdk.h: Added support for a
XdndProxy atom which proxies the drag to another window.
* gtk/gtkclist.c: check if column[i].button is valid before calling
gtk_widget_intersect on it in gtk_clist_draw
* gtk/gtkdnd.c: removed unused variable empty_bits
* gtk/gtkrc.c: we should use gslist_* functions with GSLists...
* gtk/gtktypeutils.[ch]: makes more send for gtk_type_is_a to return
a boolean (thanks to Elrond for noticing this)
-Yosh
Tue Oct 20 14:53:28 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c: Always send "drag_leave" to dests
without GTK_DEST_DEFAULT_MOTION.
Tue Oct 20 11:55:24 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Handle DestroyNotify
on destroyed windows so we clear the XID table properly.
Finish up restructure of return value handling that
was half-done before.
Tue Oct 20 12:57:10 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_send_clientmessage_to_all): Hunt
the window tree more comprehensively, so that we find
client windows hidden under non-toplevels.
Tue Oct 20 12:43:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkselection.c (gtk_selection_data_set):
Maintain the null-termintation guarantee, even when
data = NULL, length = 0. (Warn on data = NULL,
length > 0)
Mon Oct 19 16:41:44 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.h (struct _GtkWidgetClass): Add in coordinates
into function prototype for drag_data_received.
Mon Oct 19 08:31:36 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkdnd.c (gtk_drag_selection_received): Fixed
typo - look for right atom on transfer failures.
Sun Oct 18 18:16:39 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdk.c gdkprivate.h: Added a modular client-message-filter
mechanism, that is used for the DND messages.
Removed all the old DND code.
* gdk/gdkcolormap.c gdk/gdkcolormap.h: Add a function to
get the visual of a given colormap.
* gtk/gtkcolorsel.c: Conversion to new DND, drag
a color-swatch.
* gdk/gdk.h gdk/gdkdnd.c: The low-level
X oriented portions of drag and drop protocols.
Sending and receiving client messages, and navigating
window trees.
* gdk/gdkimage.c: added a gdk_flush() when destroying
SHM images to hopefully make it more likely that
X will gracefully handle the segment being destroyed.
* gdk/gdkprivate.h gtk/gtkdebug.h: Add new
DND debugging flags.
* gtk/gtkeditable.[ch]: Updates for the selection handling
changes.
* gtk/gtkselection.[ch]: Added GtkTargetList, a
refcounted data structure for keeping track of lists
of GdkAtom + information. Removed selection_handler_add
in favor of a "drag_data_get" signal.
* gtk/gtkdnd.[ch] gtk/gtk.h: New files - highlevel (event loop
dependent) parts of the DND protocols, display of drag icons,
drag-under highlighting, and the "default handlers".
* gtk/gtkinvisible.[ch]: New widget - InputOnly offscreen
windows that are used for reliable pointer grabs and
selection handling in the DND code.
* gtk/testdnd.c: New test program for new DND. (Old
DND tests in testgtk still need to be converted.)
* gtk/testselection.c: Use the new selection API.
* docs/dnd_internals: Start at describing how
all the new code works inside.
* docs/Changes-1.2.txt: New file describing source-incompatible
changes in GTK+-1.2.
Sat Oct 17 22:50:34 1998 Owen Taylor <otaylor@gtk.org>
* gdk/gdkwindow.c (gdk_window_remove_filter): Free
the right list node.
* gdk/gdkwindow.c (gdk_window_init): Add gdk_root_parent
to the XID table so we can receive events on it.
Wed Oct 14 12:57:40 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c gdk/gdk.h (gdk_event_get_time): New function
to get the timestamp from a generic event.
Fri Oct 9 13:16:04 1998 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_add_events): Added function
that safely adds additional events to a widget's event
mask, even if the widget has previously been realized.
(We can do this, but not remove events from the event
mask).
Fri Oct 2 17:35:35 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Allow type == 0,
for AnyPropertyType.
Fri Oct 2 10:32:21 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Add client-local
hashing.
Thu Sep 24 20:33:54 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_send_clientmessage_toall): serial
isn't a timestamp.
Thu Sep 17 14:23:03 1998 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_event_translate): Removed printing
of unknown window lookup warnings. (Made it
a GDK_NOTE) - they happen in many circumstances.