forked from AuroraMiddleware/gtk
Guard definition of alloca(). glib.h now handles that.
2000-10-03 Tor Lillqvist <tml@iki.fi> * 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()).
This commit is contained in:
parent
74d7c91731
commit
69ac9451a6
22
ChangeLog
22
ChangeLog
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -1,3 +1,25 @@
|
||||
2000-10-03 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* 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 <hp@pobox.com>
|
||||
|
||||
* gtk/gtktextview.c: text_window_* weren't static and should have
|
||||
|
@ -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 <alloca.h> and it should be used (not on Ultrix). */
|
||||
|
10
gdk/gdk.def
10
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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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; i<local_count; i++)
|
||||
{
|
||||
/* list contains stuff in our default encoding
|
||||
*/
|
||||
if (need_conversion)
|
||||
{
|
||||
gchar *utf = g_convert (local_list[i], -1,
|
||||
"UTF-8", charset,
|
||||
NULL, NULL, &error);
|
||||
if (utf)
|
||||
{
|
||||
if (list)
|
||||
(*list)[count++] = utf;
|
||||
else
|
||||
g_free (utf);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Error converting to UTF-8 from '%s': %s",
|
||||
charset, error->message);
|
||||
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;
|
||||
}
|
||||
|
21
gtk/gtk.def
21
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
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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@,' <$< >$@
|
||||
|
Loading…
Reference in New Issue
Block a user