summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog470
-rw-r--r--ChangeLog.pre-2-0470
-rw-r--r--ChangeLog.pre-2-10470
-rw-r--r--ChangeLog.pre-2-2470
-rw-r--r--ChangeLog.pre-2-4470
-rw-r--r--ChangeLog.pre-2-6470
-rw-r--r--ChangeLog.pre-2-8470
-rw-r--r--INSTALL51
-rw-r--r--Makefile.am15
-rw-r--r--TODO16
-rw-r--r--acinclude.m428
-rwxr-xr-xautogen.sh2
-rw-r--r--configure.in38
-rw-r--r--docs/Makefile.am64
-rw-r--r--docs/gtk-config.12
-rw-r--r--docs/gtk-config.1.in49
-rw-r--r--gdk/COPYING504
-rw-r--r--gdk/Makefile.am121
-rw-r--r--gdk/gdk.c74
-rw-r--r--gdk/gdk.h121
-rw-r--r--gdk/gdkcc.c50
-rw-r--r--gdk/gdkcolor.c207
-rw-r--r--gdk/gdkdnd.c76
-rw-r--r--gdk/gdkdraw.c12
-rw-r--r--gdk/gdkevents.c197
-rw-r--r--gdk/gdkfont.c107
-rw-r--r--gdk/gdkgc.c1
-rw-r--r--gdk/gdkglobals.c2
-rw-r--r--gdk/gdkim.c30
-rw-r--r--gdk/gdkimage.c24
-rw-r--r--gdk/gdkpixmap.c5
-rw-r--r--gdk/gdkprivate.h2
-rw-r--r--gdk/gdkproperty.c15
-rw-r--r--gdk/gdkrgb.c15
-rw-r--r--gdk/gdkselection.c10
-rw-r--r--gdk/gdkwindow.c61
-rw-r--r--gdk/x11/gdkcc-x11.c50
-rw-r--r--gdk/x11/gdkcolor-x11.c207
-rw-r--r--gdk/x11/gdkdnd-x11.c76
-rw-r--r--gdk/x11/gdkevents-x11.c197
-rw-r--r--gdk/x11/gdkfont-x11.c107
-rw-r--r--gdk/x11/gdkglobals-x11.c2
-rw-r--r--gdk/x11/gdkim-x11.c30
-rw-r--r--gdk/x11/gdkimage-x11.c24
-rw-r--r--gdk/x11/gdkmain-x11.c74
-rw-r--r--gdk/x11/gdkpixmap-x11.c5
-rw-r--r--gdk/x11/gdkproperty-x11.c15
-rw-r--r--gdk/x11/gdkselection-x11.c10
-rw-r--r--gdk/x11/gdkwindow-x11.c61
-rw-r--r--gtk-config.in2
-rw-r--r--gtk/gtkfeatures.h.in123
-rwxr-xr-xltconfig170
-rw-r--r--ltmain.sh212
-rwxr-xr-xsanity_check11
54 files changed, 5501 insertions, 1064 deletions
diff --git a/ChangeLog b/ChangeLog
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index b3c28abbd7..add3c28b1d 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,473 @@
+[ Merges from gtk-1-2 ]
+
+Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: fixed "GNU Make" check to pass with new make version
+ 3.77.95.
+
+Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
+
+ * gtk-config.in (--version): don't echo @GTK_VERSION@, but
+ @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
+ AM_PATH_GTK() macros don't get confused by the -pre1.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (REBUILD): Change check for perl5
+ to check explicitely for v >= 5.002. (5.001
+ does not work with our scripts.)
+
+Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $PERL for the perl version check. added
+ --disable-rebuilds to give the user an option to completely disable
+ any source autogeneration rules.
+
+Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
+
+ * configure.in: evaluate $ac_make when checking for GNU Make.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * docs/Makefile.am: added generation.txt.
+
+ * Makefile.am: require automake 1.4, build README from README.in and
+ INSTALL from INSTALL.in in dist-hook.
+
+ * README.in:
+ * INSTALL.in: new files to autogenerate README and INSTALL from.
+
+ * configure.in: figure whether we have GNU Make
+
+ * docs/generation.txt: minor additions/corrections.
+
+Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
+
+ * docs/gtkfaq.sgml: FAQ Update
+
+July 30, 1999 Elliot Lee <sopwith@redhat.com>
+
+ * configure.in: Fix autoconf warnings about cross compilation by
+ trying to provide sane defaults for AC_TRY_RUN.
+
+Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * ltconfig
+ * ltmain.sh: upgrade to libtool 1.3.3
+
+Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
+
+ * INSTALL: Indicate that the --with-glib= configure
+ time flag is unsupported.
+
+Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/generation.txt: Added a file that gives
+ documenation about the autogeneration process for
+ various autogenerated files.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/gtk_tut.sgml: Removed references to
+ code examples in my directory on gtk.org as
+ they should all be in the tutorial now.
+
+ * docs/gtk_tut.sgml: Added sources for dial-test
+ and scribble-xinput programs that were previously
+ missing.
+
+Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * TODO: Added entry about menu keyboard navigation, removed
+ some finished items.
+
+Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * acinclude.m4: Standardize on func_dgettext
+ not func_gettext, so that the checks for dgettext
+ actually are paid attention to.
+
+Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Add $INTLLIBS into $LIBS
+ directly, rather than repeating the checks for
+ gettext.
+
+ * INSTALL: Added information about gettext and
+ NLS support.
+
+ * acinclude.m4 (LIBM): Check for dgettext, not
+ just gettext. This should hopefully fix things wrt
+ systems with old versions of GNU gettext installed.
+
+Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in (LIBS): Look for libgmodule in the
+ right location.
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * autogen.sh: add --enable-maintainer-mode
+
+ * configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
+
+ * docs/gtk-config.1.in:
+ docs/Makefile.am:
+ configure.in: gtk-config is now generated.
+
+ * docs/gtk-config.1: Removed, now generated.
+
+Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
+ handle CreateNotify itself, still put out a debuging message for
+ --gdk-debug=events. made the ReparentNotify debugging message more
+ verbose.
+ wrap xcoords translation for ConfigureEvents into an error trap,
+ a destroy event may already be pending, and in that case, the
+ actuall coordinate values are not at all critical.
+
+Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcc.c: Stop leaking the color_hash all over
+ the place. Simplify and improve the logic.
+
+Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
+ for prototypes and function implementations consistent (reported
+ by Tomas Ogren).
+
+Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): tell if expose events have
+ send_event set in debugging output.
+ (gdk_compress_exposures): default initialize the event so we don't
+ operate on bogus values (namely send_event).
+
+Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: When we receive an unexpected
+ destroy notify on one of our windows, don't just
+ warn about it, also mark our windows as destroyed.
+
+Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_font_hash_insert): Add
+ name => font and name => fontset hashes. The
+ name => fontset hash is a _big_ win since we
+ weren't previously caching fontsets at all and loading
+ fontsets is expensive. The name => font hash
+ is less of a win, but it does save us from doing
+ repeated XQueryFont calls on the same font.
+
+ * gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
+ list so we can remove font/fontset from hash.
+
+Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Remove useless
+ and slightly confusing test. [ XInternAtom (,,TRUE)
+ will never return None ].
+
+Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints)
+ gdk/gdkwindow.c (gdk_window_set_hints):
+
+ Don't omit setting the properties if flags == 0 -
+ there may be an existing set of properties there
+ already. (Very old bug. Would it be better to
+ delete the property instead?)
+
+ * gdk/gdkselection.c (gdk_selection_property_get): Fix
+ spelling error in comment.
+
+Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
+ to avoid stomping over gdk_error_warnings.
+
+ * gdk/gdkimage.c (gdk_image_new): compute image->bpp
+ as (bits_per_pixel + 7) / 8. This gives the same
+ result as before for multiples of 8, but actually
+ a "reasonable" value for 1bit or 4bit displays.
+
+Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/Makefile.am: minor cleanups, strip spaces on build rules for
+ GNU Make.
+
+Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): give a debugging note when
+ discarding configure events.
+
+1999-08-18 Federico Mena Quintero <federico@redhat.com>
+
+ * gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
+ refcount is greater than zero.
+
+ * gdk/gdkwindow.c (gdk_window_unref): Likewise.
+
+ * gdk/gdkfont.c (gdk_font_unref): Likewise.
+
+ * gdk/gdkgc.c (gdk_gc_unref): Likewise.
+
+ * gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
+
+Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_property_get): Fix assumption
+ that format 32 => sizeof(item) == 4. It really is
+ sizeof(long).
+
+Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
+ core dump at all on X IO errors, only core dump
+ if --enable-debug for X errors.
+
+Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
+ unknown window:" message. disabled ConfigureNotify discarding code,
+ because it led to events being processed out of order.
+
+Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
+
+ * gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
+ we export this function, supress error warnings and don't reset the
+ error code in the first half of this function.
+
+ * gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
+ code (instead of just -1) so gdk_error_trap_pop() reveals something
+ actually informative about the error that happened.
+
+ * gdk/*.c:
+ don't rely on gdk_error_code being -1 if an error occoured, but just
+ gdk_error_code != 0.
+
+Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
+ pointer *before* invoking the filter function, so we at least don't
+ crash if a filter is removed that is currently executed. window filters
+ *really* need to be made truely reentrant at some point.
+
+Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkevents.c (gdk_event_translate): print the atom name in the
+ PropertyNotify debug messages.
+
+Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
+
+ * gdk/gdkim.c: Fix cut-and-paste errors for
+ x/y and PreeditAttributes/StatusAttributes.
+
+Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
+ G_MAXINT to 2^16 to alleviate overflow problems in
+ various window managers.
+
+Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkfont.c (gdk_text_measure): Fix the return value
+ for fontsets.
+
+Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c (gdk_window_set_geometry_hints):
+ Initialize size_hints.x and size_hints.y because kwm
+ brokenly pays attention to them.
+ (Bug #1181 - Lars Heete <hel@admin.de>)
+
+Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
+ return value of gdk_list_visuals().
+ (Bug #1193 - Morten Welinder <terra@diku.dk>)
+
+Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkim.c (gdk_im_real_open): cast the return value of
+ XSetIMValues to (void *) when comparing to NULL, to workaround
+ the problem of some compilers barfing since older X headers don't
+ have the prototype for it.
+
+Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
+ for pseudocolor where colormap->colors was double
+ allocated.
+
+ * gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
+ color value in the hash table with the pixel filled
+ in so when we do later hash table lookups, the color
+ value is correct.
+
+Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
+ making the call
+
+Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
+ pointed out by Morten Welinder <terra@diku.dk>.
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
+
+ * gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
+ default filter from the list
+
+Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
+
+ * gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
+ g_strdup_printf instead of calcing the length separately
+
+Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
+ that we don't do in many other places. (Fixing duplicate
+ #include of config.h)
+
+ * gdk/gdkevents.c: include gdkinput.h _after_ config.h.
+ Otherwise, #ifndef XINPUT_NONE check in the latter
+ doesn't work. (Bug #546)
+
+Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
+ "None" case insensitive.
+
+Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkselection.c:
+ Add error traps so if the other end of the connection
+ dies, we survive.
+
+Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (gdk_drag_motion): Separate out the
+ dest_xid field into two fields - one for the window
+ to send in messages, one to indicate the last looked
+ up window for caching purposes. This is needed, so
+ that Leave messages get the correct window.
+
+Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
+ Fix warning created by people mucking around
+ with the gsource API.
+
+ * gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
+ Change mapping between GIOCondition and GdkInputCondition
+ to match the way the Linux kernel does it. This should
+ fix problems where closed pipes were no longer signalling
+ GDK_INPUT_READ on systems with a native poll().
+
+Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
+ explicitly for the string "None" - it is in the XPM
+ spec and some servers treat unknown colors in odd ways
+ (like asking the user!)
+
+Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
+
+ * gdk/gdkevents.c: made "->" into a "." of previous change so
+ it compiles
+
+Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkevents.c (gdk_compress_exposures): Set the
+ window field of the event structure before calling
+ user filters.
+
+1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
+
+ * gdk/gdk.c (gdk_init_check): Use False as the last argument to
+ XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
+
+Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkim.c (gdk_mbstowcs): Free the value of the
+ intermediate text property - prevents major memory
+ leak when gdk_use_mb.
+ gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
+
+Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
+
+ Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
+ gtk-a-higuti-990322-[0-3]
+
+ * gdk/gdkfont.c (gdk_text_extents_wc): Make work when
+ sizeof(wchar_t) != sizeof (GdkWChar)
+
+ * configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
+ that was causing -DX_LOCALE not to work.
+
+ * gtk/gtkrc.c (gtk_rc_init):
+ X_LOCALE will never have LC_MESSAGES defined
+
+ * gdk/gdk.c (gdk_init_check):
+ Remove --xim-preedit and --xim-status from argv properly.
+
+ * gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
+ that the client window is present on the X server
+ before we pass it to the input method.
+
+Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
+ if --display is specified on the command line, than
+ the drag window will not be created on that display.
+
+Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
+
+ * gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
+ lookups with only_if_exists == TRUE were inserting
+ bogus values into the atom cache.
+
+Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
+ then reset it to NULL.
+
+ * gdk/gdkcolor.c:
+ (gdk_colors_free):
+ (gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
+ key for g_hash_table_remove() in both functions, this prevents us
+ from accessing possibly uninitialized portions of a GdkColor structure
+ where we are only interested in its pixel value.
+
+Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
+
+ * gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
+ font hash table, if we have a GdkFontPrivate entry for this font
+ already, simply increment its reference count, provided by Olaf Dietsche
+ <olaf.dietsche+list.gtk@netcologne.de>.
+
1999-09-21 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdk.c (gdk_exit_func): Delete the gdk_DC when exiting,
diff --git a/INSTALL b/INSTALL
index 7a5b5471b4..7b3c17ec33 100644
--- a/INSTALL
+++ b/INSTALL
@@ -7,12 +7,12 @@ you got this package.
Simple install procedure
========================
- % gzip -cd gtk+-1.2.0.tar.gz | tar xvf - # unpack the sources
- % cd gtk+-1.2.0 # change to the toplevel directory
- % ./configure # run the `configure' script
- % make # build GTK
+ % gzip -cd gtk+-1.2.5.tar.gz | tar xvf - # unpack the sources
+ % cd gtk+-1.2.5 # change to the toplevel directory
+ % ./configure # run the `configure' script
+ % make # build GTK
[ Become root if necessary ]
- % make install # install GTK
+ % make install # install GTK
The Nitty-Gritty
================
@@ -43,6 +43,13 @@ which form of support to use:
For more information, follow the link from http://www.gtk.org
+* --disable-nls do not use Native Language Support
+
+If this flag is not specified, GTK+ will try to find
+and use the gettext() set of functions to provide translations
+of the strings in the standard dialogs into the
+user's native language.
+
* --enable-xim support XIM [default=yes]
Specifying --disable-xim will disable support for entering
@@ -50,7 +57,7 @@ internationalized text using X Input Methods. This will give some
slight savings in speed and memory use and might be necessary
with older versions of X.
-* --with-locale=LOCALE locale name you want to use
+* --with-locale=LOCALE locale name you want to use
The --with-locale options is used to determine if your operating
system has support for the locale you will be using. If not, X's
@@ -84,19 +91,43 @@ or,
setenv CFLAGS -O2 ; ./configure # csh and variants
+Native-Language Support and gettext()
+=====================================
+
+To provide native-language support (NLS) GTK+ uses the
+gettext() set of functions. These functions are found
+in the C library on many systems, such as the Solaris
+C library and the GNU C Library, version 2.
+
+If your C library does not provide the necessary functionality,
+you may wish to install the GNU gettext package. You'll
+need version 0.10.35 or better. Version 0.10.35 is
+available from ftp://alpha.gnu.org/pub/gnu
+
+Generally, GTK+ will properly detect what is installed
+on your system and enable or disable NLS as appropriate.
+However, in rare cases, it may be necessary to disable
+NLS manually to get GTK+ to compile. You can do this
+by specifying the --disable-nls flag when configuring
+GTK+.
-Using an uninstalled copy of GLIB
-=================================
+Using an uninstalled copy of GLIB [ Unsupported ]
+=================================================
You can compile GTK+ against a copy of GLIB that you have not
yet installed. To do this, give the --with-glib=DIR options
to ./configure. For instance:
- ./configure --with-glib=../glib-1.2.0
+ ./configure --with-glib=../glib-1.2.5
This, however, will not work if you built GLIB with different
source and build directories.
+It is recommended that you install GLIB before compiling
+GTK+. The --with-glib option is not regularly tested
+and may not function correctly. In addition,
+inter-library dependencies won't be generated when
+using --with-glib=.
Installation directories
========================
@@ -126,7 +157,7 @@ For complete details, see the file docs/gtk-config.txt
Notes for using XIM support for Japanese input
==============================================
-* There is a bug in older versions of kinput2 that will cause GTK
+* There is a bug in older versions of kinput2 that will cause GTK+
to hang when destroying a text entry. The latest versions of
kinput is available from:
diff --git a/Makefile.am b/Makefile.am
index 0ec9ada69a..da06375b48 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,10 +1,13 @@
-## Process this file with automake to produce Makefile.in
+## Makefile.am for GTK+
SRC_SUBDIRS = gdk gtk
SUBDIRS = po $(SRC_SUBDIRS) docs
bin_SCRIPTS = gtk-config
+# require automake 1.4
+AUTOMAKE_OPTIONS = 1.4
+
EXTRA_DIST = \
HACKING \
gtk+.spec.in \
@@ -97,8 +100,14 @@ EXTRA_DIST = \
examples/spinbutton/Makefile \
examples/find-examples.sh
-dist-hook:
- cp gtk+.spec $(distdir)
+dist-hook: gtk+.spec
+ if test -e $(srcdir)/INSTALL.in && test -e $(srcdir)/README.in ; then \
+ CONFIG_FILES="INSTALL:$(srcdir)/INSTALL.in README:$(srcdir)/README.in" \
+ CONFIG_HEADERS= \
+ $(SHELL) config.status \
+ && cp INSTALL README $(distdir) ; \
+ fi \
+ && cp gtk+.spec $(distdir)
m4datadir = $(datadir)/aclocal
m4data_DATA = gtk.m4
diff --git a/TODO b/TODO
index 74ad4b769e..e60c057026 100644
--- a/TODO
+++ b/TODO
@@ -12,21 +12,14 @@ Outstanding items:
* Make all widget attributes configurable after the widget is created (timj).
* Radio buttons need to display CAN/HAS_DEFAULT correctly, if draw_inidicator
- is TRUE.
+ is TRUE. (Radio buttons do not need to CAN_DEFAULT! OWT)
- * gdk_expose_compress: ala-Xt, this would really help for opaque moves and
- such
-
- * More dialogs: Print, GtkFontSelector, maybe others...
+ * More dialogs: Print, maybe others...
* make the gtk_main callbacks consistent in their add/remove behaviour.
* Check return values on all calls to XIC[Get/Set]Values
- * Rewrite the interface to the i18n stuff so GTK widgets don't need to
- retrieve X values, and so they don't have to know the value of the
- XNxxx character constants.
-
* The "--geometry" option should be supported
- Having gdk_init() parse the geometry option. (putting it into
@@ -70,6 +63,11 @@ Outstanding items:
cause confusing presses to be sent to containers that actually
want to get events on themselves.
+ * The menu code should skip separators during keyboard navigation,
+ whether they are sensitive or insensitive.
+
+ * OwnerButtonPressGrab needs to go!
+
Text/Edit widget:
Bugs:
diff --git a/acinclude.m4 b/acinclude.m4
index f9e725a7b3..5de6f7aa19 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -473,22 +473,22 @@ AC_DEFUN(AM_GTK_WITH_NLS,
CATOBJEXT=NONE
AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
+ [AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([#include <libintl.h>], [return (int) dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no)])
- if test "$gt_cv_func_gettext_libc" != "yes"; then
+ if test "$gt_cv_func_dgettext_libc" != "yes"; then
AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_CHECK_LIB(intl, gettext,
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)],
- gt_cv_func_gettext_libintl=no)])
+ [AC_CACHE_CHECK([for dgettext in libintl],
+ gt_cv_func_dgettext_libintl,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes,
+ gt_cv_func_dgettext_libintl=no)],
+ gt_cv_func_dgettext_libintl=no)])
fi
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
AC_DEFINE(HAVE_GETTEXT)
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
@@ -508,8 +508,8 @@ AC_DEFUN(AM_GTK_WITH_NLS,
fi
# Added by Martin Baulig 12/15/98 for libc5 systems
- if test "$gt_cv_func_gettext_libc" != "yes" \
- && test "$gt_cv_func_gettext_libintl" = "yes"; then
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ && test "$gt_cv_func_dgettext_libintl" = "yes"; then
INTLLIBS=-lintl
LIBS=`echo $LIBS | sed -e 's/-lintl//'`
fi
diff --git a/autogen.sh b/autogen.sh
index fa0fabfa2e..6fe026c861 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -80,7 +80,7 @@ automake -a $am_opt
autoconf
cd $ORIGDIR
-$srcdir/configure "$@"
+$srcdir/configure --enable-maintainer-mode "$@"
echo
echo "Now type 'make' to compile $PROJECT."
diff --git a/configure.in b/configure.in
index a682df2f36..ed35036dd2 100644
--- a/configure.in
+++ b/configure.in
@@ -95,6 +95,7 @@ AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
, enable_xim="yes")
AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],
, enable_xim_inst="maybe")
+AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
@@ -143,7 +144,10 @@ if test "x$GCC" = "xyes"; then
fi
changequote([,])dnl
-# define a MAINT-like variable REBUILD which is set if Perl
+# Honor aclocal flags
+ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+ # define a MAINT-like variable REBUILD which is set if Perl
# and awk are found, so autogenerated sources can be rebuilt
AC_PROG_AWK
@@ -153,22 +157,34 @@ AC_CHECK_PROGS(PERL, perl5 perl)
AC_CHECK_PROG(INDENT, indent, indent)
REBUILD=\#
-if test -n "$PERL" && perl -v | grep 'version 5.' > /dev/null ; then
- if test -n "$AWK" ; then
- REBUILD=
- fi
+if test "x$enable_rebuilds" = "xyes" && \
+ test -n "$PERL" && \
+ $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
+ test -n "$AWK" ; then
+ REBUILD=
fi
AC_SUBST(REBUILD)
AC_CHECK_FUNCS(lstat)
+AC_MSG_CHECKING(whether make is GNU Make)
+STRIP_BEGIN=
+STRIP_END=
+if $ac_make --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
+ STRIP_BEGIN='$(strip'
+ STRIP_END=')'
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST(STRIP_BEGIN)
+AC_SUBST(STRIP_END)
+
# i18n stuff
-ALL_LINGUAS="ca cs da de el es et eu fr ga hr hu it ja ko nl no pl pt pt_BR ru sk sl sv wa zh_TW.Big5"
+ALL_LINGUAS="ca cs da de el es et eu fi fr ga hr hu it ja ko nl no pl pt pt_BR ru sk sl sv wa zh_TW.Big5"
AM_GTK_GNU_GETTEXT
-AC_CHECK_FUNC(gettext,
- ,
- AC_CHECK_LIB(intl, gettext)
-)
+LIBS="$LIBS $INTLLIBS"
+
# AM_GTK_GNU_GETTEXT above substs $DATADIRNAME
# this is the directory where the *.{mo,gmo} files are installed
gtklocaledir='${prefix}/${DATADIRNAME}/locale'
@@ -596,11 +612,13 @@ fi
AC_OUTPUT([
gtk+.spec
+docs/gtk-config.1
Makefile
gtk-config
po/Makefile.in
docs/Makefile
gdk/Makefile
gtk/Makefile
+gtk/gtkfeatures.h
gtk/gtkcompat.h
], [chmod +x gtk-config])
diff --git a/docs/Makefile.am b/docs/Makefile.am
index ddebc3e36f..8d58f71fdd 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -101,36 +101,7 @@ FAQ_FILES=html/gtkfaq.html \
html/gtkfaq-7.html \
text/gtkfaq.txt
-EXTRA_DIST = \
- gtk-config.1 \
- texinfo.tex \
- macros.texi \
- gtkdocs_fix \
- gtkfaq.sgml \
- gtk-config.txt \
- gtk_tut.sgml \
- gtk_tut_it.sgml \
- gtk_tut_fr.sgml \
- debugging.txt \
- developers.txt \
- refcounting.txt \
- styles.txt \
- text_widget.txt \
- widget_system.txt \
- gtk_tut_packbox1.gif \
- gtk_tut_packbox2.gif \
- html/gtk_tut_table.gif \
- html/gtk_tut_packbox1.gif \
- html/gtk_tut_packbox2.gif \
- gtk_tut_table.gif \
- html/gdk.html \
- html/gdk_toc.html \
- html/gtk.html \
- html/gtk_toc.html \
- $(TUTORIAL_FILES) \
- $(TUTORIAL_FR_FILES) \
- $(TUTORIAL_IT_FILES) \
- $(FAQ_FILES)
+html/gtk_tut_table.gif: gdk.html gtk.html
.PHONY: html htmldir faq tutorial tutorial_it tutorial_fr files
@@ -195,3 +166,36 @@ files:
@files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \
echo $$p; \
done
+
+EXTRA_DIST += \
+ Changes-1.2.txt \
+ debugging.txt \
+ developers.txt \
+ refcounting.txt \
+ styles.txt \
+ text_widget.txt \
+ widget_system.txt \
+ generation.txt \
+ gtk-config.txt \
+ gtk-config.1.in \
+ texinfo.tex \
+ macros.texi \
+ gtkdocs_fix \
+ gtkfaq.sgml \
+ gtk_tut.sgml \
+ gtk_tut_it.sgml \
+ gtk_tut_fr.sgml \
+ gtk_tut_packbox1.gif \
+ gtk_tut_packbox2.gif \
+ html/gtk_tut_table.gif \
+ html/gtk_tut_packbox1.gif \
+ html/gtk_tut_packbox2.gif \
+ gtk_tut_table.gif \
+ html/gdk.html \
+ html/gdk_toc.html \
+ html/gtk.html \
+ html/gtk_toc.html \
+ $(TUTORIAL_FILES) \
+ $(TUTORIAL_FR_FILES) \
+ $(TUTORIAL_IT_FILES) \
+ $(FAQ_FILES)
diff --git a/docs/gtk-config.1 b/docs/gtk-config.1
index a7ad1baaa7..b6bc5e09cf 100644
--- a/docs/gtk-config.1
+++ b/docs/gtk-config.1
@@ -1,4 +1,4 @@
-.TH GTK+ 1 "25 October 1998" Version 1.2.0
+.TH GTK+ 1 "25 October 1998" Version 1.3.0
.SH NAME
gtk-config - script to get information about the installed version of GTK+
.SH SYNOPSIS
diff --git a/docs/gtk-config.1.in b/docs/gtk-config.1.in
new file mode 100644
index 0000000000..5f40942324
--- /dev/null
+++ b/docs/gtk-config.1.in
@@ -0,0 +1,49 @@
+.TH GTK+ 1 "25 October 1998" Version @VERSION@
+.SH NAME
+gtk-config - script to get information about the installed version of GTK+
+.SH SYNOPSIS
+.B gtk-config
+[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version] [\-\-libs] [\-\-cflags]
+.SH DESCRIPTION
+.PP
+\fIgtk-config\fP is a tool that is used to configure to determine
+the compiler and linker flags that should be used to compile
+and link programs that use \fIGTK+\fP. It is also used internally
+to the .m4 macros for GNU autoconf that are included with \fIGTK+\fP.
+.
+.SH OPTIONS
+.l
+\fIgtk-config\fP accepts the following options:
+.TP 8
+.B \-\-version
+Print the currently installed version of \fIGTK+\fP on the standard output.
+.TP 8
+.B \-\-libs
+Print the linker flags that are necessary to link a \fIGTK+\fP program.
+.TP 8
+.B \-\-cflags
+Print the compiler flags that are necessary to compile a \fIGTK+\fP program.
+.TP 8
+.B \-\-prefix=PREFIX
+If specified, use PREFIX instead of the installation prefix that \fIGTK+\fP
+was built with when computing the output for the \-\-cflags and
+\-\-libs options. This option is also used for the exec prefix
+if \-\-exec\-prefix was not specified. This option must be specified
+before any \-\-libs or \-\-cflags options.
+.TP 8
+.B \-\-exec\-prefix=PREFIX
+If specified, use PREFIX instead of the installation exec prefix that
+\fIGTK+\fP was built with when computing the output for the \-\-cflags
+and \-\-libs options. This option must be specified before any
+\-\-libs or \-\-cflags options.
+.SH SEE ALSO
+.BR gimp (1),
+.BR gimptool (1)
+.SH COPYRIGHT
+Copyright \(co 1998 Owen Taylor
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
diff --git a/gdk/COPYING b/gdk/COPYING
new file mode 100644
index 0000000000..223ede7de3
--- /dev/null
+++ b/gdk/COPYING
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
index 6bb478351d..39f07bbfaa 100644
--- a/gdk/Makefile.am
+++ b/gdk/Makefile.am
@@ -1,21 +1,47 @@
-## Process this file with automake to produce Makefile.in
+## Makefile.am for gtk+/gdk
-gdkincludedir = $(includedir)/gdk
-
-
-
-lib_LTLIBRARIES = libgdk.la
-
-INCLUDES = \
+INCLUDES = @STRIP_BEGIN@ \
-DG_LOG_DOMAIN=\"Gdk\" \
-I$(top_srcdir) \
@GTK_DEBUG_FLAGS@ \
@GTK_XIM_FLAGS@ \
@GTK_LOCALE_FLAGS@ \
@GLIB_CFLAGS@ \
- @x_cflags@
+ @x_cflags@ \
+@STRIP_END@
+
+#
+# libraries to compile and install
+#
+lib_LTLIBRARIES = libgdk.la
-libgdk_la_SOURCES = \
+# libtool stuff: set version and export symbols for resolving
+libgdkincludedir = $(includedir)/gdk
+libgdk_la_LDFLAGS = @STRIP_BEGIN@ \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+ @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+ @x_libs@ \
+ -lm \
+@STRIP_END@
+
+#
+# setup source file variables
+#
+# GDK header files for public installation (non-generated)
+gdk_public_h_sources = @STRIP_BEGIN@ \
+ gdk.h \
+ gdkcursors.h \
+ gdkrgb.h \
+ gdki18n.h \
+ gdkkeysyms.h \
+ gdkprivate.h \
+ gdktypes.h \
+ gdkx.h \
+@STRIP_END@
+gdk_c_sources = @STRIP_BEGIN@ \
gdk.c \
gdkcc.c \
gdkcolor.c \
@@ -46,34 +72,35 @@ libgdk_la_SOURCES = \
MwmUtil.h \
gxid_lib.h \
gxid_proto.h \
- gxid_lib.c
-## this last one is ifdef'd out unless XINPUT_GXI is defined
-## It's easier than trying to get automake to handle compiling
-## it conditionally
-
-gdkinclude_HEADERS = \
- gdk.h \
- gdkcursors.h \
- gdkrgb.h \
- gdki18n.h \
- gdkkeysyms.h \
- gdkprivate.h \
- gdktypes.h \
- gdkx.h
-
-LDADDS = \
- @x_ldflags@ \
- @x_libs@ \
- @GLIB_LIBS@ \
- -lm
-
-libgdk_la_LDFLAGS = \
- -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) \
- @GLIB_DEPLIBS@ \
- @x_ldflags@ \
- @x_libs@ \
- -lm
+ gxid_lib.c \
+@STRIP_END@
+
+#
+# setup GDK sources and their dependancies
+#
+libgdkinclude_HEADERS = $(gdk_public_h_sources)
+libgdk_la_SOURCES = $(gdk_c_sources)
+MAINTAINERCLEANFILES +=
+EXTRA_HEADERS +=
+EXTRA_DIST +=
+EXTRA_DIST +=
+
+#
+# rules to generate built sources
+#
+# we only need to remake these headers once a new X version is released
+X-derived-headers:
+ sed -e 's/^#define[ ]*XC\([^ ]*\)[ ]*\([^ ]*\)[ ]*.*$$/GDK\1 = \2,/' \
+ -e 'tb' -e 'd' -e ':b' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
+ < @x_includes@/X11/cursorfont.h > gdkcursors.h ; \
+ sed -e 's/^#define[ ]*XK\([^ ]*\)[ ]*\([^ ]*\)[ ]*.*$$/#define GDK\1 \2/' \
+ -e 'tb' -e 'd' -e ':b' -e 's/ 0X/ 0x/' \
+ < @x_includes@/X11/keysymdef.h > gdkkeysyms.h
+#
+# Rule to install gdkconfig.h header file
+#
configexecincludedir = $(pkglibdir)/include
#configexecinclude_DATA = gdkconfig.h
install-exec-local: gdkconfig.h
@@ -90,22 +117,20 @@ stamp-gc-h: ../config.status
cd .. && CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=gdk/gdkconfig.h ./config.status
echo timestamp > stamp-gc-h
+#
+# extra programs
+#
EXTRA_PROGRAMS = gxid
-
bin_PROGRAMS = @xinput_progs@
-
+LDADDS = @STRIP_BEGIN@ \
+ @x_ldflags@ \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+ -lm \
+@STRIP_END@
gxid_SOURCES = gxid.c
-
gxid_LDADD = $(LDADDS)
-X-derived-headers:
- sed -e 's/^#define[ ]*XC\([^ ]*\)[ ]*\([^ ]*\)[ ]*.*$$/GDK\1 = \2,/' \
- -e 'tb' -e 'd' -e ':b' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
- < @x_includes@/X11/cursorfont.h > gdkcursors.h ; \
- sed -e 's/^#define[ ]*XK\([^ ]*\)[ ]*\([^ ]*\)[ ]*.*$$/#define GDK\1 \2/' \
- -e 'tb' -e 'd' -e ':b' -e 's/ 0X/ 0x/' \
- < @x_includes@/X11/keysymdef.h > gdkkeysyms.h
.PHONY: files
diff --git a/gdk/gdk.c b/gdk/gdk.c
index e907f04adb..de1d55ea8c 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <string.h>
#include <limits.h>
+#include <errno.h>
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
@@ -48,6 +49,7 @@
#include "gdkinput.h"
#include "gdkx.h"
#include "gdki18n.h"
+#include "gdkkeysyms.h"
#ifndef X_GETTIMEOFDAY
#define X_GETTIMEOFDAY(tv) gettimeofday (tv, NULL)
@@ -333,6 +335,7 @@ gdk_init_check (int *argc,
gdk_im_set_best_style (GDK_IM_PREEDIT_POSITION);
else if (strcmp ("callbacks", (*argv)[i]) == 0)
gdk_im_set_best_style (GDK_IM_PREEDIT_CALLBACKS);
+ (*argv)[i] = NULL;
}
}
else if (strcmp ("--xim-status", (*argv)[i]) == 0)
@@ -348,6 +351,7 @@ gdk_init_check (int *argc,
gdk_im_set_best_style (GDK_IM_STATUS_AREA);
else if (strcmp ("callbacks", (*argv)[i]) == 0)
gdk_im_set_best_style (GDK_IM_STATUS_CALLBACKS);
+ (*argv)[i] = NULL;
}
}
#endif
@@ -406,9 +410,9 @@ gdk_init_check (int *argc,
g_free(argv_orig[i]);
g_free(argv_orig);
- gdk_wm_delete_window = XInternAtom (gdk_display, "WM_DELETE_WINDOW", True);
- gdk_wm_take_focus = XInternAtom (gdk_display, "WM_TAKE_FOCUS", True);
- gdk_wm_protocols = XInternAtom (gdk_display, "WM_PROTOCOLS", True);
+ gdk_wm_delete_window = XInternAtom (gdk_display, "WM_DELETE_WINDOW", False);
+ gdk_wm_take_focus = XInternAtom (gdk_display, "WM_TAKE_FOCUS", False);
+ gdk_wm_protocols = XInternAtom (gdk_display, "WM_PROTOCOLS", False);
gdk_wm_window_protocols[0] = gdk_wm_delete_window;
gdk_wm_window_protocols[1] = gdk_wm_take_focus;
gdk_selection_property = XInternAtom (gdk_display, "GDK_SELECTION", False);
@@ -1032,20 +1036,35 @@ static int
gdk_x_error (Display *display,
XErrorEvent *error)
{
- char buf[64];
-
- if (gdk_error_warnings)
+ if (error->error_code)
{
- XGetErrorText (display, error->error_code, buf, 63);
- g_error ("%s\n serial %ld error_code %d request_code %d minor_code %d\n",
- buf,
- error->serial,
- error->error_code,
- error->request_code,
- error->minor_code);
+ if (gdk_error_warnings)
+ {
+ char buf[64];
+
+ XGetErrorText (display, error->error_code, buf, 63);
+
+#ifdef G_ENABLE_DEBUG
+ g_error ("%s\n serial %ld error_code %d request_code %d minor_code %d\n",
+ buf,
+ error->serial,
+ error->error_code,
+ error->request_code,
+ error->minor_code);
+#else /* !G_ENABLE_DEBUG */
+ fprintf (stderr, "Gdk-ERROR **: %s\n serial %ld error_code %d request_code %d minor_code %d\n",
+ buf,
+ error->serial,
+ error->error_code,
+ error->request_code,
+ error->minor_code);
+
+ exit(1);
+#endif /* G_ENABLE_DEBUG */
+ }
+ gdk_error_code = error->error_code;
}
- gdk_error_code = -1;
return 0;
}
@@ -1071,8 +1090,27 @@ gdk_x_error (Display *display,
static int
gdk_x_io_error (Display *display)
{
- g_error ("an x io error occurred");
- return 0;
+ /* This is basically modelled after the code in XLib. We need
+ * an explicit error handler here, so we can disable our atexit()
+ * which would otherwise cause a nice segfault.
+ * We fprintf(stderr, instead of g_warning() because g_warning()
+ * could possibly be redirected to a dialog
+ */
+ if (errno == EPIPE)
+ {
+ fprintf (stderr, "Gdk-ERROR **: X connection to %s broken (explicit kill or server shutdown).\n", gdk_display ? DisplayString (gdk_display) : gdk_get_display());
+ }
+ else
+ {
+ fprintf (stderr, "Gdk-ERROR **: Fatal IO error %d (%s) on X server %s.\n",
+ errno, g_strerror (errno),
+ gdk_display ? DisplayString (gdk_display) : gdk_get_display());
+ }
+
+ /* Disable the atexit shutdown for GDK */
+ gdk_initialized = 0;
+
+ exit(1);
}
gchar *
@@ -1104,7 +1142,7 @@ gdk_error_trap_push (void)
}
else
{
- node = g_slist_alloc();
+ node = g_slist_alloc ();
node->data = g_new (GdkErrorTrap, 1);
}
@@ -1166,7 +1204,7 @@ gdk_send_xevent (Window window, gboolean propagate, glong event_mask,
XSync (gdk_display, False);
gdk_error_warnings = old_warnings;
- return result && (gdk_error_code != -1);
+ return result && !gdk_error_code;
}
#ifndef HAVE_XCONVERTCASE
diff --git a/gdk/gdk.h b/gdk/gdk.h
index 9b7e20d72b..5b6ae8a62e 100644
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -488,8 +488,8 @@ GdkPixmap* gdk_pixmap_create_from_xpm (GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
const gchar *filename);
-GdkPixmap* gdk_pixmap_colormap_create_from_xpm
- (GdkWindow *window,
+GdkPixmap* gdk_pixmap_colormap_create_from_xpm (
+ GdkWindow *window,
GdkColormap *colormap,
GdkBitmap **mask,
GdkColor *transparent_color,
@@ -498,8 +498,8 @@ GdkPixmap* gdk_pixmap_create_from_xpm_d (GdkWindow *window,
GdkBitmap **mask,
GdkColor *transparent_color,
gchar **data);
-GdkPixmap* gdk_pixmap_colormap_create_from_xpm_d
- (GdkWindow *window,
+GdkPixmap* gdk_pixmap_colormap_create_from_xpm_d (
+ GdkWindow *window,
GdkColormap *colormap,
GdkBitmap **mask,
GdkColor *transparent_color,
@@ -544,66 +544,65 @@ void gdk_image_destroy (GdkImage *image);
/* Color
*/
-GdkColormap* gdk_colormap_new (GdkVisual *visual,
- gint allocate);
-GdkColormap* gdk_colormap_ref (GdkColormap *cmap);
-void gdk_colormap_unref (GdkColormap *cmap);
-
-GdkColormap* gdk_colormap_get_system (void);
-gint gdk_colormap_get_system_size (void);
-
-void gdk_colormap_change (GdkColormap *colormap,
- gint ncolors);
-
-
-gint gdk_colormap_alloc_colors (GdkColormap *colormap,
- GdkColor *colors,
- gint ncolors,
- gboolean writeable,
- gboolean best_match,
- gboolean *success);
-gboolean gdk_colormap_alloc_color (GdkColormap *colormap,
- GdkColor *color,
- gboolean writeable,
- gboolean best_match);
-void gdk_colormap_free_colors (GdkColormap *colormap,
- GdkColor *colors,
- gint ncolors);
-
-GdkVisual *gdk_colormap_get_visual (GdkColormap *colormap);
-
-GdkColor *gdk_color_copy (GdkColor *color);
-void gdk_color_free (GdkColor *color);
-
-gint gdk_color_parse (const gchar *spec,
- GdkColor *color);
-guint gdk_color_hash (const GdkColor *colora);
-gint gdk_color_equal (const GdkColor *colora,
- const GdkColor *colorb);
+GdkColormap* gdk_colormap_new (GdkVisual *visual,
+ gint allocate);
+GdkColormap* gdk_colormap_ref (GdkColormap *cmap);
+void gdk_colormap_unref (GdkColormap *cmap);
+
+GdkColormap* gdk_colormap_get_system (void);
+gint gdk_colormap_get_system_size (void);
+
+void gdk_colormap_change (GdkColormap *colormap,
+ gint ncolors);
+
+gint gdk_colormap_alloc_colors (GdkColormap *colormap,
+ GdkColor *colors,
+ gint ncolors,
+ gboolean writeable,
+ gboolean best_match,
+ gboolean *success);
+gboolean gdk_colormap_alloc_color (GdkColormap *colormap,
+ GdkColor *color,
+ gboolean writeable,
+ gboolean best_match);
+void gdk_colormap_free_colors (GdkColormap *colormap,
+ GdkColor *colors,
+ gint ncolors);
+
+GdkVisual* gdk_colormap_get_visual (GdkColormap *colormap);
+
+GdkColor* gdk_color_copy (GdkColor *color);
+void gdk_color_free (GdkColor *color);
+
+gboolean gdk_color_parse (const gchar *spec,
+ GdkColor *color);
+guint gdk_color_hash (const GdkColor *colora);
+gint gdk_color_equal (const GdkColor *colora,
+ const GdkColor *colorb);
/* The following functions are deprecated */
-void gdk_colors_store (GdkColormap *colormap,
- GdkColor *colors,
- gint ncolors);
-gint gdk_colors_alloc (GdkColormap *colormap,
- gint contiguous,
- gulong *planes,
- gint nplanes,
- gulong *pixels,
- gint npixels);
-void gdk_colors_free (GdkColormap *colormap,
- gulong *pixels,
- gint npixels,
- gulong planes);
-gint gdk_color_white (GdkColormap *colormap,
- GdkColor *color);
-gint gdk_color_black (GdkColormap *colormap,
- GdkColor *color);
-gint gdk_color_alloc (GdkColormap *colormap,
- GdkColor *color);
-gint gdk_color_change (GdkColormap *colormap,
- GdkColor *color);
+void gdk_colors_store (GdkColormap *colormap,
+ GdkColor *colors,
+ gint ncolors);
+gboolean gdk_colors_alloc (GdkColormap *colormap,
+ gint contiguous,
+ gulong *planes,
+ gint nplanes,
+ gulong *pixels,
+ gint npixels);
+void gdk_colors_free (GdkColormap *colormap,
+ gulong *pixels,
+ gint npixels,
+ gulong planes);
+gboolean gdk_color_white (GdkColormap *colormap,
+ GdkColor *color);
+gboolean gdk_color_black (GdkColormap *colormap,
+ GdkColor *color);
+gboolean gdk_color_alloc (GdkColormap *colormap,
+ GdkColor *color);
+gboolean gdk_color_change (GdkColormap *colormap,
+ GdkColor *color);
/* Fonts
diff --git a/gdk/gdkcc.c b/gdk/gdkcc.c
index 573b2efa15..d1d1e754f7 100644
--- a/gdk/gdkcc.c
+++ b/gdk/gdkcc.c
@@ -491,10 +491,11 @@ init_palette (GdkColorContext *cc)
if (cc->color_hash)
{
- /* XXX: quick-and-dirty way to remove everything */
-
+ g_hash_table_foreach (cc->color_hash,
+ free_hash_entry,
+ NULL);
g_hash_table_destroy (cc->color_hash);
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
+ cc->color_hash = NULL;
}
cc->palette = NULL;
@@ -618,11 +619,6 @@ gdk_color_context_new (GdkVisual *visual,
g_message ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n",
cc->visual->depth, cc->num_colors));
- /* check if we need to initialize a hash table */
-
- if ((cc->mode == GDK_CC_MODE_STD_CMAP) || (cc->mode == GDK_CC_MODE_UNDEFINED))
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
-
return (GdkColorContext *) cc;
}
@@ -677,17 +673,9 @@ gdk_color_context_free (GdkColorContext *cc)
gdk_colormap_unref (cc->colormap);
/* free any palette that has been associated with this GdkColorContext */
-
+
init_palette (cc);
- if (cc->color_hash)
- {
- g_hash_table_foreach (cc->color_hash,
- free_hash_entry,
- NULL);
- g_hash_table_destroy (cc->color_hash);
- }
-
g_free (cc);
}
@@ -780,13 +768,14 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
default:
{
GdkColor color;
- GdkColor *result;
+ GdkColor *result = NULL;
color.red = red;
color.green = green;
color.blue = blue;
-
- result = g_hash_table_lookup (cc->color_hash, &color);
+
+ if (cc->color_hash)
+ result = g_hash_table_lookup (cc->color_hash, &color);
if (!result)
{
@@ -831,6 +820,9 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
cnew = g_new (GdkColor, 1);
*cnew = color;
+
+ if (!cc->color_hash)
+ cc->color_hash = g_hash_table_new (hash_color, compare_colors);
g_hash_table_insert (cc->color_hash, cnew, cnew);
cc->clut[cc->num_allocated] = color.pixel;
@@ -1489,20 +1481,7 @@ gdk_color_context_add_palette (GdkColorContext *cc,
/* restore previous mode if we aren't adding a new palette */
if (num_palette == 0)
- {
- /* GDK_CC_MODE_STD_CMAP uses a hash table, so we'd better initialize one */
-
- /* XXX: here, the hash table is already initialized */
-
- return 0;
- }
-
- /* Initialize a hash table for this palette (we need one for allocating
- * the pixels in the palette using the current settings)
- */
-
- if (cc->color_hash == NULL)
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
+ return 0;
/* copy incoming palette */
@@ -1549,6 +1528,9 @@ gdk_color_context_add_palette (GdkColorContext *cc,
if (cc->color_hash)
{
+ g_hash_table_foreach (cc->color_hash,
+ free_hash_entry,
+ NULL);
g_hash_table_destroy (cc->color_hash);
cc->color_hash = NULL;
}
diff --git a/gdk/gdkcolor.c b/gdk/gdkcolor.c
index bd48087543..2baa200ee0 100644
--- a/gdk/gdkcolor.c
+++ b/gdk/gdkcolor.c
@@ -70,13 +70,14 @@ gdk_colormap_new (GdkVisual *visual,
xvisual = ((GdkVisualPrivate*) visual)->xvisual;
colormap->size = visual->colormap_size;
- colormap->colors = g_new (GdkColor, colormap->size);
+ colormap->colors = NULL;
switch (visual->type)
{
case GDK_VISUAL_GRAYSCALE:
case GDK_VISUAL_PSEUDO_COLOR:
private->info = g_new0 (GdkColorInfo, colormap->size);
+ colormap->colors = g_new (GdkColor, colormap->size);
private->hash = g_hash_table_new ((GHashFunc) gdk_color_hash,
(GCompareFunc) gdk_color_equal);
@@ -116,6 +117,7 @@ gdk_colormap_new (GdkVisual *visual,
private->private_val = TRUE;
private->xcolormap = XCreateColormap (private->xdisplay, gdk_root_window,
xvisual, AllocAll);
+ colormap->colors = g_new (GdkColor, colormap->size);
size = 1 << visual->red_prec;
for (i = 0; i < size; i++)
@@ -428,56 +430,7 @@ gdk_colors_alloc (GdkColormap *colormap,
}
}
- return return_val;
-}
-
-/* This is almost identical to gdk_colormap_free_colors.
- * Keep them in sync!
- */
-void
-gdk_colors_free (GdkColormap *colormap,
- gulong *in_pixels,
- gint in_npixels,
- gulong planes)
-{
- GdkColormapPrivate *private;
- gulong *pixels;
- gint npixels = 0;
- gint i;
-
- g_return_if_fail (colormap != NULL);
- g_return_if_fail (in_pixels != NULL);
-
- private = (GdkColormapPrivate*) colormap;
-
- if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
- (private->visual->type != GDK_VISUAL_GRAYSCALE))
- return;
-
- pixels = g_new (gulong, in_npixels);
-
- for (i=0; i<in_npixels; i++)
- {
- gulong pixel = in_pixels[i];
-
- if (private->info[pixel].ref_count)
- {
- private->info[pixel].ref_count--;
-
- if (private->info[pixel].ref_count == 0)
- {
- pixels[npixels++] = pixel;
- if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
- g_hash_table_remove (private->hash, &colormap->colors[in_pixels[i]]);
- private->info[pixel].flags = 0;
- }
- }
- }
-
- if (npixels)
- XFreeColors (private->xdisplay, private->xcolormap,
- pixels, npixels, planes);
- g_free (pixels);
+ return return_val != 0;
}
/*
@@ -536,7 +489,7 @@ gdk_color_free (GdkColor *color)
g_mem_chunk_free (color_chunk, color);
}
-gint
+gboolean
gdk_color_white (GdkColormap *colormap,
GdkColor *color)
{
@@ -559,7 +512,7 @@ gdk_color_white (GdkColormap *colormap,
return return_val;
}
-gint
+gboolean
gdk_color_black (GdkColormap *colormap,
GdkColor *color)
{
@@ -608,6 +561,104 @@ gdk_color_parse (const gchar *spec,
return return_val;
}
+/* This is almost identical to gdk_colormap_free_colors.
+ * Keep them in sync!
+ */
+void
+gdk_colors_free (GdkColormap *colormap,
+ gulong *in_pixels,
+ gint in_npixels,
+ gulong planes)
+{
+ GdkColormapPrivate *private;
+ gulong *pixels;
+ gint npixels = 0;
+ gint i;
+
+ g_return_if_fail (colormap != NULL);
+ g_return_if_fail (in_pixels != NULL);
+
+ private = (GdkColormapPrivate*) colormap;
+
+ if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
+ (private->visual->type != GDK_VISUAL_GRAYSCALE))
+ return;
+
+ pixels = g_new (gulong, in_npixels);
+
+ for (i=0; i<in_npixels; i++)
+ {
+ gulong pixel = in_pixels[i];
+
+ if (private->info[pixel].ref_count)
+ {
+ private->info[pixel].ref_count--;
+
+ if (private->info[pixel].ref_count == 0)
+ {
+ pixels[npixels++] = pixel;
+ if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
+ g_hash_table_remove (private->hash, &colormap->colors[pixel]);
+ private->info[pixel].flags = 0;
+ }
+ }
+ }
+
+ if (npixels)
+ XFreeColors (private->xdisplay, private->xcolormap,
+ pixels, npixels, planes);
+ g_free (pixels);
+}
+
+/* This is almost identical to gdk_colors_free.
+ * Keep them in sync!
+ */
+void
+gdk_colormap_free_colors (GdkColormap *colormap,
+ GdkColor *colors,
+ gint ncolors)
+{
+ GdkColormapPrivate *private;
+ gulong *pixels;
+ gint npixels = 0;
+ gint i;
+
+ g_return_if_fail (colormap != NULL);
+ g_return_if_fail (colors != NULL);
+
+ private = (GdkColormapPrivate*) colormap;
+
+ if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
+ (private->visual->type != GDK_VISUAL_GRAYSCALE))
+ return;
+
+ pixels = g_new (gulong, ncolors);
+
+ for (i=0; i<ncolors; i++)
+ {
+ gulong pixel = colors[i].pixel;
+
+ if (private->info[pixel].ref_count)
+ {
+ private->info[pixel].ref_count--;
+
+ if (private->info[pixel].ref_count == 0)
+ {
+ pixels[npixels++] = pixel;
+ if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
+ g_hash_table_remove (private->hash, &colormap->colors[pixel]);
+ private->info[pixel].flags = 0;
+ }
+ }
+ }
+
+ if (npixels)
+ XFreeColors (private->xdisplay, private->xcolormap,
+ pixels, npixels, 0);
+
+ g_free (pixels);
+}
+
/********************
* Color allocation *
********************/
@@ -648,6 +699,7 @@ gdk_colormap_alloc1 (GdkColormap *colormap,
else
{
colormap->colors[ret->pixel] = *color;
+ colormap->colors[ret->pixel].pixel = ret->pixel;
private->info[ret->pixel].ref_count = 1;
g_hash_table_insert (private->hash,
@@ -1025,55 +1077,6 @@ gdk_colormap_alloc_color (GdkColormap *colormap,
return success;
}
-/* This is almost identical to gdk_colors_free.
- * Keep them in sync!
- */
-void
-gdk_colormap_free_colors (GdkColormap *colormap,
- GdkColor *colors,
- gint ncolors)
-{
- GdkColormapPrivate *private;
- gulong *pixels;
- gint npixels = 0;
- gint i;
-
- g_return_if_fail (colormap != NULL);
- g_return_if_fail (colors != NULL);
-
- private = (GdkColormapPrivate*) colormap;
-
- if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
- (private->visual->type != GDK_VISUAL_GRAYSCALE))
- return;
-
- pixels = g_new (gulong, ncolors);
-
- for (i=0; i<ncolors; i++)
- {
- gulong pixel = colors[i].pixel;
-
- if (private->info[pixel].ref_count)
- {
- private->info[pixel].ref_count--;
-
- if (private->info[pixel].ref_count == 0)
- {
- pixels[npixels++] = pixel;
- if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
- g_hash_table_remove (private->hash, &colors[i]);
- private->info[pixel].flags = 0;
- }
- }
- }
-
- if (npixels)
- XFreeColors (private->xdisplay, private->xcolormap,
- pixels, npixels, 0);
-
- g_free (pixels);
-}
-
gboolean
gdk_color_alloc (GdkColormap *colormap,
GdkColor *color)
diff --git a/gdk/gdkdnd.c b/gdk/gdkdnd.c
index 3b8f05d8fd..a2be5e160c 100644
--- a/gdk/gdkdnd.c
+++ b/gdk/gdkdnd.c
@@ -31,8 +31,6 @@
#include "gdk/gdkprivate.h"
#include "gdk.h"
-#define NEW_DRAGS
-
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
typedef enum {
@@ -70,7 +68,8 @@ struct _GdkDragContextPrivate {
GdkDragAction old_actions; /* The last actions we sent to the source */
GdkDragAction xdnd_actions; /* What is currently set in XdndActionList */
- Window dest_xid;
+ Window dest_xid; /* The last window we looked up */
+ Window drop_xid; /* The (non-proxied) window that is receiving drops */
guint xdnd_targets_set : 1; /* Whether we've already set XdndTypeList */
guint xdnd_actions_set : 1; /* Whether we've already set XdndActionList */
guint xdnd_have_actions : 1; /* Whether an XdndActionList was provided */
@@ -151,6 +150,7 @@ gdk_drag_context_unref (GdkDragContext *context)
GdkDragContextPrivate *private = (GdkDragContextPrivate *)context;
g_return_if_fail (context != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count--;
@@ -196,8 +196,8 @@ gdk_drag_context_find (gboolean is_source,
private = (GdkDragContextPrivate *)context;
context_dest_xid = context->dest_window ?
- (private->dest_xid ?
- private->dest_xid :
+ (private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window)) :
None;
@@ -387,7 +387,7 @@ gdk_window_cache_new (void)
xwa.x, xwa.y, xwa.width, xwa.height,
xwa.map_state != IsUnmapped);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else
{
@@ -441,9 +441,10 @@ get_client_window_at_coords_recurse (Window win,
wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -458,9 +459,10 @@ get_client_window_at_coords_recurse (Window win,
XTranslateCoordinates (gdk_display, gdk_root_window, win,
x_root, y_root, &dest_x, &dest_y, &child);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -469,7 +471,7 @@ get_client_window_at_coords_recurse (Window win,
&root, &tmp_parent, &children, &nchildren) == 0)
return 0;
- if (gdk_error_code == 0)
+ if (!gdk_error_code)
{
for (i = nchildren - 1; (i >= 0) && (child == None); i--)
{
@@ -477,7 +479,7 @@ get_client_window_at_coords_recurse (Window win,
XGetWindowAttributes (gdk_display, children[i], &xwa);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else if ((xwa.map_state == IsViewable) && (xwa.class == InputOutput) &&
(x >= xwa.x) && (x < xwa.x + (gint)xwa.width) &&
@@ -566,9 +568,10 @@ get_client_window_at_coords_recurse (Window win,
wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -581,9 +584,10 @@ get_client_window_at_coords_recurse (Window win,
XTranslateCoordinates (gdk_display, gdk_root_window, win,
x_root, y_root, &dest_x, &dest_y, &child);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -620,7 +624,7 @@ get_client_window_at_coords (Window ignore,
XGetWindowAttributes (gdk_display, children[i], &xwa);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else if ((xwa.map_state == IsViewable) &&
(x_root >= xwa.x) && (x_root < xwa.x + (gint)xwa.width) &&
@@ -869,7 +873,7 @@ motif_find_drag_window (gboolean create)
Display *display;
XSetWindowAttributes attr;
- display = XOpenDisplay (NULL);
+ display = XOpenDisplay (gdk_display_name);
XSetCloseDownMode (display, RetainPermanent);
XGrabServer (display);
@@ -2027,6 +2031,8 @@ xdnd_set_targets (GdkDragContext *context)
XA_ATOM, 32, PropModeReplace,
(guchar *)atomlist, n_atoms);
+ g_free (atomlist);
+
private->xdnd_targets_set = 1;
}
@@ -2073,6 +2079,8 @@ xdnd_set_actions (GdkDragContext *context)
XA_ATOM, 32, PropModeReplace,
(guchar *)atomlist, n_atoms);
+ g_free (atomlist);
+
private->xdnd_actions_set = 1;
private->xdnd_actions = context->actions;
}
@@ -2106,13 +2114,9 @@ xdnd_send_enter (GdkDragContext *context)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndEnter", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = (3 << 24); /* version */
xev.xclient.data.l[2] = 0;
@@ -2162,13 +2166,9 @@ xdnd_send_leave (GdkDragContext *context)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndLeave", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = 0;
@@ -2195,13 +2195,9 @@ xdnd_send_drop (GdkDragContext *context, guint32 time)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndDrop", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = time;
@@ -2232,13 +2228,9 @@ xdnd_send_motion (GdkDragContext *context,
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndPosition", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = (x_root << 16) | y_root;
@@ -2859,6 +2851,12 @@ gdk_drag_find_window (GdkDragContext *context,
/* Check if new destination accepts drags, and which protocol */
+ /* There is some ugliness here. We actually need to pass
+ * _three_ pieces of information to drag_motion - dest_window,
+ * protocol, and the XID of the unproxied window. The first
+ * two are passed explicitely, the third implicitly through
+ * protocol->dest_xid.
+ */
if ((recipient = gdk_drag_get_protocol (dest, protocol)))
{
*dest_window = gdk_window_lookup (recipient);
@@ -2917,6 +2915,7 @@ gdk_drag_motion (GdkDragContext *context,
if (dest_window)
{
context->dest_window = dest_window;
+ private->drop_xid = private->dest_xid;
gdk_window_ref (context->dest_window);
context->protocol = protocol;
@@ -2941,6 +2940,7 @@ gdk_drag_motion (GdkDragContext *context,
else
{
context->dest_window = NULL;
+ private->drop_xid = None;
context->action = 0;
}
diff --git a/gdk/gdkdraw.c b/gdk/gdkdraw.c
index cb4f96e78c..8ae417e4aa 100644
--- a/gdk/gdkdraw.c
+++ b/gdk/gdkdraw.c
@@ -501,12 +501,14 @@ gdk_draw_lines (GdkDrawable *drawable,
g_return_if_fail (gc != NULL);
drawable_private = (GdkWindowPrivate*) drawable;
+ if (drawable_private->destroyed)
+ return;
gc_private = (GdkGCPrivate*) gc;
XDrawLines (drawable_private->xdisplay,
- drawable_private->xwindow,
- gc_private->xgc,
- (XPoint *) points,
- npoints,
- CoordModeOrigin);
+ drawable_private->xwindow,
+ gc_private->xgc,
+ (XPoint *) points,
+ npoints,
+ CoordModeOrigin);
}
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 159e0ee9e5..4f6f577f29 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -27,7 +27,6 @@
#include "gdk.h"
#include "gdkx.h"
#include "gdkprivate.h"
-#include "gdkinput.h"
#include "gdkkeysyms.h"
#if HAVE_CONFIG_H
@@ -37,6 +36,7 @@
# endif
#endif
+#include "gdkinput.h"
typedef struct _GdkIOClosure GdkIOClosure;
typedef struct _GdkEventPrivate GdkEventPrivate;
@@ -88,9 +88,11 @@ static GdkEvent* gdk_event_unqueue (void);
static gboolean gdk_event_prepare (gpointer source_data,
GTimeVal *current_time,
- gint *timeout);
+ gint *timeout,
+ gpointer user_data);
static gboolean gdk_event_check (gpointer source_data,
- GTimeVal *current_time);
+ GTimeVal *current_time,
+ gpointer user_data);
static gboolean gdk_event_dispatch (gpointer source_data,
GTimeVal *current_time,
gpointer user_data);
@@ -434,6 +436,10 @@ gdk_compress_exposures (XEvent *xevent,
rect1.width = xevent->xexpose.width;
rect1.height = xevent->xexpose.height;
+ event.any.type = GDK_EXPOSE;
+ event.any.window = None;
+ event.any.send_event = FALSE;
+
while (1)
{
if (count == 0)
@@ -449,6 +455,8 @@ gdk_compress_exposures (XEvent *xevent,
&tmp_event,
expose_predicate,
(XPointer)&info);
+
+ event.any.window = window;
/* We apply filters here, and if it was filtered, completely
* ignore the return
@@ -849,6 +857,12 @@ gdk_io_destroy (gpointer data)
g_free (closure);
}
+/* What do we do with G_IO_NVAL?
+ */
+#define READ_CONDITION (G_IO_IN | G_IO_HUP | G_IO_ERR)
+#define WRITE_CONDITION (G_IO_OUT | G_IO_ERR)
+#define EXCEPTION_CONDITION (G_IO_PRI)
+
static gboolean
gdk_io_invoke (GIOChannel *source,
GIOCondition condition,
@@ -857,11 +871,11 @@ gdk_io_invoke (GIOChannel *source,
GdkIOClosure *closure = data;
GdkInputCondition gdk_cond = 0;
- if (condition & (G_IO_IN | G_IO_PRI))
+ if (condition & READ_CONDITION)
gdk_cond |= GDK_INPUT_READ;
- if (condition & G_IO_OUT)
+ if (condition & WRITE_CONDITION)
gdk_cond |= GDK_INPUT_WRITE;
- if (condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL))
+ if (condition & EXCEPTION_CONDITION)
gdk_cond |= GDK_INPUT_EXCEPTION;
if (closure->condition & gdk_cond)
@@ -888,11 +902,11 @@ gdk_input_add_full (gint source,
closure->data = data;
if (condition & GDK_INPUT_READ)
- cond |= (G_IO_IN | G_IO_PRI);
+ cond |= READ_CONDITION;
if (condition & GDK_INPUT_WRITE)
- cond |= G_IO_OUT;
+ cond |= WRITE_CONDITION;
if (condition & GDK_INPUT_EXCEPTION)
- cond |= G_IO_ERR|G_IO_HUP|G_IO_NVAL;
+ cond |= EXCEPTION_CONDITION;
channel = g_io_channel_unix_new (source);
result = g_io_add_watch_full (channel, G_PRIORITY_DEFAULT, cond,
@@ -923,7 +937,6 @@ gdk_event_apply_filters (XEvent *xevent,
GdkEvent *event,
GList *filters)
{
- GdkEventFilter *filter;
GList *tmp_list;
GdkFilterReturn result;
@@ -931,13 +944,12 @@ gdk_event_apply_filters (XEvent *xevent,
while (tmp_list)
{
- filter = (GdkEventFilter*) tmp_list->data;
+ GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
- result = (*filter->function) (xevent, event, filter->data);
+ tmp_list = tmp_list->next;
+ result = filter->function (xevent, event, filter->data);
if (result != GDK_FILTER_CONTINUE)
return result;
-
- tmp_list = tmp_list->next;
}
return GDK_FILTER_CONTINUE;
@@ -1002,7 +1014,7 @@ gdk_event_translate (GdkEvent *event,
gdk_window_ref (window);
event->any.window = window;
- event->any.send_event = xevent->xany.send_event;
+ event->any.send_event = xevent->xany.send_event ? TRUE : FALSE;
if (window_private && window_private->destroyed)
{
@@ -1057,9 +1069,6 @@ gdk_event_translate (GdkEvent *event,
}
#endif
- if (window == NULL)
- g_message ("Got event for unknown window: %#lx\n", xevent->xany.window);
-
/* We do a "manual" conversion of the XEvent to a
* GdkEvent. The structures are mostly the same so
* the conversion is fairly straightforward. We also
@@ -1513,10 +1522,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d",
+ g_message ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d%s",
xevent->xexpose.window, xevent->xexpose.count,
xevent->xexpose.x, xevent->xexpose.y,
- xevent->xexpose.width, xevent->xexpose.height));
+ xevent->xexpose.width, xevent->xexpose.height,
+ event->any.send_event ? " (send)" : ""));
gdk_compress_exposures (xevent, window);
event->expose.type = GDK_EXPOSE;
@@ -1601,7 +1611,17 @@ gdk_event_translate (GdkEvent *event,
break;
case CreateNotify:
- /* Not currently handled */
+ GDK_NOTE (EVENTS,
+ g_message ("create notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d parent: %ld ovr: %d",
+ xevent->xcreatewindow.window,
+ xevent->xcreatewindow.x,
+ xevent->xcreatewindow.y,
+ xevent->xcreatewindow.width,
+ xevent->xcreatewindow.height,
+ xevent->xcreatewindow.border_width,
+ xevent->xcreatewindow.parent,
+ xevent->xcreatewindow.override_redirect));
+ /* not really handled */
break;
case DestroyNotify:
@@ -1616,7 +1636,7 @@ gdk_event_translate (GdkEvent *event,
return_val = window_private && !window_private->destroyed;
- if(window && window_private->xwindow != GDK_ROOT_WINDOW())
+ if (window && window_private->xwindow != GDK_ROOT_WINDOW())
gdk_window_destroy_notify (window);
break;
@@ -1651,8 +1671,12 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("reparent notify:\twindow: %ld",
- xevent->xreparent.window));
+ g_message ("reparent notify:\twindow: %ld x,y: %d %d parent: %ld ovr: %d",
+ xevent->xreparent.window,
+ xevent->xreparent.x,
+ xevent->xreparent.y,
+ xevent->xreparent.parent,
+ xevent->xreparent.override_redirect));
/* Not currently handled */
return_val = FALSE;
@@ -1661,36 +1685,8 @@ gdk_event_translate (GdkEvent *event,
case ConfigureNotify:
/* Print debugging info.
*/
- while ((XPending (gdk_display) > 0) &&
- XCheckTypedWindowEvent(gdk_display, xevent->xany.window,
- ConfigureNotify, xevent))
- {
- GdkFilterReturn result;
-
- GDK_NOTE (EVENTS,
- g_message ("configure notify discarded:\twindow: %ld",
- xevent->xconfigure.window));
-
- result = gdk_event_apply_filters (xevent, event,
- window_private
- ?window_private->filters
- :gdk_default_filters);
-
- /* If the result is GDK_FILTER_REMOVE, there will be
- * trouble, but anybody who filtering the Configure events
- * better know what they are doing
- */
- if (result != GDK_FILTER_CONTINUE)
- {
- return (result == GDK_FILTER_TRANSLATE) ? TRUE : FALSE;
- }
-
- /*XSync (gdk_display, 0);*/
- }
-
-
GDK_NOTE (EVENTS,
- g_message ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d",
+ g_message ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d%s",
xevent->xconfigure.window,
xevent->xconfigure.x,
xevent->xconfigure.y,
@@ -1698,14 +1694,19 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height,
xevent->xconfigure.border_width,
xevent->xconfigure.above,
- xevent->xconfigure.override_redirect));
-
- if (!window_private->destroyed &&
+ xevent->xconfigure.override_redirect,
+ !window
+ ? " (discarding)"
+ : window_private->window_type == GDK_WINDOW_CHILD
+ ? " (discarding child)"
+ : ""));
+ if (window &&
+ !window_private->destroyed &&
(window_private->extension_events != 0) &&
gdk_input_vtable.configure_event)
gdk_input_vtable.configure_event (&xevent->xconfigure, window);
- if (window_private->window_type == GDK_WINDOW_CHILD)
+ if (!window || window_private->window_type == GDK_WINDOW_CHILD)
return_val = FALSE;
else
{
@@ -1721,17 +1722,23 @@ gdk_event_translate (GdkEvent *event,
gint tx = 0;
gint ty = 0;
Window child_window = 0;
-
- if (!XTranslateCoordinates (window_private->xdisplay,
- window_private->xwindow,
- gdk_root_window,
- 0, 0,
- &tx, &ty,
- &child_window))
- g_warning ("GdkWindow %ld doesn't share root windows display?",
- window_private->xwindow);
- event->configure.x = tx;
- event->configure.y = ty;
+
+ gdk_error_trap_push ();
+ if (XTranslateCoordinates (window_private->xdisplay,
+ window_private->xwindow,
+ gdk_root_window,
+ 0, 0,
+ &tx, &ty,
+ &child_window))
+ {
+ if (!gdk_error_trap_pop ())
+ {
+ event->configure.x = tx;
+ event->configure.y = ty;
+ }
+ }
+ else
+ gdk_error_trap_pop ();
}
else
{
@@ -1751,8 +1758,15 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("property notify:\twindow: %ld",
- xevent->xproperty.window));
+ gchar *atom = gdk_atom_name (xevent->xproperty.atom);
+ g_message ("property notify:\twindow: %ld, atom(%ld): %s%s%s",
+ xevent->xproperty.window,
+ xevent->xproperty.atom,
+ atom ? "\"" : "",
+ atom ? atom : "unknown",
+ atom ? "\"" : "");
+ g_free (atom);
+ );
event->property.type = GDK_PROPERTY_NOTIFY;
event->property.window = window;
@@ -1910,8 +1924,8 @@ gdk_event_translate (GdkEvent *event,
GdkFilterReturn
gdk_wm_protocols_filter (GdkXEvent *xev,
- GdkEvent *event,
- gpointer data)
+ GdkEvent *event,
+ gpointer data)
{
XEvent *xevent = (XEvent *)xev;
@@ -1993,8 +2007,7 @@ gdk_events_queue (void)
event->any.type = GDK_NOTHING;
event->any.window = NULL;
- event->any.send_event = FALSE;
- event->any.send_event = xevent.xany.send_event;
+ event->any.send_event = xevent.xany.send_event ? TRUE : FALSE;
((GdkEventPrivate *)event)->flags |= GDK_EVENT_PENDING;
@@ -2017,7 +2030,8 @@ gdk_events_queue (void)
static gboolean
gdk_event_prepare (gpointer source_data,
GTimeVal *current_time,
- gint *timeout)
+ gint *timeout,
+ gpointer user_data)
{
gboolean retval;
@@ -2034,7 +2048,8 @@ gdk_event_prepare (gpointer source_data,
static gboolean
gdk_event_check (gpointer source_data,
- GTimeVal *current_time)
+ GTimeVal *current_time,
+ gpointer user_data)
{
gboolean retval;
@@ -2133,29 +2148,29 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
guint level)
{
static GdkAtom wm_state_atom = GDK_NONE;
-
Atom type = None;
int format;
unsigned long nitems, after;
unsigned char *data;
-
Window *ret_children, ret_root, ret_parent;
unsigned int ret_nchildren;
- int i;
-
+ gint old_warnings = gdk_error_warnings;
gboolean send = FALSE;
gboolean found = FALSE;
+ int i;
if (!wm_state_atom)
wm_state_atom = gdk_atom_intern ("WM_STATE", FALSE);
+ gdk_error_warnings = FALSE;
gdk_error_code = 0;
XGetWindowProperty (gdk_display, xid, wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
if (gdk_error_code)
{
- gdk_error_code = 0;
+ gdk_error_warnings = old_warnings;
+
return FALSE;
}
@@ -2167,18 +2182,20 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
else
{
/* OK, we're all set, now let's find some windows to send this to */
- if (XQueryTree(gdk_display, xid, &ret_root, &ret_parent,
- &ret_children, &ret_nchildren) != True)
- return FALSE;
-
- if (gdk_error_code)
- return FALSE;
+ if (XQueryTree (gdk_display, xid, &ret_root, &ret_parent,
+ &ret_children, &ret_nchildren) != True ||
+ gdk_error_code)
+ {
+ gdk_error_warnings = old_warnings;
+
+ return FALSE;
+ }
for(i = 0; i < ret_nchildren; i++)
- if (gdk_event_send_client_message_to_all_recurse(xev, ret_children[i], level + 1))
+ if (gdk_event_send_client_message_to_all_recurse (xev, ret_children[i], level + 1))
found = TRUE;
- XFree(ret_children);
+ XFree (ret_children);
}
if (send || (!found && (level == 1)))
@@ -2187,6 +2204,8 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
gdk_send_xevent (xid, False, NoEventMask, xev);
}
+ gdk_error_warnings = old_warnings;
+
return (send || found);
}
diff --git a/gdk/gdkfont.c b/gdk/gdkfont.c
index d1f779a064..096cf8a537 100644
--- a/gdk/gdkfont.c
+++ b/gdk/gdkfont.c
@@ -29,6 +29,63 @@
#include "gdk.h"
#include "gdkprivate.h"
+static GHashTable *font_name_hash = NULL;
+static GHashTable *fontset_name_hash = NULL;
+
+static void
+gdk_font_hash_insert (GdkFontType type, GdkFont *font, const gchar *font_name)
+{
+ GdkFontPrivate *private = (GdkFontPrivate *)font;
+ GHashTable **hashp = (type == GDK_FONT_FONT) ?
+ &font_name_hash : &fontset_name_hash;
+
+ if (!*hashp)
+ *hashp = g_hash_table_new (g_str_hash, g_str_equal);
+
+ private->names = g_slist_prepend (private->names, g_strdup (font_name));
+ g_hash_table_insert (*hashp, private->names->data, font);
+}
+
+static void
+gdk_font_hash_remove (GdkFontType type, GdkFont *font)
+{
+ GdkFontPrivate *private = (GdkFontPrivate *)font;
+ GSList *tmp_list;
+ GHashTable *hash = (type == GDK_FONT_FONT) ?
+ font_name_hash : fontset_name_hash;
+
+ tmp_list = private->names;
+ while (tmp_list)
+ {
+ g_hash_table_remove (hash, tmp_list->data);
+ g_free (tmp_list->data);
+
+ tmp_list = tmp_list->next;
+ }
+
+ g_slist_free (private->names);
+ private->names = NULL;
+}
+
+static GdkFont *
+gdk_font_hash_lookup (GdkFontType type, const gchar *font_name)
+{
+ GdkFont *result;
+ GHashTable *hash = (type == GDK_FONT_FONT) ?
+ font_name_hash : fontset_name_hash;
+
+ if (!hash)
+ return NULL;
+ else
+ {
+ result = g_hash_table_lookup (hash, font_name);
+ if (result)
+ gdk_font_ref (result);
+
+ return result;
+ }
+}
+
GdkFont*
gdk_font_load (const gchar *font_name)
{
@@ -38,6 +95,10 @@ gdk_font_load (const gchar *font_name)
g_return_val_if_fail (font_name != NULL, NULL);
+ font = gdk_font_hash_lookup (GDK_FONT_FONT, font_name);
+ if (font)
+ return font;
+
xfont = XLoadQueryFont (gdk_display, font_name);
if (xfont == NULL)
return NULL;
@@ -57,7 +118,8 @@ gdk_font_load (const gchar *font_name)
private->xdisplay = gdk_display;
private->xfont = xfont;
private->ref_count = 1;
-
+ private->names = NULL;
+
font = (GdkFont*) private;
font->type = GDK_FONT_FONT;
font->ascent = xfont->ascent;
@@ -66,6 +128,8 @@ gdk_font_load (const gchar *font_name)
gdk_xid_table_insert (&xfont->fid, font);
}
+ gdk_font_hash_insert (GDK_FONT_FONT, font, font_name);
+
return font;
}
@@ -79,6 +143,10 @@ gdk_fontset_load (gchar *fontset_name)
gchar **missing_charset_list;
gchar *def_string;
+ font = gdk_font_hash_lookup (GDK_FONT_FONTSET, fontset_name);
+ if (font)
+ return font;
+
private = g_new (GdkFontPrivate, 1);
font = (GdkFont*) private;
@@ -121,8 +189,12 @@ gdk_fontset_load (gchar *fontset_name)
font->ascent = MAX (font->ascent, font_structs[i]->ascent);
font->descent = MAX (font->descent, font_structs[i]->descent);
}
+
+ private->names = NULL;
+ gdk_font_hash_insert (GDK_FONT_FONTSET, font, fontset_name);
+
+ return font;
}
- return font;
}
GdkFont*
@@ -141,14 +213,16 @@ void
gdk_font_unref (GdkFont *font)
{
GdkFontPrivate *private;
+ private = (GdkFontPrivate*) font;
g_return_if_fail (font != NULL);
-
- private = (GdkFontPrivate*) font;
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
{
+ gdk_font_hash_remove (font->type, font);
+
switch (font->type)
{
case GDK_FONT_FONT:
@@ -205,8 +279,12 @@ gdk_font_equal (const GdkFont *fonta,
}
else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)
{
- /* how to compare two fontsets ?? by basename or XFontSet ?? */
- return (((XFontSet) privatea->xfont) == ((XFontSet) privateb->xfont));
+ gchar *namea, *nameb;
+
+ namea = XBaseFontNameListOfFontSet((XFontSet) privatea->xfont);
+ nameb = XBaseFontNameListOfFontSet((XFontSet) privateb->xfont);
+
+ return (strcmp(namea, nameb) == 0);
}
else
/* fontset != font */
@@ -578,7 +656,20 @@ gdk_text_extents_wc (GdkFont *font,
}
case GDK_FONT_FONTSET:
fontset = (XFontSet) private->xfont;
- XwcTextExtents (fontset, text, text_length, &ink, &logical);
+
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ XwcTextExtents (fontset, (wchar_t *)text, text_length, &ink, &logical);
+ else
+ {
+ wchar_t *text_wchar;
+ gint i;
+
+ text_wchar = g_new (wchar_t, text_length);
+ for (i = 0; i < text_length; i++)
+ text_wchar[i] = text[i];
+ XwcTextExtents (fontset, text_wchar, text_length, &ink, &logical);
+ g_free (text_wchar);
+ }
if (lbearing)
*lbearing = ink.x;
if (rbearing)
@@ -652,7 +743,7 @@ gdk_text_measure (GdkFont *font,
case GDK_FONT_FONTSET:
fontset = (XFontSet) private->xfont;
XmbTextExtents (fontset, text, text_length, &ink, &log);
- width = log.width;
+ width = ink.x + ink.width;
break;
default:
width = 0;
diff --git a/gdk/gdkgc.c b/gdk/gdkgc.c
index 470c358675..8b6e4fd0ed 100644
--- a/gdk/gdkgc.c
+++ b/gdk/gdkgc.c
@@ -286,6 +286,7 @@ gdk_gc_unref (GdkGC *gc)
GdkGCPrivate *private = (GdkGCPrivate*) gc;
g_return_if_fail (gc != NULL);
+ g_return_if_fail (private->ref_count > 0);
if (private->ref_count > 1)
private->ref_count -= 1;
diff --git a/gdk/gdkglobals.c b/gdk/gdkglobals.c
index 7a9307b2af..ae6c066f96 100644
--- a/gdk/gdkglobals.c
+++ b/gdk/gdkglobals.c
@@ -57,7 +57,7 @@ GdkDndGlobals gdk_dnd = {None,None,None,
{0,0}, {0,0},
{0,0,0,0}, NULL, None, 0};
gchar *gdk_progclass = NULL;
-gint gdk_error_code;
+gint gdk_error_code = 0;
gint gdk_error_warnings = TRUE;
gint gdk_null_window_warnings = TRUE;
GList *gdk_default_filters = NULL;
diff --git a/gdk/gdkim.c b/gdk/gdkim.c
index c06afc0577..e453925093 100644
--- a/gdk/gdkim.c
+++ b/gdk/gdkim.c
@@ -386,7 +386,7 @@ gdk_im_real_open (void)
destroy_cb.callback = gdk_im_destroy_cb;
destroy_cb.client_data = NULL;
- if (NULL != XSetIMValues (xim_im, XNDestroyCallback, &destroy_cb, NULL))
+ if (NULL != (void *) XSetIMValues (xim_im, XNDestroyCallback, &destroy_cb, NULL))
GDK_NOTE (XIM, g_warning ("Could not set destroy callback to IM. Be careful to not destroy your input method."));
#endif
@@ -469,7 +469,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_PREEDIT_AREA_REQ;
preedit_area.x = attr->preedit_area.x;
- preedit_area.y = attr->preedit_area.x;
+ preedit_area.y = attr->preedit_area.y;
preedit_area.width = attr->preedit_area.width;
preedit_area.height = attr->preedit_area.height;
@@ -484,7 +484,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_PREEDIT_POSITION_REQ;
preedit_area.x = attr->preedit_area.x;
- preedit_area.y = attr->preedit_area.x;
+ preedit_area.y = attr->preedit_area.y;
preedit_area.width = attr->preedit_area.width;
preedit_area.height = attr->preedit_area.height;
@@ -506,7 +506,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_STATUS_AREA_REQ;
status_area.x = attr->status_area.x;
- status_area.y = attr->status_area.x;
+ status_area.y = attr->status_area.y;
status_area.width = attr->status_area.width;
status_area.height = attr->status_area.height;
@@ -518,6 +518,12 @@ gdk_ic_real_new (GdkIC *ic)
break;
}
+ /* We have to ensure that the client window is actually created on
+ * the X server, or XCreateIC fails because the XIM server can't get
+ * information about the client window.
+ */
+ gdk_flush();
+
if (preedit_attr != NULL && status_attr != NULL)
private->xic = XCreateIC (xim_im,
XNInputStyle,
@@ -871,7 +877,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNFontSet;
arg->value = (gpointer) GDK_FONT_XFONT(attr->status_fontset);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_FONTSET;
}
@@ -887,7 +893,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNArea;
arg->value = (gpointer) &rect;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_AREA;
}
@@ -903,7 +909,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNArea;
arg->value = (gpointer) &rect;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_AREA_NEEDED;
else
private->mask &= ~GDK_IC_STATUS_AREA_NEEDED;
@@ -914,7 +920,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNForeground;
arg->value = (gpointer) attr->status_foreground.pixel;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_FOREGROUND;
}
@@ -923,7 +929,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNBackground;
arg->value = (gpointer) attr->status_background.pixel;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_BACKGROUND;
}
@@ -932,7 +938,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNBackgroundPixmap;
arg->value = (gpointer) GDK_WINDOW_XWINDOW(attr->status_pixmap);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_PIXMAP;
}
@@ -941,7 +947,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNColormap;
arg->value = (gpointer) GDK_COLORMAP_XCOLORMAP(attr->status_colormap);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_COLORMAP;
}
@@ -1565,8 +1571,10 @@ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
!= Success)
{
/* InvalidChar */
+ XFree(tpr.value);
return -1;
}
+ XFree(tpr.value);
if (num_wstrs == 0)
return 0;
wstr_src = wstrs[0];
diff --git a/gdk/gdkimage.c b/gdk/gdkimage.c
index d2e66803d1..7dae0d92ee 100644
--- a/gdk/gdkimage.c
+++ b/gdk/gdkimage.c
@@ -251,14 +251,12 @@ gdk_image_new (GdkImageType type,
return NULL;
}
- gdk_error_code = 0;
- gdk_error_warnings = 0;
+ gdk_error_trap_push ();
XShmAttach (private->xdisplay, x_shm_info);
XSync (private->xdisplay, False);
- gdk_error_warnings = 1;
- if (gdk_error_code == -1)
+ if (gdk_error_trap_pop ())
{
/* this is the common failure case so omit warning */
XDestroyImage (private->ximage);
@@ -269,6 +267,7 @@ gdk_image_new (GdkImageType type,
g_free (image);
gdk_use_xshm = False;
+
return NULL;
}
@@ -315,22 +314,7 @@ gdk_image_new (GdkImageType type,
image->byte_order = private->ximage->byte_order;
image->mem = private->ximage->data;
image->bpl = private->ximage->bytes_per_line;
-
- switch (private->ximage->bits_per_pixel)
- {
- case 8:
- image->bpp = 1;
- break;
- case 16:
- image->bpp = 2;
- break;
- case 24:
- image->bpp = 3;
- break;
- case 32:
- image->bpp = 4;
- break;
- }
+ image->bpp = (private->ximage->bits_per_pixel + 7) / 8;
}
}
diff --git a/gdk/gdkpixmap.c b/gdk/gdkpixmap.c
index 22e5a07867..6fc47e316e 100644
--- a/gdk/gdkpixmap.c
+++ b/gdk/gdkpixmap.c
@@ -518,7 +518,7 @@ _gdk_pixmap_create_from_xpm (GdkWindow *window,
color_name = gdk_pixmap_extract_color (buffer);
- if (color_name == NULL ||
+ if (color_name == NULL || g_strcasecmp (color_name, "None") == 0 ||
gdk_color_parse (color_name, &color->color) == FALSE)
{
color->color = *transparent_color;
@@ -817,7 +817,8 @@ void
gdk_pixmap_unref (GdkPixmap *pixmap)
{
GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap;
- g_return_if_fail(pixmap != NULL);
+ g_return_if_fail (pixmap != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
diff --git a/gdk/gdkprivate.h b/gdk/gdkprivate.h
index 4f12915c1e..b549211858 100644
--- a/gdk/gdkprivate.h
+++ b/gdk/gdkprivate.h
@@ -146,6 +146,8 @@ struct _GdkFontPrivate
gpointer xfont;
Display *xdisplay;
guint ref_count;
+
+ GSList *names;
};
struct _GdkCursorPrivate
diff --git a/gdk/gdkproperty.c b/gdk/gdkproperty.c
index 5663352460..7973d8fc7e 100644
--- a/gdk/gdkproperty.c
+++ b/gdk/gdkproperty.c
@@ -45,15 +45,16 @@ gdk_atom_intern (const gchar *atom_name,
{
retval = XInternAtom (gdk_display, atom_name, only_if_exists);
- g_hash_table_insert (atom_hash,
- g_strdup (atom_name),
- GUINT_TO_POINTER (retval));
+ if (retval != None)
+ g_hash_table_insert (atom_hash,
+ g_strdup (atom_name),
+ GUINT_TO_POINTER (retval));
}
return retval;
}
-gchar *
+gchar*
gdk_atom_name (GdkAtom atom)
{
gchar *t;
@@ -69,7 +70,7 @@ gdk_atom_name (GdkAtom atom)
t = XGetAtomName (gdk_display, atom);
gdk_error_warnings = old_error_warnings;
- if (gdk_error_code == -1)
+ if (gdk_error_code)
{
if (t)
XFree (t);
@@ -162,10 +163,10 @@ gdk_property_get (GdkWindow *window,
ret_length = ret_nitems;
break;
case 16:
- ret_length = 2 * ret_nitems;
+ ret_length = sizeof(short) * ret_nitems;
break;
case 32:
- ret_length = 4 * ret_nitems;
+ ret_length = sizeof(long) * ret_nitems;
break;
default:
g_warning ("unknown property return format: %d", ret_format);
diff --git a/gdk/gdkrgb.c b/gdk/gdkrgb.c
index 86d6f998d1..e800916f50 100644
--- a/gdk/gdkrgb.c
+++ b/gdk/gdkrgb.c
@@ -482,27 +482,30 @@ gdk_rgb_score_visual (GdkVisual *visual)
static void
gdk_rgb_choose_visual (void)
{
- GList *visuals;
+ GList *visuals, *tmp_list;
guint32 score, best_score;
GdkVisual *visual, *best_visual;
visuals = gdk_list_visuals ();
+ tmp_list = visuals;
- best_visual = visuals->data;
+ best_visual = tmp_list->data;
best_score = gdk_rgb_score_visual (best_visual);
- visuals = visuals->next;
- while (visuals)
+ tmp_list = tmp_list->next;
+ while (tmp_list)
{
- visual = visuals->data;
+ visual = tmp_list->data;
score = gdk_rgb_score_visual (visual);
if (score > best_score)
{
best_score = score;
best_visual = visual;
}
- visuals = visuals->next;
+ tmp_list = tmp_list->next;
}
+ g_list_free (visuals);
+
image_info->visual = best_visual;
}
diff --git a/gdk/gdkselection.c b/gdk/gdkselection.c
index 64a18d0424..3ee2e43b3d 100644
--- a/gdk/gdkselection.c
+++ b/gdk/gdkselection.c
@@ -105,11 +105,11 @@ gdk_selection_property_get (GdkWindow *requestor,
gulong length;
GdkAtom prop_type;
gint prop_format;
- guchar *t;
+ guchar *t = NULL;
g_return_val_if_fail (requestor != NULL, 0);
- /* If retrieved chunks are typically small, (and the ICCM says the
+ /* If retrieved chunks are typically small, (and the ICCCM says the
should be) it would be a win to try first with a buffer of
moderate length, to avoid two round trips to the server */
@@ -133,11 +133,11 @@ gdk_selection_property_get (GdkWindow *requestor,
*data = NULL;
return 0;
}
-
+
if (t)
{
- t = NULL;
XFree (t);
+ t = NULL;
}
/* Add on an extra byte to handle null termination. X guarantees
@@ -188,7 +188,7 @@ gdk_selection_send_notify (guint32 requestor,
xevent.property = property;
xevent.time = time;
- XSendEvent (gdk_display, requestor, False, NoEventMask, (XEvent*) &xevent);
+ gdk_send_xevent (requestor, False, NoEventMask, (XEvent*) &xevent);
}
gint
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 93fd0a4a7d..47b200c3e4 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -34,17 +34,9 @@
#include "gdkprivate.h"
#include "MwmUtil.h"
-#if HAVE_CONFIG_H
-# include <config.h>
-# if STDC_HEADERS
-# include <stdlib.h>
-# include <stdio.h>
-# include <string.h>
-# endif
-#else
-# include <stdlib.h>
-# include <stdio.h>
-#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#ifdef HAVE_SHAPE_EXT
@@ -707,10 +699,10 @@ gdk_window_destroy_notify (GdkWindow *window)
if (!private->destroyed)
{
- if (private->window_type == GDK_WINDOW_FOREIGN)
- gdk_window_internal_destroy (window, FALSE, FALSE);
- else
+ if (private->window_type != GDK_WINDOW_FOREIGN)
g_warning ("GdkWindow %#lx unexpectedly destroyed", private->xwindow);
+
+ gdk_window_internal_destroy (window, FALSE, FALSE);
}
gdk_xid_table_remove (private->xwindow);
@@ -732,6 +724,7 @@ gdk_window_unref (GdkWindow *window)
{
GdkWindowPrivate *private = (GdkWindowPrivate *)window;
g_return_if_fail (window != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
@@ -1089,8 +1082,10 @@ gdk_window_set_hints (GdkWindow *window,
size_hints.max_height = max_height;
}
- if (flags)
- XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
+ /* FIXME: Would it be better to delete this property of
+ * flags == 0? It would save space on the server
+ */
+ XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
}
void
@@ -1110,7 +1105,15 @@ gdk_window_set_geometry_hints (GdkWindow *window,
size_hints.flags = 0;
if (geom_mask & GDK_HINT_POS)
- size_hints.flags |= PPosition;
+ {
+ size_hints.flags |= PPosition;
+ /* We need to initialize the following obsolete fields because KWM
+ * apparently uses these fields if they are non-zero.
+ * #@#!#!$!.
+ */
+ size_hints.x = 0;
+ size_hints.y = 0;
+ }
if (geom_mask & GDK_HINT_MIN_SIZE)
{
@@ -1145,28 +1148,30 @@ gdk_window_set_geometry_hints (GdkWindow *window,
size_hints.flags |= PAspect;
if (geometry->min_aspect <= 1)
{
- size_hints.min_aspect.x = G_MAXINT * geometry->min_aspect;
- size_hints.min_aspect.y = G_MAXINT;
+ size_hints.min_aspect.x = 65536 * geometry->min_aspect;
+ size_hints.min_aspect.y = 65536;
}
else
{
- size_hints.min_aspect.x = G_MAXINT;
- size_hints.min_aspect.y = G_MAXINT / geometry->min_aspect;;
+ size_hints.min_aspect.x = 65536;
+ size_hints.min_aspect.y = 65536 / geometry->min_aspect;;
}
if (geometry->max_aspect <= 1)
{
- size_hints.max_aspect.x = G_MAXINT * geometry->max_aspect;
- size_hints.max_aspect.y = G_MAXINT;
+ size_hints.max_aspect.x = 65536 * geometry->max_aspect;
+ size_hints.max_aspect.y = 65536;
}
else
{
- size_hints.max_aspect.x = G_MAXINT;
- size_hints.max_aspect.y = G_MAXINT / geometry->max_aspect;;
+ size_hints.max_aspect.x = 65536;
+ size_hints.max_aspect.y = 65536 / geometry->max_aspect;;
}
}
-
- if (geom_mask)
- XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
+
+ /* FIXME: Would it be better to delete this property of
+ * geom_mask == 0? It would save space on the server
+ */
+ XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
}
void
diff --git a/gdk/x11/gdkcc-x11.c b/gdk/x11/gdkcc-x11.c
index 573b2efa15..d1d1e754f7 100644
--- a/gdk/x11/gdkcc-x11.c
+++ b/gdk/x11/gdkcc-x11.c
@@ -491,10 +491,11 @@ init_palette (GdkColorContext *cc)
if (cc->color_hash)
{
- /* XXX: quick-and-dirty way to remove everything */
-
+ g_hash_table_foreach (cc->color_hash,
+ free_hash_entry,
+ NULL);
g_hash_table_destroy (cc->color_hash);
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
+ cc->color_hash = NULL;
}
cc->palette = NULL;
@@ -618,11 +619,6 @@ gdk_color_context_new (GdkVisual *visual,
g_message ("gdk_color_context_new: screen depth is %i, no. of colors is %i\n",
cc->visual->depth, cc->num_colors));
- /* check if we need to initialize a hash table */
-
- if ((cc->mode == GDK_CC_MODE_STD_CMAP) || (cc->mode == GDK_CC_MODE_UNDEFINED))
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
-
return (GdkColorContext *) cc;
}
@@ -677,17 +673,9 @@ gdk_color_context_free (GdkColorContext *cc)
gdk_colormap_unref (cc->colormap);
/* free any palette that has been associated with this GdkColorContext */
-
+
init_palette (cc);
- if (cc->color_hash)
- {
- g_hash_table_foreach (cc->color_hash,
- free_hash_entry,
- NULL);
- g_hash_table_destroy (cc->color_hash);
- }
-
g_free (cc);
}
@@ -780,13 +768,14 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
default:
{
GdkColor color;
- GdkColor *result;
+ GdkColor *result = NULL;
color.red = red;
color.green = green;
color.blue = blue;
-
- result = g_hash_table_lookup (cc->color_hash, &color);
+
+ if (cc->color_hash)
+ result = g_hash_table_lookup (cc->color_hash, &color);
if (!result)
{
@@ -831,6 +820,9 @@ gdk_color_context_get_pixel (GdkColorContext *cc,
cnew = g_new (GdkColor, 1);
*cnew = color;
+
+ if (!cc->color_hash)
+ cc->color_hash = g_hash_table_new (hash_color, compare_colors);
g_hash_table_insert (cc->color_hash, cnew, cnew);
cc->clut[cc->num_allocated] = color.pixel;
@@ -1489,20 +1481,7 @@ gdk_color_context_add_palette (GdkColorContext *cc,
/* restore previous mode if we aren't adding a new palette */
if (num_palette == 0)
- {
- /* GDK_CC_MODE_STD_CMAP uses a hash table, so we'd better initialize one */
-
- /* XXX: here, the hash table is already initialized */
-
- return 0;
- }
-
- /* Initialize a hash table for this palette (we need one for allocating
- * the pixels in the palette using the current settings)
- */
-
- if (cc->color_hash == NULL)
- cc->color_hash = g_hash_table_new (hash_color, compare_colors);
+ return 0;
/* copy incoming palette */
@@ -1549,6 +1528,9 @@ gdk_color_context_add_palette (GdkColorContext *cc,
if (cc->color_hash)
{
+ g_hash_table_foreach (cc->color_hash,
+ free_hash_entry,
+ NULL);
g_hash_table_destroy (cc->color_hash);
cc->color_hash = NULL;
}
diff --git a/gdk/x11/gdkcolor-x11.c b/gdk/x11/gdkcolor-x11.c
index bd48087543..2baa200ee0 100644
--- a/gdk/x11/gdkcolor-x11.c
+++ b/gdk/x11/gdkcolor-x11.c
@@ -70,13 +70,14 @@ gdk_colormap_new (GdkVisual *visual,
xvisual = ((GdkVisualPrivate*) visual)->xvisual;
colormap->size = visual->colormap_size;
- colormap->colors = g_new (GdkColor, colormap->size);
+ colormap->colors = NULL;
switch (visual->type)
{
case GDK_VISUAL_GRAYSCALE:
case GDK_VISUAL_PSEUDO_COLOR:
private->info = g_new0 (GdkColorInfo, colormap->size);
+ colormap->colors = g_new (GdkColor, colormap->size);
private->hash = g_hash_table_new ((GHashFunc) gdk_color_hash,
(GCompareFunc) gdk_color_equal);
@@ -116,6 +117,7 @@ gdk_colormap_new (GdkVisual *visual,
private->private_val = TRUE;
private->xcolormap = XCreateColormap (private->xdisplay, gdk_root_window,
xvisual, AllocAll);
+ colormap->colors = g_new (GdkColor, colormap->size);
size = 1 << visual->red_prec;
for (i = 0; i < size; i++)
@@ -428,56 +430,7 @@ gdk_colors_alloc (GdkColormap *colormap,
}
}
- return return_val;
-}
-
-/* This is almost identical to gdk_colormap_free_colors.
- * Keep them in sync!
- */
-void
-gdk_colors_free (GdkColormap *colormap,
- gulong *in_pixels,
- gint in_npixels,
- gulong planes)
-{
- GdkColormapPrivate *private;
- gulong *pixels;
- gint npixels = 0;
- gint i;
-
- g_return_if_fail (colormap != NULL);
- g_return_if_fail (in_pixels != NULL);
-
- private = (GdkColormapPrivate*) colormap;
-
- if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
- (private->visual->type != GDK_VISUAL_GRAYSCALE))
- return;
-
- pixels = g_new (gulong, in_npixels);
-
- for (i=0; i<in_npixels; i++)
- {
- gulong pixel = in_pixels[i];
-
- if (private->info[pixel].ref_count)
- {
- private->info[pixel].ref_count--;
-
- if (private->info[pixel].ref_count == 0)
- {
- pixels[npixels++] = pixel;
- if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
- g_hash_table_remove (private->hash, &colormap->colors[in_pixels[i]]);
- private->info[pixel].flags = 0;
- }
- }
- }
-
- if (npixels)
- XFreeColors (private->xdisplay, private->xcolormap,
- pixels, npixels, planes);
- g_free (pixels);
+ return return_val != 0;
}
/*
@@ -536,7 +489,7 @@ gdk_color_free (GdkColor *color)
g_mem_chunk_free (color_chunk, color);
}
-gint
+gboolean
gdk_color_white (GdkColormap *colormap,
GdkColor *color)
{
@@ -559,7 +512,7 @@ gdk_color_white (GdkColormap *colormap,
return return_val;
}
-gint
+gboolean
gdk_color_black (GdkColormap *colormap,
GdkColor *color)
{
@@ -608,6 +561,104 @@ gdk_color_parse (const gchar *spec,
return return_val;
}
+/* This is almost identical to gdk_colormap_free_colors.
+ * Keep them in sync!
+ */
+void
+gdk_colors_free (GdkColormap *colormap,
+ gulong *in_pixels,
+ gint in_npixels,
+ gulong planes)
+{
+ GdkColormapPrivate *private;
+ gulong *pixels;
+ gint npixels = 0;
+ gint i;
+
+ g_return_if_fail (colormap != NULL);
+ g_return_if_fail (in_pixels != NULL);
+
+ private = (GdkColormapPrivate*) colormap;
+
+ if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
+ (private->visual->type != GDK_VISUAL_GRAYSCALE))
+ return;
+
+ pixels = g_new (gulong, in_npixels);
+
+ for (i=0; i<in_npixels; i++)
+ {
+ gulong pixel = in_pixels[i];
+
+ if (private->info[pixel].ref_count)
+ {
+ private->info[pixel].ref_count--;
+
+ if (private->info[pixel].ref_count == 0)
+ {
+ pixels[npixels++] = pixel;
+ if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
+ g_hash_table_remove (private->hash, &colormap->colors[pixel]);
+ private->info[pixel].flags = 0;
+ }
+ }
+ }
+
+ if (npixels)
+ XFreeColors (private->xdisplay, private->xcolormap,
+ pixels, npixels, planes);
+ g_free (pixels);
+}
+
+/* This is almost identical to gdk_colors_free.
+ * Keep them in sync!
+ */
+void
+gdk_colormap_free_colors (GdkColormap *colormap,
+ GdkColor *colors,
+ gint ncolors)
+{
+ GdkColormapPrivate *private;
+ gulong *pixels;
+ gint npixels = 0;
+ gint i;
+
+ g_return_if_fail (colormap != NULL);
+ g_return_if_fail (colors != NULL);
+
+ private = (GdkColormapPrivate*) colormap;
+
+ if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
+ (private->visual->type != GDK_VISUAL_GRAYSCALE))
+ return;
+
+ pixels = g_new (gulong, ncolors);
+
+ for (i=0; i<ncolors; i++)
+ {
+ gulong pixel = colors[i].pixel;
+
+ if (private->info[pixel].ref_count)
+ {
+ private->info[pixel].ref_count--;
+
+ if (private->info[pixel].ref_count == 0)
+ {
+ pixels[npixels++] = pixel;
+ if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
+ g_hash_table_remove (private->hash, &colormap->colors[pixel]);
+ private->info[pixel].flags = 0;
+ }
+ }
+ }
+
+ if (npixels)
+ XFreeColors (private->xdisplay, private->xcolormap,
+ pixels, npixels, 0);
+
+ g_free (pixels);
+}
+
/********************
* Color allocation *
********************/
@@ -648,6 +699,7 @@ gdk_colormap_alloc1 (GdkColormap *colormap,
else
{
colormap->colors[ret->pixel] = *color;
+ colormap->colors[ret->pixel].pixel = ret->pixel;
private->info[ret->pixel].ref_count = 1;
g_hash_table_insert (private->hash,
@@ -1025,55 +1077,6 @@ gdk_colormap_alloc_color (GdkColormap *colormap,
return success;
}
-/* This is almost identical to gdk_colors_free.
- * Keep them in sync!
- */
-void
-gdk_colormap_free_colors (GdkColormap *colormap,
- GdkColor *colors,
- gint ncolors)
-{
- GdkColormapPrivate *private;
- gulong *pixels;
- gint npixels = 0;
- gint i;
-
- g_return_if_fail (colormap != NULL);
- g_return_if_fail (colors != NULL);
-
- private = (GdkColormapPrivate*) colormap;
-
- if ((private->visual->type != GDK_VISUAL_PSEUDO_COLOR) &&
- (private->visual->type != GDK_VISUAL_GRAYSCALE))
- return;
-
- pixels = g_new (gulong, ncolors);
-
- for (i=0; i<ncolors; i++)
- {
- gulong pixel = colors[i].pixel;
-
- if (private->info[pixel].ref_count)
- {
- private->info[pixel].ref_count--;
-
- if (private->info[pixel].ref_count == 0)
- {
- pixels[npixels++] = pixel;
- if (!(private->info[pixel].flags & GDK_COLOR_WRITEABLE))
- g_hash_table_remove (private->hash, &colors[i]);
- private->info[pixel].flags = 0;
- }
- }
- }
-
- if (npixels)
- XFreeColors (private->xdisplay, private->xcolormap,
- pixels, npixels, 0);
-
- g_free (pixels);
-}
-
gboolean
gdk_color_alloc (GdkColormap *colormap,
GdkColor *color)
diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c
index 3b8f05d8fd..a2be5e160c 100644
--- a/gdk/x11/gdkdnd-x11.c
+++ b/gdk/x11/gdkdnd-x11.c
@@ -31,8 +31,6 @@
#include "gdk/gdkprivate.h"
#include "gdk.h"
-#define NEW_DRAGS
-
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
typedef enum {
@@ -70,7 +68,8 @@ struct _GdkDragContextPrivate {
GdkDragAction old_actions; /* The last actions we sent to the source */
GdkDragAction xdnd_actions; /* What is currently set in XdndActionList */
- Window dest_xid;
+ Window dest_xid; /* The last window we looked up */
+ Window drop_xid; /* The (non-proxied) window that is receiving drops */
guint xdnd_targets_set : 1; /* Whether we've already set XdndTypeList */
guint xdnd_actions_set : 1; /* Whether we've already set XdndActionList */
guint xdnd_have_actions : 1; /* Whether an XdndActionList was provided */
@@ -151,6 +150,7 @@ gdk_drag_context_unref (GdkDragContext *context)
GdkDragContextPrivate *private = (GdkDragContextPrivate *)context;
g_return_if_fail (context != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count--;
@@ -196,8 +196,8 @@ gdk_drag_context_find (gboolean is_source,
private = (GdkDragContextPrivate *)context;
context_dest_xid = context->dest_window ?
- (private->dest_xid ?
- private->dest_xid :
+ (private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window)) :
None;
@@ -387,7 +387,7 @@ gdk_window_cache_new (void)
xwa.x, xwa.y, xwa.width, xwa.height,
xwa.map_state != IsUnmapped);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else
{
@@ -441,9 +441,10 @@ get_client_window_at_coords_recurse (Window win,
wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -458,9 +459,10 @@ get_client_window_at_coords_recurse (Window win,
XTranslateCoordinates (gdk_display, gdk_root_window, win,
x_root, y_root, &dest_x, &dest_y, &child);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -469,7 +471,7 @@ get_client_window_at_coords_recurse (Window win,
&root, &tmp_parent, &children, &nchildren) == 0)
return 0;
- if (gdk_error_code == 0)
+ if (!gdk_error_code)
{
for (i = nchildren - 1; (i >= 0) && (child == None); i--)
{
@@ -477,7 +479,7 @@ get_client_window_at_coords_recurse (Window win,
XGetWindowAttributes (gdk_display, children[i], &xwa);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else if ((xwa.map_state == IsViewable) && (xwa.class == InputOutput) &&
(x >= xwa.x) && (x < xwa.x + (gint)xwa.width) &&
@@ -566,9 +568,10 @@ get_client_window_at_coords_recurse (Window win,
wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -581,9 +584,10 @@ get_client_window_at_coords_recurse (Window win,
XTranslateCoordinates (gdk_display, gdk_root_window, win,
x_root, y_root, &dest_x, &dest_y, &child);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
{
gdk_error_code = 0;
+
return None;
}
@@ -620,7 +624,7 @@ get_client_window_at_coords (Window ignore,
XGetWindowAttributes (gdk_display, children[i], &xwa);
- if (gdk_error_code != 0)
+ if (gdk_error_code)
gdk_error_code = 0;
else if ((xwa.map_state == IsViewable) &&
(x_root >= xwa.x) && (x_root < xwa.x + (gint)xwa.width) &&
@@ -869,7 +873,7 @@ motif_find_drag_window (gboolean create)
Display *display;
XSetWindowAttributes attr;
- display = XOpenDisplay (NULL);
+ display = XOpenDisplay (gdk_display_name);
XSetCloseDownMode (display, RetainPermanent);
XGrabServer (display);
@@ -2027,6 +2031,8 @@ xdnd_set_targets (GdkDragContext *context)
XA_ATOM, 32, PropModeReplace,
(guchar *)atomlist, n_atoms);
+ g_free (atomlist);
+
private->xdnd_targets_set = 1;
}
@@ -2073,6 +2079,8 @@ xdnd_set_actions (GdkDragContext *context)
XA_ATOM, 32, PropModeReplace,
(guchar *)atomlist, n_atoms);
+ g_free (atomlist);
+
private->xdnd_actions_set = 1;
private->xdnd_actions = context->actions;
}
@@ -2106,13 +2114,9 @@ xdnd_send_enter (GdkDragContext *context)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndEnter", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = (3 << 24); /* version */
xev.xclient.data.l[2] = 0;
@@ -2162,13 +2166,9 @@ xdnd_send_leave (GdkDragContext *context)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndLeave", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = 0;
@@ -2195,13 +2195,9 @@ xdnd_send_drop (GdkDragContext *context, guint32 time)
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndDrop", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = time;
@@ -2232,13 +2228,9 @@ xdnd_send_motion (GdkDragContext *context,
xev.xclient.type = ClientMessage;
xev.xclient.message_type = gdk_atom_intern ("XdndPosition", FALSE);
xev.xclient.format = 32;
-#ifdef NEW_DRAGS
- xev.xclient.window = private->dest_xid ?
- private->dest_xid :
+ xev.xclient.window = private->drop_xid ?
+ private->drop_xid :
GDK_WINDOW_XWINDOW (context->dest_window);
-#else
- xev.xclient.window = GDK_WINDOW_XWINDOW (context->dest_window);
-#endif
xev.xclient.data.l[0] = GDK_WINDOW_XWINDOW (context->source_window);
xev.xclient.data.l[1] = 0;
xev.xclient.data.l[2] = (x_root << 16) | y_root;
@@ -2859,6 +2851,12 @@ gdk_drag_find_window (GdkDragContext *context,
/* Check if new destination accepts drags, and which protocol */
+ /* There is some ugliness here. We actually need to pass
+ * _three_ pieces of information to drag_motion - dest_window,
+ * protocol, and the XID of the unproxied window. The first
+ * two are passed explicitely, the third implicitly through
+ * protocol->dest_xid.
+ */
if ((recipient = gdk_drag_get_protocol (dest, protocol)))
{
*dest_window = gdk_window_lookup (recipient);
@@ -2917,6 +2915,7 @@ gdk_drag_motion (GdkDragContext *context,
if (dest_window)
{
context->dest_window = dest_window;
+ private->drop_xid = private->dest_xid;
gdk_window_ref (context->dest_window);
context->protocol = protocol;
@@ -2941,6 +2940,7 @@ gdk_drag_motion (GdkDragContext *context,
else
{
context->dest_window = NULL;
+ private->drop_xid = None;
context->action = 0;
}
diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c
index 159e0ee9e5..4f6f577f29 100644
--- a/gdk/x11/gdkevents-x11.c
+++ b/gdk/x11/gdkevents-x11.c
@@ -27,7 +27,6 @@
#include "gdk.h"
#include "gdkx.h"
#include "gdkprivate.h"
-#include "gdkinput.h"
#include "gdkkeysyms.h"
#if HAVE_CONFIG_H
@@ -37,6 +36,7 @@
# endif
#endif
+#include "gdkinput.h"
typedef struct _GdkIOClosure GdkIOClosure;
typedef struct _GdkEventPrivate GdkEventPrivate;
@@ -88,9 +88,11 @@ static GdkEvent* gdk_event_unqueue (void);
static gboolean gdk_event_prepare (gpointer source_data,
GTimeVal *current_time,
- gint *timeout);
+ gint *timeout,
+ gpointer user_data);
static gboolean gdk_event_check (gpointer source_data,
- GTimeVal *current_time);
+ GTimeVal *current_time,
+ gpointer user_data);
static gboolean gdk_event_dispatch (gpointer source_data,
GTimeVal *current_time,
gpointer user_data);
@@ -434,6 +436,10 @@ gdk_compress_exposures (XEvent *xevent,
rect1.width = xevent->xexpose.width;
rect1.height = xevent->xexpose.height;
+ event.any.type = GDK_EXPOSE;
+ event.any.window = None;
+ event.any.send_event = FALSE;
+
while (1)
{
if (count == 0)
@@ -449,6 +455,8 @@ gdk_compress_exposures (XEvent *xevent,
&tmp_event,
expose_predicate,
(XPointer)&info);
+
+ event.any.window = window;
/* We apply filters here, and if it was filtered, completely
* ignore the return
@@ -849,6 +857,12 @@ gdk_io_destroy (gpointer data)
g_free (closure);
}
+/* What do we do with G_IO_NVAL?
+ */
+#define READ_CONDITION (G_IO_IN | G_IO_HUP | G_IO_ERR)
+#define WRITE_CONDITION (G_IO_OUT | G_IO_ERR)
+#define EXCEPTION_CONDITION (G_IO_PRI)
+
static gboolean
gdk_io_invoke (GIOChannel *source,
GIOCondition condition,
@@ -857,11 +871,11 @@ gdk_io_invoke (GIOChannel *source,
GdkIOClosure *closure = data;
GdkInputCondition gdk_cond = 0;
- if (condition & (G_IO_IN | G_IO_PRI))
+ if (condition & READ_CONDITION)
gdk_cond |= GDK_INPUT_READ;
- if (condition & G_IO_OUT)
+ if (condition & WRITE_CONDITION)
gdk_cond |= GDK_INPUT_WRITE;
- if (condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL))
+ if (condition & EXCEPTION_CONDITION)
gdk_cond |= GDK_INPUT_EXCEPTION;
if (closure->condition & gdk_cond)
@@ -888,11 +902,11 @@ gdk_input_add_full (gint source,
closure->data = data;
if (condition & GDK_INPUT_READ)
- cond |= (G_IO_IN | G_IO_PRI);
+ cond |= READ_CONDITION;
if (condition & GDK_INPUT_WRITE)
- cond |= G_IO_OUT;
+ cond |= WRITE_CONDITION;
if (condition & GDK_INPUT_EXCEPTION)
- cond |= G_IO_ERR|G_IO_HUP|G_IO_NVAL;
+ cond |= EXCEPTION_CONDITION;
channel = g_io_channel_unix_new (source);
result = g_io_add_watch_full (channel, G_PRIORITY_DEFAULT, cond,
@@ -923,7 +937,6 @@ gdk_event_apply_filters (XEvent *xevent,
GdkEvent *event,
GList *filters)
{
- GdkEventFilter *filter;
GList *tmp_list;
GdkFilterReturn result;
@@ -931,13 +944,12 @@ gdk_event_apply_filters (XEvent *xevent,
while (tmp_list)
{
- filter = (GdkEventFilter*) tmp_list->data;
+ GdkEventFilter *filter = (GdkEventFilter*) tmp_list->data;
- result = (*filter->function) (xevent, event, filter->data);
+ tmp_list = tmp_list->next;
+ result = filter->function (xevent, event, filter->data);
if (result != GDK_FILTER_CONTINUE)
return result;
-
- tmp_list = tmp_list->next;
}
return GDK_FILTER_CONTINUE;
@@ -1002,7 +1014,7 @@ gdk_event_translate (GdkEvent *event,
gdk_window_ref (window);
event->any.window = window;
- event->any.send_event = xevent->xany.send_event;
+ event->any.send_event = xevent->xany.send_event ? TRUE : FALSE;
if (window_private && window_private->destroyed)
{
@@ -1057,9 +1069,6 @@ gdk_event_translate (GdkEvent *event,
}
#endif
- if (window == NULL)
- g_message ("Got event for unknown window: %#lx\n", xevent->xany.window);
-
/* We do a "manual" conversion of the XEvent to a
* GdkEvent. The structures are mostly the same so
* the conversion is fairly straightforward. We also
@@ -1513,10 +1522,11 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d",
+ g_message ("expose:\t\twindow: %ld %d x,y: %d %d w,h: %d %d%s",
xevent->xexpose.window, xevent->xexpose.count,
xevent->xexpose.x, xevent->xexpose.y,
- xevent->xexpose.width, xevent->xexpose.height));
+ xevent->xexpose.width, xevent->xexpose.height,
+ event->any.send_event ? " (send)" : ""));
gdk_compress_exposures (xevent, window);
event->expose.type = GDK_EXPOSE;
@@ -1601,7 +1611,17 @@ gdk_event_translate (GdkEvent *event,
break;
case CreateNotify:
- /* Not currently handled */
+ GDK_NOTE (EVENTS,
+ g_message ("create notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d parent: %ld ovr: %d",
+ xevent->xcreatewindow.window,
+ xevent->xcreatewindow.x,
+ xevent->xcreatewindow.y,
+ xevent->xcreatewindow.width,
+ xevent->xcreatewindow.height,
+ xevent->xcreatewindow.border_width,
+ xevent->xcreatewindow.parent,
+ xevent->xcreatewindow.override_redirect));
+ /* not really handled */
break;
case DestroyNotify:
@@ -1616,7 +1636,7 @@ gdk_event_translate (GdkEvent *event,
return_val = window_private && !window_private->destroyed;
- if(window && window_private->xwindow != GDK_ROOT_WINDOW())
+ if (window && window_private->xwindow != GDK_ROOT_WINDOW())
gdk_window_destroy_notify (window);
break;
@@ -1651,8 +1671,12 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("reparent notify:\twindow: %ld",
- xevent->xreparent.window));
+ g_message ("reparent notify:\twindow: %ld x,y: %d %d parent: %ld ovr: %d",
+ xevent->xreparent.window,
+ xevent->xreparent.x,
+ xevent->xreparent.y,
+ xevent->xreparent.parent,
+ xevent->xreparent.override_redirect));
/* Not currently handled */
return_val = FALSE;
@@ -1661,36 +1685,8 @@ gdk_event_translate (GdkEvent *event,
case ConfigureNotify:
/* Print debugging info.
*/
- while ((XPending (gdk_display) > 0) &&
- XCheckTypedWindowEvent(gdk_display, xevent->xany.window,
- ConfigureNotify, xevent))
- {
- GdkFilterReturn result;
-
- GDK_NOTE (EVENTS,
- g_message ("configure notify discarded:\twindow: %ld",
- xevent->xconfigure.window));
-
- result = gdk_event_apply_filters (xevent, event,
- window_private
- ?window_private->filters
- :gdk_default_filters);
-
- /* If the result is GDK_FILTER_REMOVE, there will be
- * trouble, but anybody who filtering the Configure events
- * better know what they are doing
- */
- if (result != GDK_FILTER_CONTINUE)
- {
- return (result == GDK_FILTER_TRANSLATE) ? TRUE : FALSE;
- }
-
- /*XSync (gdk_display, 0);*/
- }
-
-
GDK_NOTE (EVENTS,
- g_message ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d",
+ g_message ("configure notify:\twindow: %ld x,y: %d %d w,h: %d %d b-w: %d above: %ld ovr: %d%s",
xevent->xconfigure.window,
xevent->xconfigure.x,
xevent->xconfigure.y,
@@ -1698,14 +1694,19 @@ gdk_event_translate (GdkEvent *event,
xevent->xconfigure.height,
xevent->xconfigure.border_width,
xevent->xconfigure.above,
- xevent->xconfigure.override_redirect));
-
- if (!window_private->destroyed &&
+ xevent->xconfigure.override_redirect,
+ !window
+ ? " (discarding)"
+ : window_private->window_type == GDK_WINDOW_CHILD
+ ? " (discarding child)"
+ : ""));
+ if (window &&
+ !window_private->destroyed &&
(window_private->extension_events != 0) &&
gdk_input_vtable.configure_event)
gdk_input_vtable.configure_event (&xevent->xconfigure, window);
- if (window_private->window_type == GDK_WINDOW_CHILD)
+ if (!window || window_private->window_type == GDK_WINDOW_CHILD)
return_val = FALSE;
else
{
@@ -1721,17 +1722,23 @@ gdk_event_translate (GdkEvent *event,
gint tx = 0;
gint ty = 0;
Window child_window = 0;
-
- if (!XTranslateCoordinates (window_private->xdisplay,
- window_private->xwindow,
- gdk_root_window,
- 0, 0,
- &tx, &ty,
- &child_window))
- g_warning ("GdkWindow %ld doesn't share root windows display?",
- window_private->xwindow);
- event->configure.x = tx;
- event->configure.y = ty;
+
+ gdk_error_trap_push ();
+ if (XTranslateCoordinates (window_private->xdisplay,
+ window_private->xwindow,
+ gdk_root_window,
+ 0, 0,
+ &tx, &ty,
+ &child_window))
+ {
+ if (!gdk_error_trap_pop ())
+ {
+ event->configure.x = tx;
+ event->configure.y = ty;
+ }
+ }
+ else
+ gdk_error_trap_pop ();
}
else
{
@@ -1751,8 +1758,15 @@ gdk_event_translate (GdkEvent *event,
/* Print debugging info.
*/
GDK_NOTE (EVENTS,
- g_message ("property notify:\twindow: %ld",
- xevent->xproperty.window));
+ gchar *atom = gdk_atom_name (xevent->xproperty.atom);
+ g_message ("property notify:\twindow: %ld, atom(%ld): %s%s%s",
+ xevent->xproperty.window,
+ xevent->xproperty.atom,
+ atom ? "\"" : "",
+ atom ? atom : "unknown",
+ atom ? "\"" : "");
+ g_free (atom);
+ );
event->property.type = GDK_PROPERTY_NOTIFY;
event->property.window = window;
@@ -1910,8 +1924,8 @@ gdk_event_translate (GdkEvent *event,
GdkFilterReturn
gdk_wm_protocols_filter (GdkXEvent *xev,
- GdkEvent *event,
- gpointer data)
+ GdkEvent *event,
+ gpointer data)
{
XEvent *xevent = (XEvent *)xev;
@@ -1993,8 +2007,7 @@ gdk_events_queue (void)
event->any.type = GDK_NOTHING;
event->any.window = NULL;
- event->any.send_event = FALSE;
- event->any.send_event = xevent.xany.send_event;
+ event->any.send_event = xevent.xany.send_event ? TRUE : FALSE;
((GdkEventPrivate *)event)->flags |= GDK_EVENT_PENDING;
@@ -2017,7 +2030,8 @@ gdk_events_queue (void)
static gboolean
gdk_event_prepare (gpointer source_data,
GTimeVal *current_time,
- gint *timeout)
+ gint *timeout,
+ gpointer user_data)
{
gboolean retval;
@@ -2034,7 +2048,8 @@ gdk_event_prepare (gpointer source_data,
static gboolean
gdk_event_check (gpointer source_data,
- GTimeVal *current_time)
+ GTimeVal *current_time,
+ gpointer user_data)
{
gboolean retval;
@@ -2133,29 +2148,29 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
guint level)
{
static GdkAtom wm_state_atom = GDK_NONE;
-
Atom type = None;
int format;
unsigned long nitems, after;
unsigned char *data;
-
Window *ret_children, ret_root, ret_parent;
unsigned int ret_nchildren;
- int i;
-
+ gint old_warnings = gdk_error_warnings;
gboolean send = FALSE;
gboolean found = FALSE;
+ int i;
if (!wm_state_atom)
wm_state_atom = gdk_atom_intern ("WM_STATE", FALSE);
+ gdk_error_warnings = FALSE;
gdk_error_code = 0;
XGetWindowProperty (gdk_display, xid, wm_state_atom, 0, 0, False, AnyPropertyType,
&type, &format, &nitems, &after, &data);
if (gdk_error_code)
{
- gdk_error_code = 0;
+ gdk_error_warnings = old_warnings;
+
return FALSE;
}
@@ -2167,18 +2182,20 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
else
{
/* OK, we're all set, now let's find some windows to send this to */
- if (XQueryTree(gdk_display, xid, &ret_root, &ret_parent,
- &ret_children, &ret_nchildren) != True)
- return FALSE;
-
- if (gdk_error_code)
- return FALSE;
+ if (XQueryTree (gdk_display, xid, &ret_root, &ret_parent,
+ &ret_children, &ret_nchildren) != True ||
+ gdk_error_code)
+ {
+ gdk_error_warnings = old_warnings;
+
+ return FALSE;
+ }
for(i = 0; i < ret_nchildren; i++)
- if (gdk_event_send_client_message_to_all_recurse(xev, ret_children[i], level + 1))
+ if (gdk_event_send_client_message_to_all_recurse (xev, ret_children[i], level + 1))
found = TRUE;
- XFree(ret_children);
+ XFree (ret_children);
}
if (send || (!found && (level == 1)))
@@ -2187,6 +2204,8 @@ gdk_event_send_client_message_to_all_recurse (XEvent *xev,
gdk_send_xevent (xid, False, NoEventMask, xev);
}
+ gdk_error_warnings = old_warnings;
+
return (send || found);
}
diff --git a/gdk/x11/gdkfont-x11.c b/gdk/x11/gdkfont-x11.c
index d1f779a064..096cf8a537 100644
--- a/gdk/x11/gdkfont-x11.c
+++ b/gdk/x11/gdkfont-x11.c
@@ -29,6 +29,63 @@
#include "gdk.h"
#include "gdkprivate.h"
+static GHashTable *font_name_hash = NULL;
+static GHashTable *fontset_name_hash = NULL;
+
+static void
+gdk_font_hash_insert (GdkFontType type, GdkFont *font, const gchar *font_name)
+{
+ GdkFontPrivate *private = (GdkFontPrivate *)font;
+ GHashTable **hashp = (type == GDK_FONT_FONT) ?
+ &font_name_hash : &fontset_name_hash;
+
+ if (!*hashp)
+ *hashp = g_hash_table_new (g_str_hash, g_str_equal);
+
+ private->names = g_slist_prepend (private->names, g_strdup (font_name));
+ g_hash_table_insert (*hashp, private->names->data, font);
+}
+
+static void
+gdk_font_hash_remove (GdkFontType type, GdkFont *font)
+{
+ GdkFontPrivate *private = (GdkFontPrivate *)font;
+ GSList *tmp_list;
+ GHashTable *hash = (type == GDK_FONT_FONT) ?
+ font_name_hash : fontset_name_hash;
+
+ tmp_list = private->names;
+ while (tmp_list)
+ {
+ g_hash_table_remove (hash, tmp_list->data);
+ g_free (tmp_list->data);
+
+ tmp_list = tmp_list->next;
+ }
+
+ g_slist_free (private->names);
+ private->names = NULL;
+}
+
+static GdkFont *
+gdk_font_hash_lookup (GdkFontType type, const gchar *font_name)
+{
+ GdkFont *result;
+ GHashTable *hash = (type == GDK_FONT_FONT) ?
+ font_name_hash : fontset_name_hash;
+
+ if (!hash)
+ return NULL;
+ else
+ {
+ result = g_hash_table_lookup (hash, font_name);
+ if (result)
+ gdk_font_ref (result);
+
+ return result;
+ }
+}
+
GdkFont*
gdk_font_load (const gchar *font_name)
{
@@ -38,6 +95,10 @@ gdk_font_load (const gchar *font_name)
g_return_val_if_fail (font_name != NULL, NULL);
+ font = gdk_font_hash_lookup (GDK_FONT_FONT, font_name);
+ if (font)
+ return font;
+
xfont = XLoadQueryFont (gdk_display, font_name);
if (xfont == NULL)
return NULL;
@@ -57,7 +118,8 @@ gdk_font_load (const gchar *font_name)
private->xdisplay = gdk_display;
private->xfont = xfont;
private->ref_count = 1;
-
+ private->names = NULL;
+
font = (GdkFont*) private;
font->type = GDK_FONT_FONT;
font->ascent = xfont->ascent;
@@ -66,6 +128,8 @@ gdk_font_load (const gchar *font_name)
gdk_xid_table_insert (&xfont->fid, font);
}
+ gdk_font_hash_insert (GDK_FONT_FONT, font, font_name);
+
return font;
}
@@ -79,6 +143,10 @@ gdk_fontset_load (gchar *fontset_name)
gchar **missing_charset_list;
gchar *def_string;
+ font = gdk_font_hash_lookup (GDK_FONT_FONTSET, fontset_name);
+ if (font)
+ return font;
+
private = g_new (GdkFontPrivate, 1);
font = (GdkFont*) private;
@@ -121,8 +189,12 @@ gdk_fontset_load (gchar *fontset_name)
font->ascent = MAX (font->ascent, font_structs[i]->ascent);
font->descent = MAX (font->descent, font_structs[i]->descent);
}
+
+ private->names = NULL;
+ gdk_font_hash_insert (GDK_FONT_FONTSET, font, fontset_name);
+
+ return font;
}
- return font;
}
GdkFont*
@@ -141,14 +213,16 @@ void
gdk_font_unref (GdkFont *font)
{
GdkFontPrivate *private;
+ private = (GdkFontPrivate*) font;
g_return_if_fail (font != NULL);
-
- private = (GdkFontPrivate*) font;
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
{
+ gdk_font_hash_remove (font->type, font);
+
switch (font->type)
{
case GDK_FONT_FONT:
@@ -205,8 +279,12 @@ gdk_font_equal (const GdkFont *fonta,
}
else if (fonta->type == GDK_FONT_FONTSET && fontb->type == GDK_FONT_FONTSET)
{
- /* how to compare two fontsets ?? by basename or XFontSet ?? */
- return (((XFontSet) privatea->xfont) == ((XFontSet) privateb->xfont));
+ gchar *namea, *nameb;
+
+ namea = XBaseFontNameListOfFontSet((XFontSet) privatea->xfont);
+ nameb = XBaseFontNameListOfFontSet((XFontSet) privateb->xfont);
+
+ return (strcmp(namea, nameb) == 0);
}
else
/* fontset != font */
@@ -578,7 +656,20 @@ gdk_text_extents_wc (GdkFont *font,
}
case GDK_FONT_FONTSET:
fontset = (XFontSet) private->xfont;
- XwcTextExtents (fontset, text, text_length, &ink, &logical);
+
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ XwcTextExtents (fontset, (wchar_t *)text, text_length, &ink, &logical);
+ else
+ {
+ wchar_t *text_wchar;
+ gint i;
+
+ text_wchar = g_new (wchar_t, text_length);
+ for (i = 0; i < text_length; i++)
+ text_wchar[i] = text[i];
+ XwcTextExtents (fontset, text_wchar, text_length, &ink, &logical);
+ g_free (text_wchar);
+ }
if (lbearing)
*lbearing = ink.x;
if (rbearing)
@@ -652,7 +743,7 @@ gdk_text_measure (GdkFont *font,
case GDK_FONT_FONTSET:
fontset = (XFontSet) private->xfont;
XmbTextExtents (fontset, text, text_length, &ink, &log);
- width = log.width;
+ width = ink.x + ink.width;
break;
default:
width = 0;
diff --git a/gdk/x11/gdkglobals-x11.c b/gdk/x11/gdkglobals-x11.c
index 7a9307b2af..ae6c066f96 100644
--- a/gdk/x11/gdkglobals-x11.c
+++ b/gdk/x11/gdkglobals-x11.c
@@ -57,7 +57,7 @@ GdkDndGlobals gdk_dnd = {None,None,None,
{0,0}, {0,0},
{0,0,0,0}, NULL, None, 0};
gchar *gdk_progclass = NULL;
-gint gdk_error_code;
+gint gdk_error_code = 0;
gint gdk_error_warnings = TRUE;
gint gdk_null_window_warnings = TRUE;
GList *gdk_default_filters = NULL;
diff --git a/gdk/x11/gdkim-x11.c b/gdk/x11/gdkim-x11.c
index c06afc0577..e453925093 100644
--- a/gdk/x11/gdkim-x11.c
+++ b/gdk/x11/gdkim-x11.c
@@ -386,7 +386,7 @@ gdk_im_real_open (void)
destroy_cb.callback = gdk_im_destroy_cb;
destroy_cb.client_data = NULL;
- if (NULL != XSetIMValues (xim_im, XNDestroyCallback, &destroy_cb, NULL))
+ if (NULL != (void *) XSetIMValues (xim_im, XNDestroyCallback, &destroy_cb, NULL))
GDK_NOTE (XIM, g_warning ("Could not set destroy callback to IM. Be careful to not destroy your input method."));
#endif
@@ -469,7 +469,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_PREEDIT_AREA_REQ;
preedit_area.x = attr->preedit_area.x;
- preedit_area.y = attr->preedit_area.x;
+ preedit_area.y = attr->preedit_area.y;
preedit_area.width = attr->preedit_area.width;
preedit_area.height = attr->preedit_area.height;
@@ -484,7 +484,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_PREEDIT_POSITION_REQ;
preedit_area.x = attr->preedit_area.x;
- preedit_area.y = attr->preedit_area.x;
+ preedit_area.y = attr->preedit_area.y;
preedit_area.width = attr->preedit_area.width;
preedit_area.height = attr->preedit_area.height;
@@ -506,7 +506,7 @@ gdk_ic_real_new (GdkIC *ic)
mask |= GDK_IC_STATUS_AREA_REQ;
status_area.x = attr->status_area.x;
- status_area.y = attr->status_area.x;
+ status_area.y = attr->status_area.y;
status_area.width = attr->status_area.width;
status_area.height = attr->status_area.height;
@@ -518,6 +518,12 @@ gdk_ic_real_new (GdkIC *ic)
break;
}
+ /* We have to ensure that the client window is actually created on
+ * the X server, or XCreateIC fails because the XIM server can't get
+ * information about the client window.
+ */
+ gdk_flush();
+
if (preedit_attr != NULL && status_attr != NULL)
private->xic = XCreateIC (xim_im,
XNInputStyle,
@@ -871,7 +877,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNFontSet;
arg->value = (gpointer) GDK_FONT_XFONT(attr->status_fontset);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_FONTSET;
}
@@ -887,7 +893,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNArea;
arg->value = (gpointer) &rect;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_AREA;
}
@@ -903,7 +909,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNArea;
arg->value = (gpointer) &rect;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_AREA_NEEDED;
else
private->mask &= ~GDK_IC_STATUS_AREA_NEEDED;
@@ -914,7 +920,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNForeground;
arg->value = (gpointer) attr->status_foreground.pixel;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_FOREGROUND;
}
@@ -923,7 +929,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNBackground;
arg->value = (gpointer) attr->status_background.pixel;
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_BACKGROUND;
}
@@ -932,7 +938,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNBackgroundPixmap;
arg->value = (gpointer) GDK_WINDOW_XWINDOW(attr->status_pixmap);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_PIXMAP;
}
@@ -941,7 +947,7 @@ gdk_ic_real_set_attr (GdkIC *ic,
arg->name = XNColormap;
arg->value = (gpointer) GDK_COLORMAP_XCOLORMAP(attr->status_colormap);
- if (XSetICValues (xic, XNPreeditAttributes, arg, NULL))
+ if (XSetICValues (xic, XNStatusAttributes, arg, NULL))
error |= GDK_IC_STATUS_COLORMAP;
}
@@ -1565,8 +1571,10 @@ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
!= Success)
{
/* InvalidChar */
+ XFree(tpr.value);
return -1;
}
+ XFree(tpr.value);
if (num_wstrs == 0)
return 0;
wstr_src = wstrs[0];
diff --git a/gdk/x11/gdkimage-x11.c b/gdk/x11/gdkimage-x11.c
index d2e66803d1..7dae0d92ee 100644
--- a/gdk/x11/gdkimage-x11.c
+++ b/gdk/x11/gdkimage-x11.c
@@ -251,14 +251,12 @@ gdk_image_new (GdkImageType type,
return NULL;
}
- gdk_error_code = 0;
- gdk_error_warnings = 0;
+ gdk_error_trap_push ();
XShmAttach (private->xdisplay, x_shm_info);
XSync (private->xdisplay, False);
- gdk_error_warnings = 1;
- if (gdk_error_code == -1)
+ if (gdk_error_trap_pop ())
{
/* this is the common failure case so omit warning */
XDestroyImage (private->ximage);
@@ -269,6 +267,7 @@ gdk_image_new (GdkImageType type,
g_free (image);
gdk_use_xshm = False;
+
return NULL;
}
@@ -315,22 +314,7 @@ gdk_image_new (GdkImageType type,
image->byte_order = private->ximage->byte_order;
image->mem = private->ximage->data;
image->bpl = private->ximage->bytes_per_line;
-
- switch (private->ximage->bits_per_pixel)
- {
- case 8:
- image->bpp = 1;
- break;
- case 16:
- image->bpp = 2;
- break;
- case 24:
- image->bpp = 3;
- break;
- case 32:
- image->bpp = 4;
- break;
- }
+ image->bpp = (private->ximage->bits_per_pixel + 7) / 8;
}
}
diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c
index e907f04adb..de1d55ea8c 100644
--- a/gdk/x11/gdkmain-x11.c
+++ b/gdk/x11/gdkmain-x11.c
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <string.h>
#include <limits.h>
+#include <errno.h>
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
@@ -48,6 +49,7 @@
#include "gdkinput.h"
#include "gdkx.h"
#include "gdki18n.h"
+#include "gdkkeysyms.h"
#ifndef X_GETTIMEOFDAY
#define X_GETTIMEOFDAY(tv) gettimeofday (tv, NULL)
@@ -333,6 +335,7 @@ gdk_init_check (int *argc,
gdk_im_set_best_style (GDK_IM_PREEDIT_POSITION);
else if (strcmp ("callbacks", (*argv)[i]) == 0)
gdk_im_set_best_style (GDK_IM_PREEDIT_CALLBACKS);
+ (*argv)[i] = NULL;
}
}
else if (strcmp ("--xim-status", (*argv)[i]) == 0)
@@ -348,6 +351,7 @@ gdk_init_check (int *argc,
gdk_im_set_best_style (GDK_IM_STATUS_AREA);
else if (strcmp ("callbacks", (*argv)[i]) == 0)
gdk_im_set_best_style (GDK_IM_STATUS_CALLBACKS);
+ (*argv)[i] = NULL;
}
}
#endif
@@ -406,9 +410,9 @@ gdk_init_check (int *argc,
g_free(argv_orig[i]);
g_free(argv_orig);
- gdk_wm_delete_window = XInternAtom (gdk_display, "WM_DELETE_WINDOW", True);
- gdk_wm_take_focus = XInternAtom (gdk_display, "WM_TAKE_FOCUS", True);
- gdk_wm_protocols = XInternAtom (gdk_display, "WM_PROTOCOLS", True);
+ gdk_wm_delete_window = XInternAtom (gdk_display, "WM_DELETE_WINDOW", False);
+ gdk_wm_take_focus = XInternAtom (gdk_display, "WM_TAKE_FOCUS", False);
+ gdk_wm_protocols = XInternAtom (gdk_display, "WM_PROTOCOLS", False);
gdk_wm_window_protocols[0] = gdk_wm_delete_window;
gdk_wm_window_protocols[1] = gdk_wm_take_focus;
gdk_selection_property = XInternAtom (gdk_display, "GDK_SELECTION", False);
@@ -1032,20 +1036,35 @@ static int
gdk_x_error (Display *display,
XErrorEvent *error)
{
- char buf[64];
-
- if (gdk_error_warnings)
+ if (error->error_code)
{
- XGetErrorText (display, error->error_code, buf, 63);
- g_error ("%s\n serial %ld error_code %d request_code %d minor_code %d\n",
- buf,
- error->serial,
- error->error_code,
- error->request_code,
- error->minor_code);
+ if (gdk_error_warnings)
+ {
+ char buf[64];
+
+ XGetErrorText (display, error->error_code, buf, 63);
+
+#ifdef G_ENABLE_DEBUG
+ g_error ("%s\n serial %ld error_code %d request_code %d minor_code %d\n",
+ buf,
+ error->serial,
+ error->error_code,
+ error->request_code,
+ error->minor_code);
+#else /* !G_ENABLE_DEBUG */
+ fprintf (stderr, "Gdk-ERROR **: %s\n serial %ld error_code %d request_code %d minor_code %d\n",
+ buf,
+ error->serial,
+ error->error_code,
+ error->request_code,
+ error->minor_code);
+
+ exit(1);
+#endif /* G_ENABLE_DEBUG */
+ }
+ gdk_error_code = error->error_code;
}
- gdk_error_code = -1;
return 0;
}
@@ -1071,8 +1090,27 @@ gdk_x_error (Display *display,
static int
gdk_x_io_error (Display *display)
{
- g_error ("an x io error occurred");
- return 0;
+ /* This is basically modelled after the code in XLib. We need
+ * an explicit error handler here, so we can disable our atexit()
+ * which would otherwise cause a nice segfault.
+ * We fprintf(stderr, instead of g_warning() because g_warning()
+ * could possibly be redirected to a dialog
+ */
+ if (errno == EPIPE)
+ {
+ fprintf (stderr, "Gdk-ERROR **: X connection to %s broken (explicit kill or server shutdown).\n", gdk_display ? DisplayString (gdk_display) : gdk_get_display());
+ }
+ else
+ {
+ fprintf (stderr, "Gdk-ERROR **: Fatal IO error %d (%s) on X server %s.\n",
+ errno, g_strerror (errno),
+ gdk_display ? DisplayString (gdk_display) : gdk_get_display());
+ }
+
+ /* Disable the atexit shutdown for GDK */
+ gdk_initialized = 0;
+
+ exit(1);
}
gchar *
@@ -1104,7 +1142,7 @@ gdk_error_trap_push (void)
}
else
{
- node = g_slist_alloc();
+ node = g_slist_alloc ();
node->data = g_new (GdkErrorTrap, 1);
}
@@ -1166,7 +1204,7 @@ gdk_send_xevent (Window window, gboolean propagate, glong event_mask,
XSync (gdk_display, False);
gdk_error_warnings = old_warnings;
- return result && (gdk_error_code != -1);
+ return result && !gdk_error_code;
}
#ifndef HAVE_XCONVERTCASE
diff --git a/gdk/x11/gdkpixmap-x11.c b/gdk/x11/gdkpixmap-x11.c
index 22e5a07867..6fc47e316e 100644
--- a/gdk/x11/gdkpixmap-x11.c
+++ b/gdk/x11/gdkpixmap-x11.c
@@ -518,7 +518,7 @@ _gdk_pixmap_create_from_xpm (GdkWindow *window,
color_name = gdk_pixmap_extract_color (buffer);
- if (color_name == NULL ||
+ if (color_name == NULL || g_strcasecmp (color_name, "None") == 0 ||
gdk_color_parse (color_name, &color->color) == FALSE)
{
color->color = *transparent_color;
@@ -817,7 +817,8 @@ void
gdk_pixmap_unref (GdkPixmap *pixmap)
{
GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap;
- g_return_if_fail(pixmap != NULL);
+ g_return_if_fail (pixmap != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
diff --git a/gdk/x11/gdkproperty-x11.c b/gdk/x11/gdkproperty-x11.c
index 5663352460..7973d8fc7e 100644
--- a/gdk/x11/gdkproperty-x11.c
+++ b/gdk/x11/gdkproperty-x11.c
@@ -45,15 +45,16 @@ gdk_atom_intern (const gchar *atom_name,
{
retval = XInternAtom (gdk_display, atom_name, only_if_exists);
- g_hash_table_insert (atom_hash,
- g_strdup (atom_name),
- GUINT_TO_POINTER (retval));
+ if (retval != None)
+ g_hash_table_insert (atom_hash,
+ g_strdup (atom_name),
+ GUINT_TO_POINTER (retval));
}
return retval;
}
-gchar *
+gchar*
gdk_atom_name (GdkAtom atom)
{
gchar *t;
@@ -69,7 +70,7 @@ gdk_atom_name (GdkAtom atom)
t = XGetAtomName (gdk_display, atom);
gdk_error_warnings = old_error_warnings;
- if (gdk_error_code == -1)
+ if (gdk_error_code)
{
if (t)
XFree (t);
@@ -162,10 +163,10 @@ gdk_property_get (GdkWindow *window,
ret_length = ret_nitems;
break;
case 16:
- ret_length = 2 * ret_nitems;
+ ret_length = sizeof(short) * ret_nitems;
break;
case 32:
- ret_length = 4 * ret_nitems;
+ ret_length = sizeof(long) * ret_nitems;
break;
default:
g_warning ("unknown property return format: %d", ret_format);
diff --git a/gdk/x11/gdkselection-x11.c b/gdk/x11/gdkselection-x11.c
index 64a18d0424..3ee2e43b3d 100644
--- a/gdk/x11/gdkselection-x11.c
+++ b/gdk/x11/gdkselection-x11.c
@@ -105,11 +105,11 @@ gdk_selection_property_get (GdkWindow *requestor,
gulong length;
GdkAtom prop_type;
gint prop_format;
- guchar *t;
+ guchar *t = NULL;
g_return_val_if_fail (requestor != NULL, 0);
- /* If retrieved chunks are typically small, (and the ICCM says the
+ /* If retrieved chunks are typically small, (and the ICCCM says the
should be) it would be a win to try first with a buffer of
moderate length, to avoid two round trips to the server */
@@ -133,11 +133,11 @@ gdk_selection_property_get (GdkWindow *requestor,
*data = NULL;
return 0;
}
-
+
if (t)
{
- t = NULL;
XFree (t);
+ t = NULL;
}
/* Add on an extra byte to handle null termination. X guarantees
@@ -188,7 +188,7 @@ gdk_selection_send_notify (guint32 requestor,
xevent.property = property;
xevent.time = time;
- XSendEvent (gdk_display, requestor, False, NoEventMask, (XEvent*) &xevent);
+ gdk_send_xevent (requestor, False, NoEventMask, (XEvent*) &xevent);
}
gint
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 93fd0a4a7d..47b200c3e4 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -34,17 +34,9 @@
#include "gdkprivate.h"
#include "MwmUtil.h"
-#if HAVE_CONFIG_H
-# include <config.h>
-# if STDC_HEADERS
-# include <stdlib.h>
-# include <stdio.h>
-# include <string.h>
-# endif
-#else
-# include <stdlib.h>
-# include <stdio.h>
-#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
#ifdef HAVE_SHAPE_EXT
@@ -707,10 +699,10 @@ gdk_window_destroy_notify (GdkWindow *window)
if (!private->destroyed)
{
- if (private->window_type == GDK_WINDOW_FOREIGN)
- gdk_window_internal_destroy (window, FALSE, FALSE);
- else
+ if (private->window_type != GDK_WINDOW_FOREIGN)
g_warning ("GdkWindow %#lx unexpectedly destroyed", private->xwindow);
+
+ gdk_window_internal_destroy (window, FALSE, FALSE);
}
gdk_xid_table_remove (private->xwindow);
@@ -732,6 +724,7 @@ gdk_window_unref (GdkWindow *window)
{
GdkWindowPrivate *private = (GdkWindowPrivate *)window;
g_return_if_fail (window != NULL);
+ g_return_if_fail (private->ref_count > 0);
private->ref_count -= 1;
if (private->ref_count == 0)
@@ -1089,8 +1082,10 @@ gdk_window_set_hints (GdkWindow *window,
size_hints.max_height = max_height;
}
- if (flags)
- XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
+ /* FIXME: Would it be better to delete this property of
+ * flags == 0? It would save space on the server
+ */
+ XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
}
void
@@ -1110,7 +1105,15 @@ gdk_window_set_geometry_hints (GdkWindow *window,
size_hints.flags = 0;
if (geom_mask & GDK_HINT_POS)
- size_hints.flags |= PPosition;
+ {
+ size_hints.flags |= PPosition;
+ /* We need to initialize the following obsolete fields because KWM
+ * apparently uses these fields if they are non-zero.
+ * #@#!#!$!.
+ */
+ size_hints.x = 0;
+ size_hints.y = 0;
+ }
if (geom_mask & GDK_HINT_MIN_SIZE)
{
@@ -1145,28 +1148,30 @@ gdk_window_set_geometry_hints (GdkWindow *window,
size_hints.flags |= PAspect;
if (geometry->min_aspect <= 1)
{
- size_hints.min_aspect.x = G_MAXINT * geometry->min_aspect;
- size_hints.min_aspect.y = G_MAXINT;
+ size_hints.min_aspect.x = 65536 * geometry->min_aspect;
+ size_hints.min_aspect.y = 65536;
}
else
{
- size_hints.min_aspect.x = G_MAXINT;
- size_hints.min_aspect.y = G_MAXINT / geometry->min_aspect;;
+ size_hints.min_aspect.x = 65536;
+ size_hints.min_aspect.y = 65536 / geometry->min_aspect;;
}
if (geometry->max_aspect <= 1)
{
- size_hints.max_aspect.x = G_MAXINT * geometry->max_aspect;
- size_hints.max_aspect.y = G_MAXINT;
+ size_hints.max_aspect.x = 65536 * geometry->max_aspect;
+ size_hints.max_aspect.y = 65536;
}
else
{
- size_hints.max_aspect.x = G_MAXINT;
- size_hints.max_aspect.y = G_MAXINT / geometry->max_aspect;;
+ size_hints.max_aspect.x = 65536;
+ size_hints.max_aspect.y = 65536 / geometry->max_aspect;;
}
}
-
- if (geom_mask)
- XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
+
+ /* FIXME: Would it be better to delete this property of
+ * geom_mask == 0? It would save space on the server
+ */
+ XSetWMNormalHints (private->xdisplay, private->xwindow, &size_hints);
}
void
diff --git a/gtk-config.in b/gtk-config.in
index 846f826780..399d77efe5 100644
--- a/gtk-config.in
+++ b/gtk-config.in
@@ -56,7 +56,7 @@ while test $# -gt 0; do
echo_exec_prefix=yes
;;
--version)
- echo @GTK_VERSION@
+ echo @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@
;;
--cflags)
echo_cflags=yes
diff --git a/gtk/gtkfeatures.h.in b/gtk/gtkfeatures.h.in
new file mode 100644
index 0000000000..9fee280166
--- /dev/null
+++ b/gtk/gtkfeatures.h.in
@@ -0,0 +1,123 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#ifndef __GTK_FEATURES_H__
+#define __GTK_FEATURES_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/* compile time version
+ */
+#define GTK_MAJOR_VERSION (@GTK_MAJOR_VERSION@)
+#define GTK_MINOR_VERSION (@GTK_MINOR_VERSION@)
+#define GTK_MICRO_VERSION (@GTK_MICRO_VERSION@)
+#define GTK_BINARY_AGE (@GTK_BINARY_AGE@)
+#define GTK_INTERFACE_AGE (@GTK_INTERFACE_AGE@)
+#define GTK_CHECK_VERSION(major,minor,micro) \
+ (GTK_MAJOR_VERSION > (major) || \
+ (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION > (minor)) || \
+ (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION == (minor) && \
+ GTK_MICRO_VERSION >= (micro)))
+
+
+/* new gtk_container_set_focus_[hv]adjustment()
+ */
+#define GTK_HAVE_CONTAINER_FOCUS_ADJUSTMENTS 1-0-1
+
+/* newly exported gtk_signal_init()
+ * new gtk_signal_n_emissions*()
+ * "signal-name" is now an alias for "signal_name"
+ * new gtk_signal_emitv*()
+ */
+#define GTK_HAVE_SIGNAL_INIT 1-0-2
+
+/* Gtk+ 1.1.0 version tag.
+ * - new gtk_rc_set_image_loader () to install custom image loaders for rc
+ * files.
+ * - GtkAccel groups replaced GtkAcceleratorTables
+ * - Gdk supports full crossing event now.
+ * - Buttons featur relief styles now.
+ * - gdk_rgb_*() functions are in place.
+ * - stringified enum values can be queried for enum types now.
+ * - new key binding system is in place (GtkBindingSet).
+ * - simple algorithm for pattern matching is exported now (GtkPatternSpec).
+ */
+#define GTK_HAVE_FEATURES_1_1_0 1-1-0
+
+/* Gtk+ 1.1.2 version tag
+ * - ctree function name changes
+ */
+#define GTK_HAVE_FEATURES_1_1_2 1-1-2
+
+/* Gtk+ 1.1.4 version tag
+ * - clist v/hscrollbar -> v/hadjustment changes
+ */
+#define GTK_HAVE_FEATURES_1_1_4 1-1-4
+
+/* Gtk+ 1.1.5 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_5 1-1-5
+
+/* Gtk+ 1.1.6 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_6 1-1-6
+
+/* Gtk+ 1.1.7 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_7 1-1-7
+
+/* Gtk+ 1.1.8 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_8 1-1-8
+
+/* Gtk+ 1.1.9 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_9 1-1-9
+
+/* Gtk+ 1.1.10 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_10 1-1-10
+
+/* Gtk+ 1.1.11 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_11 1-1-11
+
+/* Gtk+ 1.1.12 version tag
+ */
+#define GTK_HAVE_FEATURES_1_1_12 1-1-12
+
+/* Gtk+ 1.1.13 version tag
+ * gtk_toggle_button_set_state name changes
+ */
+#define GTK_HAVE_FEATURES_1_1_13 1-1-13
+
+/* Gtk+ 1.1.14 version tag
+ * working gtk layout, etc
+ */
+#define GTK_HAVE_FEATURES_1_1_14 1-1-14
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __GTK_FEATURES_H__ */
diff --git a/ltconfig b/ltconfig
index a362c48d31..65ec6f65d0 100755
--- a/ltconfig
+++ b/ltconfig
@@ -169,8 +169,8 @@ progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
# Constants:
PROGRAM=ltconfig
PACKAGE=libtool
-VERSION=1.3.2
-TIMESTAMP=" (1.385.2.150 1999/05/26 00:28:32)"
+VERSION=1.3.3
+TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)"
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5'
rm="rm -f"
@@ -181,7 +181,8 @@ help="Try \`$progname --help' for more information."
default_ofile=libtool
can_build_shared=yes
enable_shared=yes
-# All known linkers require a `.a' archive for static linking.
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
enable_static=yes
enable_fast_install=yes
enable_dlopen=unknown
@@ -201,6 +202,7 @@ need_locks=yes
ac_ext=c
objext=o
libext=a
+exeext=
cache_file=
old_AR="$AR"
@@ -576,7 +578,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
# Now see if the compiler is really GCC.
with_gcc=no
echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
- echo "$progname:579: checking whether we are using GNU C" >&5
+ echo "$progname:581: checking whether we are using GNU C" >&5
$rm conftest.c
cat > conftest.c <<EOF
@@ -584,7 +586,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
yes;
#endif
EOF
- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
with_gcc=yes
fi
$rm conftest.c
@@ -598,8 +600,8 @@ compiler="$2"
echo $ac_n "checking for object suffix... $ac_c" 1>&6
$rm conftest*
echo 'int i = 1;' > conftest.c
-echo "$progname:601: checking for object suffix" >& 5
-if { (eval echo $progname:602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+echo "$progname:603: checking for object suffix" >& 5
+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
# Append any warnings to the config.log.
cat conftest.err 1>&5
@@ -617,6 +619,38 @@ fi
$rm conftest*
echo "$ac_t$objext" 1>&6
+echo $ac_n "checking for executable suffix... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_cv_exeext="no"
+ $rm conftest*
+ echo 'main () { return 0; }' > conftest.c
+ echo "$progname:629: checking for executable suffix" >& 5
+ if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
+ # Append any warnings to the config.log.
+ cat conftest.err 1>&5
+
+ for ac_file in conftest.*; do
+ case $ac_file in
+ *.c | *.err | *.$objext ) ;;
+ *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
+ esac
+ done
+ else
+ cat conftest.err 1>&5
+ echo "$progname: failed program was:" >&5
+ cat conftest.c >&5
+ fi
+ $rm conftest*
+fi
+if test "X$ac_cv_exeext" = Xno; then
+ exeext=""
+else
+ exeext="$ac_cv_exeext"
+fi
+echo "$ac_t$ac_cv_exeext" 1>&6
+
echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
pic_flag=
special_shlib_compile_flags=
@@ -739,8 +773,8 @@ if test -n "$pic_flag"; then
echo "int some_variable = 0;" > conftest.c
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $pic_flag -DPIC"
- echo "$progname:742: checking if $compiler PIC flag $pic_flag works" >&5
- if { (eval echo $progname:743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+ echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
+ if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
# Append any warnings to the config.log.
cat conftest.err 1>&5
@@ -792,8 +826,8 @@ mkdir out
chmod -w .
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -o out/conftest2.o"
-echo "$progname:795: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
+if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -825,8 +859,8 @@ if test x"$compiler_c_o" = x"yes"; then
echo "int some_variable = 0;" > conftest.c
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -c -o conftest.lo"
- echo "$progname:828: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
+ echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
+if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -877,8 +911,8 @@ if test "$with_gcc" = yes; then
echo "int some_variable = 0;" > conftest.c
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
- echo "$progname:880: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- if { (eval echo $progname:881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+ echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+ if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -921,8 +955,8 @@ $rm conftest*
echo 'main(){return(0);}' > conftest.c
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:924: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
echo "$ac_t$link_static_flag" 1>&6
else
echo "$ac_t"none 1>&6
@@ -954,7 +988,7 @@ if test -z "$LD"; then
if test "$with_gcc" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
- echo "$progname:957: checking for ld used by GCC" >&5
+ echo "$progname:991: checking for ld used by GCC" >&5
ac_prog=`($CC -print-prog-name=ld) 2>&5`
case "$ac_prog" in
# Accept absolute paths.
@@ -978,10 +1012,10 @@ if test -z "$LD"; then
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld... $ac_c" 1>&6
- echo "$progname:981: checking for GNU ld" >&5
+ echo "$progname:1015: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
- echo "$progname:984: checking for non-GNU ld" >&5
+ echo "$progname:1018: checking for non-GNU ld" >&5
fi
if test -z "$LD"; then
@@ -1047,7 +1081,7 @@ hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
runpath_var=
always_export_symbols=no
-export_symbols_cmds='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
# include_expsyms should be a list of space-separated symbols to be *always*
# included in the symbol list
include_expsyms=
@@ -1130,10 +1164,9 @@ EOF
# Extract the symbol export list from an `--export-all' def file,
# then regenerate the def file from the symbol export list, so that
# the compiled dll only exports the symbol export list.
- export_symbols_cmds='rm -f $objdir/$soname-ltdll.c~
- sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- (cd $objdir && $CC -c $soname-ltdll.c)~
- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs~
+ export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~
sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
@@ -1142,13 +1175,15 @@ EOF
echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
_lt_hint=`expr 1 + \$_lt_hint`;
done~
+ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
$CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
$DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
$CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
$DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
$CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
+ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
;;
netbsd*)
@@ -1554,11 +1589,11 @@ void nm_test_func(){}
main(){nm_test_var='a';nm_test_func();return(0);}
EOF
- echo "$progname:1557: checking if global_symbol_pipe works" >&5
- if { (eval echo $progname:1558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+ echo "$progname:1592: checking if global_symbol_pipe works" >&5
+ if { (eval echo $progname:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
# Now try to grab the symbols.
nlist=conftest.nm
- if { echo "$progname:1561: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+ if { echo "$progname:1596: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
@@ -1610,7 +1645,7 @@ EOF
save_CFLAGS="$CFLAGS"
LIBS="conftstm.$objext"
CFLAGS="$CFLAGS$no_builtin_flag"
- if { (eval echo $progname:1613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ if { (eval echo $progname:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
pipe_works=yes
else
echo "$progname: failed program was:" >&5
@@ -1756,7 +1791,7 @@ bsdi4*)
soname_spec='${libname}.so'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method='file_magic ELF 32-bit LSB shared object'
+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
file_magic_cmd=/usr/bin/file
file_magic_test_file=/shlib/libc.so
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -1768,6 +1803,8 @@ bsdi4*)
cygwin* | mingw*)
version_type=windows
+ need_version=no
+ need_lib_prefix=no
if test "$with_gcc" = yes; then
library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
else
@@ -1776,7 +1813,6 @@ cygwin* | mingw*)
dynamic_linker='Win32 ld.exe'
deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
file_magic_cmd='${OBJDUMP} -f'
- need_lib_prefix=no
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
lt_cv_dlopen="LoadLibrary"
@@ -1807,11 +1843,22 @@ freebsd*)
esac
finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
+ case "$host_os" in
+ freebsd2* | freebsd3.[01]*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ ;;
+ esac
;;
gnu*)
version_type=linux
- library_names_spec='${libname}${release}.so$versuffix ${libname}.so'
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+ soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
;;
@@ -2120,7 +2167,7 @@ else
if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
lt_cv_dlopen=no lt_cv_dlopen_libs=
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2123: checking for dlopen in -ldl" >&5
+echo "$progname:2170: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2128,7 +2175,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2131 "ltconfig"
+#line 2178 "ltconfig"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
@@ -2138,7 +2185,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo $progname:2141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2157,12 +2204,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:2160: checking for dlopen" >&5
+echo "$progname:2207: checking for dlopen" >&5
if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2165 "ltconfig"
+#line 2212 "ltconfig"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char dlopen(); below. */
#include <assert.h>
@@ -2184,7 +2231,7 @@ dlopen();
; return 0; }
EOF
-if { (eval echo $progname:2187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_dlopen=yes"
else
@@ -2201,7 +2248,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2204: checking for dld_link in -ldld" >&5
+echo "$progname:2251: checking for dld_link in -ldld" >&5
ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2209,7 +2256,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2212 "ltconfig"
+#line 2259 "ltconfig"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
@@ -2219,7 +2266,7 @@ int main() {
dld_link()
; return 0; }
EOF
-if { (eval echo $progname:2222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2238,12 +2285,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2241: checking for shl_load" >&5
+echo "$progname:2288: checking for shl_load" >&5
if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2246 "ltconfig"
+#line 2293 "ltconfig"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shl_load(); below. */
#include <assert.h>
@@ -2265,7 +2312,7 @@ shl_load();
; return 0; }
EOF
-if { (eval echo $progname:2268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_shl_load=yes"
else
@@ -2283,7 +2330,7 @@ if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "$progname:2286: checking for shl_load in -ldld" >&5
+echo "$progname:2333: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2291,7 +2338,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2294 "ltconfig"
+#line 2341 "ltconfig"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2302,7 +2349,7 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo $progname:2305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2345,17 +2392,17 @@ fi
for ac_hdr in dlfcn.h; do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "$progname:2348: checking for $ac_hdr" >&5
+echo "$progname:2395: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2353 "ltconfig"
+#line 2400 "ltconfig"
#include <$ac_hdr>
int fnord = 0;
EOF
ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo $progname:2358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo $progname:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2383,7 +2430,7 @@ done
LIBS="$lt_cv_dlopen_libs $LIBS"
echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2386: checking whether a program can dlopen itself" >&5
+echo "$progname:2433: checking whether a program can dlopen itself" >&5
if test "${lt_cv_dlopen_self+set}" = set; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2391,7 +2438,7 @@ else
lt_cv_dlopen_self=cross
else
cat > conftest.c <<EOF
-#line 2394 "ltconfig"
+#line 2441 "ltconfig"
#if HAVE_DLFCN_H
#include <dlfcn.h>
@@ -2434,10 +2481,10 @@ else
fnord() { int i=42;}
main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) exit(0); } exit(1); }
+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
EOF
-if { (eval echo $progname:2440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
lt_cv_dlopen_self=yes
else
@@ -2456,7 +2503,7 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6
if test "$lt_cv_dlopen_self" = yes; then
LDFLAGS="$LDFLAGS $link_static_flag"
echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2459: checking whether a statically linked program can dlopen itself" >&5
+echo "$progname:2506: checking whether a statically linked program can dlopen itself" >&5
if test "${lt_cv_dlopen_self_static+set}" = set; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2464,7 +2511,7 @@ else
lt_cv_dlopen_self_static=cross
else
cat > conftest.c <<EOF
-#line 2467 "ltconfig"
+#line 2514 "ltconfig"
#if HAVE_DLFCN_H
#include <dlfcn.h>
@@ -2507,10 +2554,10 @@ else
fnord() { int i=42;}
main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) exit(0); } exit(1); }
+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
EOF
-if { (eval echo $progname:2513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
lt_cv_dlopen_self_static=yes
else
@@ -2729,6 +2776,9 @@ objext="$objext"
# Old archive suffix (normally "a").
libext="$libext"
+# Executable file suffix (normally "").
+exeext="$exeext"
+
# Additional compiler flags for building library objects.
pic_flag=$pic_flag
@@ -2897,7 +2947,7 @@ EOF
esac
# Append the ltmain.sh script.
- cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
chmod +x "$ofile"
;;
diff --git a/ltmain.sh b/ltmain.sh
index 7974c33c94..ae10cad021 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -54,8 +54,8 @@ modename="$progname"
# Constants.
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.3.2
-TIMESTAMP=" (1.385.2.150 1999/05/26 00:28:32)"
+VERSION=1.3.3
+TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)"
default_mode=
help="Try \`$progname --help' for more information."
@@ -69,7 +69,7 @@ rm="rm -f"
Xsed='sed -e 1s/^X//'
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
SP2NL='tr \040 \012'
-NL2SP='tr \012 \040'
+NL2SP='tr \015\012 \040\040'
# NLS nuisances.
# Only set LANG and LC_ALL to C if already set.
@@ -638,6 +638,12 @@ compiler."
# #undef WIN32_LEAN_AND_MEAN
# #include <stdio.h>
#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
# #ifdef __cplusplus
# extern "C" {
# #endif
@@ -646,8 +652,10 @@ compiler."
# }
# #endif
#
+# #ifdef __CYGWIN__
# #include <cygwin/cygwin_dll.h>
# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
# HINSTANCE __hDllInstance_base;
#
# BOOL APIENTRY
@@ -790,9 +798,6 @@ compiler."
# }
# /* impgen.c ends here */
;;
- *-*-beos*)
- allow_undefined=no
- ;;
*)
allow_undefined=yes
;;
@@ -896,6 +901,14 @@ compiler."
fi
case "$arg" in
*.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
self)
if test "$prev" = dlprefiles; then
dlself=yes
@@ -1225,7 +1238,7 @@ compiler."
fi
if test -n "$dependency_libs"; then
- # Extract -R from dependency_libs
+ # Extract -R and -L from dependency_libs
temp_deplibs=
for deplib in $dependency_libs; do
case "$deplib" in
@@ -1237,7 +1250,13 @@ compiler."
-L*) case "$compile_command $temp_deplibs " in
*" $deplib "*) ;;
*) temp_deplibs="$temp_deplibs $deplib";;
- esac;;
+ esac
+ temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ case " $lib_search_path " in
+ *" $temp_dir "*) ;;
+ *) lib_search_path="$lib_search_path $temp_dir";;
+ esac
+ ;;
*) temp_deplibs="$temp_deplibs $deplib";;
esac
done
@@ -2040,51 +2059,6 @@ EOF
# Use standard objects if they are pic
test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- if test -n "$whole_archive_flag_spec"; then
- if test -n "$convenience"; then
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- fi
- else
- gentop="$output_objdir/${outputname}x"
- $show "${rm}r $gentop"
- $run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
- status=$?
- if test $status -ne 0 && test ! -d "$gentop"; then
- exit $status
- fi
- generated="$generated $gentop"
-
- for xlib in $convenience; do
- # Extract the objects.
- case "$xlib" in
- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
- *) xabs=`pwd`"/$xlib" ;;
- esac
- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
- xdir="$gentop/$xlib"
-
- $show "${rm}r $xdir"
- $run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
- status=$?
- if test $status -ne 0 && test ! -d "$xdir"; then
- exit $status
- fi
- $show "(cd $xdir && $AR x $xabs)"
- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-
- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
- done
- fi
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
- linkopts="$linkopts $flag"
- fi
-
# Prepare the list of exported symbols
if test -z "$export_symbols"; then
if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
@@ -2112,6 +2086,51 @@ EOF
$run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
fi
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "mkdir $gentop"
+ $run mkdir "$gentop"
+ status=$?
+ if test $status -ne 0 && test ! -d "$gentop"; then
+ exit $status
+ fi
+ generated="$generated $gentop"
+
+ for xlib in $convenience; do
+ # Extract the objects.
+ case "$xlib" in
+ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+ *) xabs=`pwd`"/$xlib" ;;
+ esac
+ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xdir="$gentop/$xlib"
+
+ $show "${rm}r $xdir"
+ $run ${rm}r "$xdir"
+ $show "mkdir $xdir"
+ $run mkdir "$xdir"
+ status=$?
+ if test $status -ne 0 && test ! -d "$xdir"; then
+ exit $status
+ fi
+ $show "(cd $xdir && $AR x $xabs)"
+ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+ libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ done
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linkopts="$linkopts $flag"
+ fi
+
# Do each of the archive commands.
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
eval cmds=\"$archive_expsym_cmds\"
@@ -2190,8 +2209,58 @@ EOF
# Delete the old objects.
$run $rm $obj $libobj
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "mkdir $gentop"
+ $run mkdir "$gentop"
+ status=$?
+ if test $status -ne 0 && test ! -d "$gentop"; then
+ exit $status
+ fi
+ generated="$generated $gentop"
+
+ for xlib in $convenience; do
+ # Extract the objects.
+ case "$xlib" in
+ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+ *) xabs=`pwd`"/$xlib" ;;
+ esac
+ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xdir="$gentop/$xlib"
+
+ $show "${rm}r $xdir"
+ $run ${rm}r "$xdir"
+ $show "mkdir $xdir"
+ $run mkdir "$xdir"
+ status=$?
+ if test $status -ne 0 && test ! -d "$xdir"; then
+ exit $status
+ fi
+ $show "(cd $xdir && $AR x $xabs)"
+ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+ reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ done
+ fi
+ fi
+
# Create the old-style object.
- reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+ reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
output="$obj"
eval cmds=\"$reload_cmds\"
@@ -2204,9 +2273,21 @@ EOF
IFS="$save_ifs"
# Exit if we aren't doing a library object file.
- test -z "$libobj" && exit 0
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit 0
+ fi
if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
# Create an invalid libtool object if no PIC, so that we don't
# accidentally link it into a program.
$show "echo timestamp > $libobj"
@@ -2216,7 +2297,7 @@ EOF
if test -n "$pic_flag"; then
# Only do commands if we really have different PIC objects.
- reload_objs="$libobjs"
+ reload_objs="$libobjs $reload_conv_objs"
output="$libobj"
eval cmds=\"$reload_cmds\"
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
@@ -2234,6 +2315,11 @@ EOF
$run $LN_S $obj $libobj || exit $?
fi
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
exit 0
;;
@@ -2366,7 +2452,7 @@ EOF
fi
dlsyms=
- if test -n "$dlfiles$dlprefiles" || test "$dlself" = yes; then
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
if test -n "$NM" && test -n "$global_symbol_pipe"; then
dlsyms="${outputname}S.c"
else
@@ -2779,7 +2865,7 @@ else
fi"
else
echo >> $output "\
- program='$outputname'
+ program='$outputname$exeext'
progdir=\"\$thisdir/$objdir\"
"
fi
@@ -3204,13 +3290,11 @@ libdir='$install_libdir'\
# Install the shared library and build the symlinks.
$show "$install_prog $dir/$realname $destdir/$realname"
$run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
- test "X$dlname" = "X$realname" && dlname=
if test $# -gt 0; then
# Delete the old symlinks, and create new ones.
for linkname
do
- test "X$dlname" = "X$linkname" && dlname=
if test "$linkname" != "$realname"; then
$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
@@ -3218,12 +3302,6 @@ libdir='$install_libdir'\
done
fi
- if test -n "$dlname"; then
- # Install the dynamically-loadable library.
- $show "$install_prog $dir/$dlname $destdir/$dlname"
- $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
- fi
-
# Do each command in the postinstall commands.
lib="$destdir/$realname"
eval cmds=\"$postinstall_cmds\"
@@ -3655,9 +3733,7 @@ libdir='$install_libdir'\
# Delete the libtool libraries and symlinks.
for n in $library_names; do
rmfiles="$rmfiles $dir/$n"
- test "X$n" = "X$dlname" && dlname=
done
- test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
$show "$rm $rmfiles"
diff --git a/sanity_check b/sanity_check
index 95dddf35ef..84daf9b904 100755
--- a/sanity_check
+++ b/sanity_check
@@ -13,17 +13,6 @@ echo "Checking gtk+-$VERSION.tar.gz..."
tar xfz gtk+-$VERSION.tar.gz
-for file in gtk+.spec docs/gtk-config.1
-do
- echo -n "$file... "
- if [ "x`grep $VERSION gtk+-$VERSION/$file | wc -l | awk -F' ' '{print $1}'`" == "x1" ]; then
- echo "ok"
- else
- echo "failed."
- exit 1
- fi
-done
-
echo -n "README..."
if [ "x`grep $VERSION gtk+-$VERSION/README | wc -l | awk -F' ' '{print $1}'`" == "x4" ]; then
echo "ok"