From 69ac9451a6dac6513f1325122bdf9664040267c9 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Tue, 3 Oct 2000 21:00:49 +0000 Subject: [PATCH] Guard definition of alloca(). glib.h now handles that. 2000-10-03 Tor Lillqvist * config.h.win32: Guard definition of alloca(). glib.h now handles that. * gdk/gdk.def * gtk/gtk.def: Add new entry points. Changes just to make GTK+ build without errors on Win32. No hope of it working in its current state, though...: * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add some functions from the X11 backend, just to make GTK+ build. * gdk/makefile.mingw.in * gtk/makefile.mingw.in: Use correct gdk_pixbuf version number. Add new object files. * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use GetMessageTime to get timestamp (where on X11 uses gdk_x11_get_server_time()). --- ChangeLog | 22 +++ ChangeLog.pre-2-0 | 22 +++ ChangeLog.pre-2-10 | 22 +++ ChangeLog.pre-2-2 | 22 +++ ChangeLog.pre-2-4 | 22 +++ ChangeLog.pre-2-6 | 22 +++ ChangeLog.pre-2-8 | 22 +++ config.h.win32 | 10 +- gdk/gdk.def | 10 +- gdk/makefile.mingw.in | 12 +- gdk/win32/gdkselection-win32.c | 336 +++++++++++++++++++++++++++++++-- gtk/gtk.def | 21 ++- gtk/gtkclipboard.c | 8 + gtk/makefile.mingw.in | 16 +- 14 files changed, 537 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5178f1dae9..fd445db511 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 5178f1dae9..fd445db511 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,25 @@ +2000-10-03 Tor Lillqvist + + * config.h.win32: Guard definition of alloca(). glib.h now handles + that. + + * gdk/gdk.def + * gtk/gtk.def: Add new entry points. + + Changes just to make GTK+ build without errors on Win32. No hope + of it working in its current state, though...: + + * gdk/win32/gdkselection-win32.c: Remove gcc -Wall warnings. Add + some functions from the X11 backend, just to make GTK+ build. + + * gdk/makefile.mingw.in + * gtk/makefile.mingw.in: Use correct gdk_pixbuf version + number. Add new object files. + + * gtk/gtkclipboard.c: Include gdkwin32.h on Win32. Use + GetMessageTime to get timestamp (where on X11 uses + gdk_x11_get_server_time()). + 2000-10-02 Havoc Pennington * gtk/gtktextview.c: text_window_* weren't static and should have diff --git a/config.h.win32 b/config.h.win32 index 015e64ebba..ecbc5b3d5b 100755 --- a/config.h.win32 +++ b/config.h.win32 @@ -16,10 +16,12 @@ /* Define if you have alloca, as a function or macro. */ #define HAVE_ALLOCA 1 -#ifdef _MSC_VER -#define alloca _alloca -#elif defined (__GNUC__) -#define alloca __builtin_alloca +#ifndef alloca + #ifdef _MSC_VER + #define alloca _alloca + #elif defined (__GNUC__) + #define alloca __builtin_alloca + #endif #endif /* Define if you have and it should be used (not on Ultrix). */ diff --git a/gdk/gdk.def b/gdk/gdk.def index f4d020d4e9..9d63ae546a 100644 --- a/gdk/gdk.def +++ b/gdk/gdk.def @@ -145,11 +145,11 @@ EXPORTS gdk_gc_new_with_values gdk_gc_ref gdk_gc_set_background - gdk_gc_set_colormap gdk_gc_set_clip_mask gdk_gc_set_clip_origin gdk_gc_set_clip_rectangle gdk_gc_set_clip_region + gdk_gc_set_colormap gdk_gc_set_dashes gdk_gc_set_exposures gdk_gc_set_fill @@ -180,6 +180,7 @@ EXPORTS gdk_im_set_best_style gdk_image_get gdk_image_get_pixel + gdk_image_get_type gdk_image_new gdk_image_new_bitmap gdk_image_put_pixel @@ -212,6 +213,10 @@ EXPORTS gdk_pango_context_get gdk_pango_context_set_colormap gdk_parent_root + gdk_pixbuf_render_pixmap_and_mask + gdk_pixbuf_render_threshold_alpha + gdk_pixbuf_render_to_drawable + gdk_pixbuf_render_to_drawable_alpha gdk_pixmap_colormap_create_from_xpm gdk_pixmap_colormap_create_from_xpm_d gdk_pixmap_create_from_data @@ -284,12 +289,15 @@ EXPORTS gdk_text_height gdk_text_measure gdk_text_property_to_text_list + gdk_text_property_to_utf8_list gdk_text_width gdk_text_width_wc gdk_threads_enter gdk_threads_leave gdk_threads_mutex gdk_unicode_to_keyval + gdk_utf8_to_compound_text + gdk_utf8_to_string_target gdk_visual_get_best gdk_visual_get_best_depth gdk_visual_get_best_type diff --git a/gdk/makefile.mingw.in b/gdk/makefile.mingw.in index b089d09128..09386e69d7 100644 --- a/gdk/makefile.mingw.in +++ b/gdk/makefile.mingw.in @@ -8,8 +8,11 @@ TOP = ../.. include ../build/win32/make.mingw -# Possibly override GTK+ version from build/win32/module.defs +# Possibly override versions from build/win32/module.defs GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@ +GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@ + +GDK_PIXBUF_LIBS = -L ../gdk-pixbuf -lgdk_pixbuf-$(GDK_PIXBUF_VER) OPTIMIZE = -g @@ -58,7 +61,7 @@ win32/gdk-win32res.o : FRC cd win32 && $(MAKE) -f makefile.mingw gdk-win32res.o gdk-win32-$(GTK_VER).dll : $(gdk_OBJECTS) gdk.def win32/libgdk-win32.a win32/gdk-win32res.o win32/libwntab32x.a - $(GLIB)/build-dll gdk-win32 $(GTK_VER) gdk.def $(gdk_OBJECTS) win32/libgdk-win32.a win32/libwntab32x.a -L ../gdk-pixbuf -lgdk_pixbuf-$(GTK_VER) $(GLIB_LIBS) $(PANGOWIN32_LIBS) -lgdi32 -luser32 -limm32 -lshell32 -lole32 -luuid $(LDFLAGS) win32/gdk-win32res.o + $(GLIB)/build-dll gdk-win32 $(GTK_VER) gdk.def $(gdk_OBJECTS) win32/libgdk-win32.a win32/libwntab32x.a $(GDK_PIXBUF_LIBS) $(GLIB_LIBS) $(PANGOWIN32_LIBS) -lgdi32 -luser32 -limm32 -lshell32 -lole32 -luuid $(LDFLAGS) win32/gdk-win32res.o win32/libwntab32x.a : FRC cd win32 && $(MAKE) -f makefile.mingw libwntab32x.a @@ -67,7 +70,8 @@ win32/libwntab32x.a : FRC # makefile.mingw.in. Only for developer use. makefile.mingw: makefile.mingw.in sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \ - -e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' <$< >$@ + -e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' \ + -e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \ + -e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,' <$< >$@ .PHONY: FRC - diff --git a/gdk/win32/gdkselection-win32.c b/gdk/win32/gdkselection-win32.c index 90f3cfdcba..bda364b8a8 100644 --- a/gdk/win32/gdkselection-win32.c +++ b/gdk/win32/gdkselection-win32.c @@ -90,8 +90,8 @@ gdk_selection_owner_set (GdkWindow *owner, GDK_NOTE (MISC, (sel_name = gdk_atom_name (selection), g_print ("gdk_selection_owner_set: %#x %#x (%s)\n", - (owner ? GDK_WINDOW_HWND (owner) : 0), - selection, sel_name), + (owner ? (guint) GDK_WINDOW_HWND (owner) : 0), + (guint) selection, sel_name), g_free (sel_name))); if (selection != gdk_clipboard_atom) @@ -102,7 +102,7 @@ gdk_selection_owner_set (GdkWindow *owner, else xwindow = NULL; - GDK_NOTE (MISC, g_print ("...OpenClipboard(%#x)\n", xwindow)); + GDK_NOTE (MISC, g_print ("...OpenClipboard(%#x)\n", (guint) xwindow)); if (!OpenClipboard (xwindow)) { WIN32_API_FAILED ("OpenClipboard"); @@ -161,8 +161,8 @@ gdk_selection_owner_get (GdkAtom selection) GDK_NOTE (MISC, (sel_name = gdk_atom_name (selection), g_print ("gdk_selection_owner_get: %#x (%s) = %#x\n", - selection, sel_name, - (window ? GDK_WINDOW_HWND (window) : 0)), + (guint) selection, sel_name, + (window ? (guint) GDK_WINDOW_HWND (window) : 0)), g_free (sel_name))); return window; @@ -175,7 +175,6 @@ gdk_selection_convert (GdkWindow *requestor, guint32 time) { HGLOBAL hdata; - GdkSelProp *prop; guchar *ptr, *data, *datap, *p; guint i, length, slength; gchar *sel_name, *tgt_name; @@ -188,7 +187,9 @@ gdk_selection_convert (GdkWindow *requestor, (sel_name = gdk_atom_name (selection), tgt_name = gdk_atom_name (target), g_print ("gdk_selection_convert: %#x %#x (%s) %#x (%s)\n", - GDK_WINDOW_HWND (requestor), selection, sel_name, target, tgt_name), + (guint) GDK_WINDOW_HWND (requestor), + (guint) selection, sel_name, + (guint) target, tgt_name), g_free (sel_name), g_free (tgt_name))); @@ -199,7 +200,7 @@ gdk_selection_convert (GdkWindow *requestor, * and store it for later. */ GDK_NOTE (MISC, g_print ("...OpenClipboard(%#x)\n", - GDK_WINDOW_HWND (requestor))); + (guint) GDK_WINDOW_HWND (requestor))); if (!OpenClipboard (GDK_WINDOW_HWND (requestor))) { WIN32_API_FAILED ("OpenClipboard"); @@ -295,7 +296,7 @@ gdk_selection_property_get (GdkWindow *requestor, return 0; GDK_NOTE (MISC, g_print ("gdk_selection_property_get: %#x\n", - GDK_WINDOW_HWND (requestor))); + (guint) GDK_WINDOW_HWND (requestor))); prop = g_hash_table_lookup (sel_prop_table, &GDK_WINDOW_HWND (requestor)); @@ -345,9 +346,9 @@ gdk_selection_send_notify (guint32 requestor, prop_name = gdk_atom_name (property), g_print ("gdk_selection_send_notify: %#x %#x (%s) %#x (%s) %#x (%s)\n", requestor, - selection, sel_name, - target, tgt_name, - property, prop_name), + (guint) selection, sel_name, + (guint) target, tgt_name, + (guint) property, prop_name), g_free (sel_name), g_free (tgt_name), g_free (prop_name))); @@ -407,3 +408,314 @@ gdk_free_compound_text (guchar *ctext) { g_warning ("gdk_free_compound_text: Not implemented"); } + +/* These are lifted from gdkselection-x11.c, just to get GTK+ to build. + * These functions probably don't make much sense at all in Windows. + */ + +/* FIXME */ + +static gint +make_list (const gchar *text, + gint length, + gboolean latin1, + gchar ***list) +{ + GSList *strings = NULL; + gint n_strings = 0; + gint i; + const gchar *p = text; + const gchar *q; + GSList *tmp_list; + GError *error = NULL; + + while (p < text + length) + { + gchar *str; + + q = p; + while (*q && q < text + length) + q++; + + if (latin1) + { + str = g_convert (p, q - p, + "UTF-8", "ISO-8859-1", + NULL, NULL, &error); + + if (!str) + { + g_warning ("Error converting selection from STRING: %s", + error->message); + g_error_free (error); + } + } + else + str = g_strndup (p, q - p); + + if (str) + { + strings = g_slist_prepend (strings, str); + n_strings++; + } + + p = q + 1; + } + + if (list) + *list = g_new (gchar *, n_strings + 1); + + (*list)[n_strings] = NULL; + + i = n_strings; + tmp_list = strings; + while (tmp_list) + { + if (list) + (*list)[--i] = tmp_list->data; + else + g_free (tmp_list->data); + + tmp_list = tmp_list->next; + } + + g_slist_free (strings); + + return n_strings; +} + +/** + * gdk_text_property_to_utf8_list: + * @encoding: an atom representing the encoding of the text + * @format: the format of the property + * @text: the text to convert + * @length: the length of @text, in bytes + * @list: location to store the list of strings or %NULL. The + * list should be freed with g_strfreev(). + * + * Convert a text property in the giving encoding to + * a list of UTF-8 strings. + * + * Return value: the number of strings in the resulting + * list. + **/ +gint +gdk_text_property_to_utf8_list (GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) +{ + g_return_val_if_fail (text != NULL, 0); + g_return_val_if_fail (length >= 0, 0); + + if (encoding == GDK_TARGET_STRING) + { + return make_list ((gchar *)text, length, TRUE, list); + } + else if (encoding == gdk_atom_intern ("UTF8_STRING", FALSE)) + { + return make_list ((gchar *)text, length, FALSE, list); + } + else + { + gchar **local_list; + gint local_count; + gint i; + gchar *charset = NULL; + gboolean need_conversion= g_get_charset (&charset); + gint count = 0; + GError *error = NULL; + + /* Probably COMPOUND text, we fall back to Xlib routines + */ + local_count = gdk_text_property_to_text_list (encoding, + format, + text, + length, + &local_list); + if (list) + *list = g_new (gchar *, local_count + 1); + + for (i=0; imessage); + g_error_free (error); + error = NULL; + } + } + else + { + if (list) + (*list)[count++] = g_strdup (local_list[i]); + } + } + + gdk_free_text_list (local_list); + (*list)[count] = NULL; + + return count; + } +} + +/* The specifications for COMPOUND_TEXT and STRING specify that C0 and + * C1 are not allowed except for \n and \t, however the X conversions + * routines for COMPOUND_TEXT only enforce this in one direction, + * causing cut-and-paste of \r and \r\n separated text to fail. + * This routine strips out all non-allowed C0 and C1 characters + * from the input string and also canonicalizes \r, \r\n, and \n\r to \n + */ +static gchar * +sanitize_utf8 (const gchar *src) +{ + gint len = strlen (src); + GString *result = g_string_sized_new (len); + const gchar *p = src; + + while (*p) + { + if (*p == '\r' || *p == '\n') + { + p++; + if (*p == '\r' || *p == '\n') + p++; + + g_string_append_c (result, '\n'); + } + else + { + gunichar ch = g_utf8_get_char (p); + char buf[7]; + gint buflen; + + if (!((ch < 0x20 && ch != '\t') || (ch >= 0x7f && ch < 0xa0))) + { + buflen = g_unichar_to_utf8 (ch, buf); + g_string_append_len (result, buf, buflen); + } + + p = g_utf8_next_char (p); + } + } + + return g_string_free (result, FALSE); +} + +/** + * gdk_utf8_to_string_target: + * @str: a UTF-8 string + * + * Convert an UTF-8 string into the best possible representation + * as a STRING. The representation of characters not in STRING + * is not specified; it may be as pseudo-escape sequences + * \x{ABCD}, or it may be in some other form of approximation. + * + * Return value: the newly allocated string, or %NULL if the + * conversion failed. (It should not fail for + * any properly formed UTF-8 string.) + **/ +gchar * +gdk_utf8_to_string_target (const gchar *str) +{ + GError *error = NULL; + + gchar *tmp_str = sanitize_utf8 (str); + gchar *result = g_convert_with_fallback (tmp_str, -1, + "ISO-8859-1", "UTF-8", + NULL, NULL, NULL, &error); + if (!result) + { + g_warning ("Error converting from UTF-8 to STRING: %s", + error->message); + g_error_free (error); + } + + g_free (tmp_str); + return result; +} + +/** + * gdk_utf8_to_compound_text: + * @str: a UTF-8 string + * @encoding: location to store resulting encoding + * @format: location to store format of the result + * @ctext: location to store the data of the result + * @length: location to store the length of the data + * stored in @ctext + * + * Convert from UTF-8 to compound text. + * + * Return value: %TRUE if the conversion succeeded, otherwise + * false. + **/ +gboolean +gdk_utf8_to_compound_text (const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length) +{ + gboolean need_conversion; + gchar *charset; + gchar *locale_str, *tmp_str; + GError *error = NULL; + gboolean result; + + g_return_val_if_fail (str != NULL, FALSE); + + need_conversion = g_get_charset (&charset); + + tmp_str = sanitize_utf8 (str); + + if (need_conversion) + { + locale_str = g_convert_with_fallback (tmp_str, -1, + charset, "UTF-8", + NULL, NULL, NULL, &error); + g_free (tmp_str); + + if (!locale_str) + { + g_warning ("Error converting from UTF-8 to '%s': %s", + charset, error->message); + g_error_free (error); + + if (encoding) + *encoding = GDK_NONE; + if (format) + *format = GDK_NONE; + if (ctext) + *ctext = NULL; + if (length) + *length = 0; + + return FALSE; + } + } + else + locale_str = tmp_str; + + result = gdk_string_to_compound_text (locale_str, + encoding, format, ctext, length); + + g_free (locale_str); + + return result; +} diff --git a/gtk/gtk.def b/gtk/gtk.def index 9aa3c940bb..f686bc926d 100755 --- a/gtk/gtk.def +++ b/gtk/gtk.def @@ -18,6 +18,7 @@ EXPORTS GTK_TYPE_CTREE_POS GTK_TYPE_CURVE_TYPE GTK_TYPE_DEBUG_FLAG + GTK_TYPE_DELETE_TYPE GTK_TYPE_DEST_DEFAULTS GTK_TYPE_DIRECTION_TYPE GTK_TYPE_FUNDAMENTAL_TYPE @@ -71,11 +72,13 @@ EXPORTS GTK_TYPE_GDK_WINDOW_TYPE GTK_TYPE_GDK_WM_DECORATION GTK_TYPE_GDK_WM_FUNCTION + GTK_TYPE_IMAGE_TYPE GTK_TYPE_JUSTIFICATION GTK_TYPE_MATCH_TYPE GTK_TYPE_MENU_DIRECTION_TYPE GTK_TYPE_MENU_FACTORY_TYPE GTK_TYPE_METRIC_TYPE + GTK_TYPE_MOVEMENT_STEP GTK_TYPE_OBJECT_FLAGS GTK_TYPE_ORIENTATION GTK_TYPE_PACKER_OPTIONS @@ -106,9 +109,7 @@ EXPORTS GTK_TYPE_SUBMENU_PLACEMENT GTK_TYPE_TARGET_FLAGS GTK_TYPE_TEXT_DIRECTION - GTK_TYPE_TEXT_VIEW_DELETE_TYPE - GTK_TYPE_TEXT_VIEW_MOVEMENT_STEP - GTK_TYPE_TEXT_VIEW_SCROLL_TYPE + GTK_TYPE_TEXT_WINDOW_TYPE GTK_TYPE_TOOLBAR_CHILD_TYPE GTK_TYPE_TOOLBAR_SPACE_STYLE GTK_TYPE_TOOLBAR_STYLE @@ -1104,6 +1105,8 @@ EXPORTS gtk_target_list_unref gtk_tearoff_menu_item_get_type gtk_tearoff_menu_item_new + gtk_text_attributes_new + gtk_text_attributes_unref gtk_text_backward_delete gtk_text_buffer_apply_tag gtk_text_buffer_apply_tag_by_name @@ -1118,12 +1121,13 @@ EXPORTS gtk_text_buffer_create_tag gtk_text_buffer_delete_mark gtk_text_buffer_get_bounds + gtk_text_buffer_get_insert gtk_text_buffer_get_last_iter gtk_text_buffer_get_mark gtk_text_buffer_get_selection_bounds gtk_text_buffer_get_slice gtk_text_buffer_insert - gtk_text_buffer_insert_pixmap + gtk_text_buffer_insert_pixbuf gtk_text_buffer_modified gtk_text_buffer_move_mark gtk_text_buffer_new @@ -1141,6 +1145,8 @@ EXPORTS gtk_text_iter_forward_line gtk_text_iter_forward_search gtk_text_iter_equal + gtk_text_iter_get_attributes + gtk_text_iter_get_line gtk_text_iter_get_offset gtk_text_iter_get_text gtk_text_iter_is_last @@ -1157,12 +1163,19 @@ EXPORTS gtk_text_thaw gtk_text_unknown_char gtk_text_unknown_char_utf8 + gtk_text_view_buffer_to_window_coords + gtk_text_view_get_buffer + gtk_text_view_get_line_at_y + gtk_text_view_get_line_yrange gtk_text_view_get_type + gtk_text_view_get_window gtk_text_view_get_wrap_mode gtk_text_view_new_with_buffer + gtk_text_view_set_border_window_size gtk_text_view_set_cursor_visible gtk_text_view_set_editable gtk_text_view_set_wrap_mode + gtk_text_view_window_to_buffer_coords gtk_timeout_add gtk_timeout_add_full gtk_timeout_remove diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c index 6df1843cfb..3c7ff99e33 100644 --- a/gtk/gtkclipboard.c +++ b/gtk/gtkclipboard.c @@ -30,6 +30,10 @@ #include "x11/gdkx.h" #endif +#ifdef GDK_WINDOWING_WIN32 +#include "win32/gdkwin32.h" +#endif + typedef struct _RequestContentsInfo RequestContentsInfo; typedef struct _RequestTextInfo RequestTextInfo; @@ -207,7 +211,11 @@ clipboard_get_timestamp (GtkClipboard *clipboard) if (timestamp == GDK_CURRENT_TIME) { +#ifdef GDK_WINDOWING_X11 timestamp = gdk_x11_get_server_time (clipboard_widget->window); +#elif defined GDK_WINDOWING_WIN32 + timestamp = GetMessageTime (); +#endif } else { diff --git a/gtk/makefile.mingw.in b/gtk/makefile.mingw.in index 23d32b616b..59ace1cdbf 100644 --- a/gtk/makefile.mingw.in +++ b/gtk/makefile.mingw.in @@ -18,12 +18,13 @@ include ../build/win32/make.mingw ################################################################ -# Possibly override GTK+ version from build/win32/module.defs +# Possibly override versions from build/win32/module.defs GTK_VER = @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@ +GDK_PIXBUF_VER = @GDK_PIXBUF_MAJOR@.@GDK_PIXBUF_MINOR@ GDK_LIBS = -L ../gdk -lgdk-win32-$(GTK_VER) GTK_LIBS = -L . -lgtk-win32-$(GTK_VER) -GDK_PIXBUF_LIBS = -L ../gdk-pixbuf -lgdk_pixbuf-$(GTK_VER) +GDK_PIXBUF_LIBS = -L ../gdk-pixbuf -lgdk_pixbuf-$(GDK_PIXBUF_VER) # Perl and awk are needed to generate some source files. # These generated source files are distributed with the Win32 GTk+ source @@ -68,6 +69,7 @@ gtk_OBJECTS = \ gtkcalendar.o \ gtkcheckbutton.o \ gtkcheckmenuitem.o \ + gtkclipboard.o \ gtkclist.o \ gtkcolorsel.o \ gtkcolorseldialog.o \ @@ -97,6 +99,7 @@ gtk_OBJECTS = \ gtkhscrollbar.o \ gtkhseparator.o \ gtkhsv.o \ + gtkiconfactory.o \ gtkimage.o \ gtkimcontext.o \ gtkimcontextsimple.o \ @@ -142,6 +145,7 @@ gtk_OBJECTS = \ gtkspinbutton.o \ gtkstyle.o \ gtkstatusbar.o \ + gtkstock.o \ gtktable.o \ gtktearoffmenuitem.o \ gtktext.o \ @@ -409,13 +413,13 @@ testselection.o : testselection.c $(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testselection\" testselection.c testtext.exe : testtext.o - $(CC) $(CFLAGS) -o $@ testtext.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ testtext.o $(PANGO_LIBS) $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS) testtext.o : testtext.c $(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testtext\" testtext.c testtextbuffer.exe : testtextbuffer.o - $(CC) $(CFLAGS) -o $@ testtextbuffer.o $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS) + $(CC) $(CFLAGS) -o $@ testtextbuffer.o $(GDK_PIXBUF_LIBS) $(GTK_LIBS) $(GDK_LIBS) $(GLIB_LIBS) $(LDFLAGS) testtextbuffer.o : testtextbuffer.c $(CC) $(CFLAGS) -UGTK_COMPILATION -c -DG_LOG_DOMAIN=\"testtextbuffer\" testtextbuffer.c @@ -440,4 +444,6 @@ rmgen: # makefile.mingw.in. Only for developer use. makefile.mingw: makefile.mingw.in sed -e 's,@GTK_MAJOR[_]VERSION@,@GTK_MAJOR_VERSION@,' \ - -e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' <$< >$@ + -e 's,@GTK_MINOR[_]VERSION@,@GTK_MINOR_VERSION@,' \ + -e 's,@GDK_PIXBUF[_]MAJOR@,@GDK_PIXBUF_MAJOR@,' \ + -e 's,@GDK_PIXBUF[_]MINOR@,@GDK_PIXBUF_MINOR@,' <$< >$@