]> Pileus Git - ~andy/gtk/commitdiff
Use g_filename_to_utf8 to convert the font names Windows gives us from
authorTor Lillqvist <tml@iki.fi>
Thu, 3 Feb 2000 01:19:03 +0000 (01:19 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Thu, 3 Feb 2000 01:19:03 +0000 (01:19 +0000)
2000-02-04  Tor Lillqvist  <tml@iki.fi>

* gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
g_filename_to_utf8 to convert the font names Windows gives us from
whatever is the default codepage to UTF-8.
(gdk_font_load_internal) Use g_filename_from_utf8 for conversion
in the other direction.

* gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
error in debugging output.

2000-02-02  Tor Lillqvist  <tml@iki.fi>

* gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
and height parameters to gdk_window_clear_area(). Not minus one.

2000-02-01  Tor Lillqvist  <tml@iki.fi>

* gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
g_filename_from_utf8 functions (which were added a moment ago to
GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
size buffers.

* gtk/gtkfilesel.h: Add comment about
gtk_file_selection_get_filename returning the filename in the C
runtime's encoding.

* README.win32
* gdk/gdk.def
* gdk/makefile.{cygwin,msc}
* gtk/gtk.def: Updates.

* gdk/gdkcursor-win32.c: Initialise refcount.

19 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
README.win32
gdk/gdk.def
gdk/makefile.cygwin
gdk/makefile.msc
gdk/win32/gdkcursor-win32.c
gdk/win32/gdkfont-win32.c
gdk/win32/gdkgc-win32.c
gdk/win32/gdkim-win32.c
gdk/win32/gdkwindow-win32.c
gtk/gtk.def
gtk/gtkfilesel.c
gtk/gtkfilesel.h

index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index 9700b9a7061787359606d2bfc2d6497602f0656d..d557074680a0d393f9745fbe30ae2fcb35af471e 100644 (file)
@@ -1,9 +1,43 @@
+2000-02-04  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkfont-win32.c (logfont_to_xlfd): Use
+       g_filename_to_utf8 to convert the font names Windows gives us from
+       whatever is the default codepage to UTF-8.
+       (gdk_font_load_internal) Use g_filename_from_utf8 for conversion
+       in the other direction.
+
+       * gdk/win32/gdkgc-win32.c (gdk_win32_gc_set_values): Fix cut&paste
+       error in debugging output.
+
+2000-02-02  Tor Lillqvist  <tml@iki.fi>
+
+       * gdk/win32/gdkwindow-win32.c (gdk_window_clear): Pass zero width
+       and height parameters to gdk_window_clear_area(). Not minus one.
+
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
 Wed Feb  2 11:58:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtkdnd.c (gtk_drag_selection_received): Add some sanity
        checks if the widget passed to gtk_drag_get_data() was not the
        dest widget.
 
+2000-02-01  Tor Lillqvist  <tml@iki.fi>
+
+       * gtk/gtkfilesel.c: Use the g_filename_to_utf8 and
+       g_filename_from_utf8 functions (which were added a moment ago to
+       GLib). Some cleanups: Use gbooleans. Use GStrings instead of fixed
+       size buffers.
+
+       * gtk/gtkfilesel.h: Add comment about
+       gtk_file_selection_get_filename returning the filename in the C
+       runtime's encoding.
+
+       * README.win32
+       * gdk/gdk.def
+       * gdk/makefile.{cygwin,msc}
+       * gtk/gtk.def: Updates.
+
+       * gdk/gdkcursor-win32.c: Initialise refcount.
+
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
 2000-01-31  Yuan-Chung Cheng <platin@linux.org.tw>
 
         * configure.in: Added "zh_CN.GB2312" to ALL_LINGUAS.
index ec142469b4935a8c1621477478ec1e45bd10ec55..f55928bc5a1fbd1c4d51774fddb1b2676d587ae0 100644 (file)
@@ -13,8 +13,11 @@ gtk\makefile.msc (or makefile.cygwin).
 See the README.win32 file in the GLib distribution for instructions
 how to build with gcc.
 
 See the README.win32 file in the GLib distribution for instructions
 how to build with gcc.
 
-The same instructions are also useful if you want to build
-applications that use GTk+ on Win32.
+To use GTk+ on Win32, you also need either of the above mentioned
+compilers. Other compilers might work, but don't count on it.  The
+same instructions on how to set up a correct version of gcc should
+also be followed if you want to build applications that use GTk+ with
+gcc.
 
 The tablet support uses the Wintab API. The Wintab development kit can
 be downloaded from http://www.pointing.com. If you don't care for
 
 The tablet support uses the Wintab API. The Wintab development kit can
 be downloaded from http://www.pointing.com. If you don't care for
index 97b9ee8ba4837ce32d2943a2245f53364117991f..c377314a269c36f149594308c040ac484ad47e04 100644 (file)
@@ -10,12 +10,6 @@ EXPORTS
        gdk_color_alloc
        gdk_color_black
        gdk_color_change
        gdk_color_alloc
        gdk_color_black
        gdk_color_change
-       gdk_color_copy
-       gdk_color_equal
-       gdk_color_free
-       gdk_color_hash
-       gdk_color_parse
-       gdk_color_white
        gdk_color_context_add_palette
        gdk_color_context_free
        gdk_color_context_free_dither
        gdk_color_context_add_palette
        gdk_color_context_free
        gdk_color_context_free_dither
@@ -29,6 +23,12 @@ EXPORTS
        gdk_color_context_new_mono
        gdk_color_context_query_color
        gdk_color_context_query_colors
        gdk_color_context_new_mono
        gdk_color_context_query_color
        gdk_color_context_query_colors
+       gdk_color_copy
+       gdk_color_equal
+       gdk_color_free
+       gdk_color_hash
+       gdk_color_parse
+       gdk_color_white
        gdk_colormap_alloc_color
        gdk_colormap_alloc_colors
        gdk_colormap_change
        gdk_colormap_alloc_color
        gdk_colormap_alloc_colors
        gdk_colormap_change
@@ -42,9 +42,10 @@ EXPORTS
        gdk_colors_alloc
        gdk_colors_free
        gdk_colors_store
        gdk_colors_alloc
        gdk_colors_free
        gdk_colors_store
-       gdk_cursor_destroy
        gdk_cursor_new
        gdk_cursor_new_from_pixmap
        gdk_cursor_new
        gdk_cursor_new_from_pixmap
+       gdk_cursor_ref
+       gdk_cursor_unref
        gdk_dnd_init
        gdk_drag_abort
        gdk_drag_begin
        gdk_dnd_init
        gdk_drag_abort
        gdk_drag_begin
@@ -112,14 +113,14 @@ EXPORTS
        gdk_exit
        gdk_flush
        gdk_font_equal
        gdk_exit
        gdk_flush
        gdk_font_equal
+       gdk_font_full_name_free
+       gdk_font_full_name_get
        gdk_font_id
        gdk_font_list_free
        gdk_font_list_new
        gdk_font_load
        gdk_font_ref
        gdk_font_unref
        gdk_font_id
        gdk_font_list_free
        gdk_font_list_new
        gdk_font_load
        gdk_font_ref
        gdk_font_unref
-       gdk_font_full_name_get
-       gdk_font_full_name_free
        gdk_fontset_load
        gdk_free_compound_text
        gdk_free_text_list
        gdk_fontset_load
        gdk_free_compound_text
        gdk_free_text_list
index 3bb8f57856386bc93f2d40a4910ad162b996f1b6..25d89e041748a7c861b91b9260ebed01ad09bcee 100644 (file)
@@ -31,6 +31,7 @@ all: \
 gdk_OBJECTS = \
        gdk.o           \
        gdkcolor.o      \
 gdk_OBJECTS = \
        gdk.o           \
        gdkcolor.o      \
+       gdkcursor.o     \
        gdkdraw.o       \
        gdkevents.o     \
        gdkfont.o       \
        gdkdraw.o       \
        gdkevents.o     \
        gdkfont.o       \
index 0077656d285c39100c4dc0ad9dbe254c0ae1b76e..5509cefc2fd157d3c93aadb2d0f73103a6fb6223 100644 (file)
@@ -40,6 +40,7 @@ all: \
 gdk_OBJECTS = \
        gdk.obj \
        gdkcolor.obj \
 gdk_OBJECTS = \
        gdk.obj \
        gdkcolor.obj \
+       gdkcursor.obj \
        gdkdraw.obj \
        gdkevents.obj \
        gdkfont.obj \
        gdkdraw.obj \
        gdkevents.obj \
        gdkfont.obj \
index c887a45568613351e99016b2e178cae5864ee1a1..6245c89b48ff821678c59113cf2546b53779b385 100644 (file)
@@ -132,6 +132,7 @@ gdk_cursor_new (GdkCursorType cursor_type)
   private->xcursor = xcursor;
   cursor = (GdkCursor*) private;
   cursor->type = cursor_type;
   private->xcursor = xcursor;
   cursor = (GdkCursor*) private;
   cursor->type = cursor_type;
+  cursor->refcount = 1;
 
   return cursor;
 }
 
   return cursor;
 }
@@ -262,12 +263,12 @@ _gdk_cursor_destroy (GdkCursor *cursor)
   g_return_if_fail (cursor != NULL);
   private = (GdkCursorPrivate *) cursor;
 
   g_return_if_fail (cursor != NULL);
   private = (GdkCursorPrivate *) cursor;
 
-  GDK_NOTE (MISC, g_print ("gdk_cursor_destroy: %#x\n",
+  GDK_NOTE (MISC, g_print ("_gdk_cursor_destroy: %#x\n",
                           (cursor->type == GDK_CURSOR_IS_PIXMAP) ? private->xcursor : 0));
 
   if (cursor->type == GDK_CURSOR_IS_PIXMAP)
     if (!DestroyIcon (private->xcursor))
                           (cursor->type == GDK_CURSOR_IS_PIXMAP) ? private->xcursor : 0));
 
   if (cursor->type == GDK_CURSOR_IS_PIXMAP)
     if (!DestroyIcon (private->xcursor))
-      g_warning ("gdk_cursor_destroy: DestroyIcon failed");
+      g_warning ("_gdk_cursor_destroy: DestroyIcon failed");
 
   g_free (private);
 }
 
   g_free (private);
 }
index 89916d0726b58a40cdf6787add9b88d89af22677..788dd3256448b87e6207c9264fe7f654d0bb0cf5 100644 (file)
@@ -134,7 +134,8 @@ logfont_to_xlfd (const LOGFONT *lfp,
   const gchar *registry, *encoding;
   int point_size;
   static int logpixelsy = 0;
   const gchar *registry, *encoding;
   int point_size;
   static int logpixelsy = 0;
-  gchar facename[LF_FACESIZE*3];
+  gchar facename[LF_FACESIZE*5];
+  gchar *utf8_facename;
   gchar *p;
   const gchar *q;
 
   gchar *p;
   const gchar *q;
 
@@ -218,9 +219,14 @@ logfont_to_xlfd (const LOGFONT *lfp,
   if (res == -1)
     res = logpixelsy;
 
   if (res == -1)
     res = logpixelsy;
 
-  /* Replace illegal characters with hex escapes. */
+  /* Convert the facename Windows fives us from the locale-dependent
+   * codepage to UTF-8.
+   */
+  utf8_facename = g_filename_to_utf8 (lfp->lfFaceName);
+
+  /* Replace characters illegal in an XLFD with hex escapes. */
   p = facename;
   p = facename;
-  q = lfp->lfFaceName;
+  q = utf8_facename;
   while (*q)
     {
       if (*q == '-' || *q == '*' || *q == '?' || *q == '%')
   while (*q)
     {
       if (*q == '-' || *q == '*' || *q == '?' || *q == '%')
@@ -230,8 +236,9 @@ logfont_to_xlfd (const LOGFONT *lfp,
       q++;
     }
   *p = '\0';
       q++;
     }
   *p = '\0';
+  g_free (utf8_facename);
 
 
-  return  g_strdup_printf
+  return g_strdup_printf
     ("-%s-%s-%s-%s-%s-%s-%d-%d-%d-%d-%s-%d-%s-%s",
      "unknown", 
      facename,
     ("-%s-%s-%s-%s-%s-%s-%d-%d-%d-%d-%s-%d-%s-%s",
      "unknown", 
      facename,
@@ -259,6 +266,7 @@ gdk_font_full_name_get (GdkFont *font)
   GSList *list;
   GString *string;
   gchar *result;
   GSList *list;
   GString *string;
   gchar *result;
+  gchar *xlfd;
   LOGFONT logfont;
 
   g_return_val_if_fail (font != NULL, NULL);
   LOGFONT logfont;
 
   g_return_val_if_fail (font != NULL, NULL);
@@ -278,9 +286,9 @@ gdk_font_full_name_get (GdkFont *font)
          return NULL;
        }
 
          return NULL;
        }
 
-      string =
-       g_string_append (string,
-                        logfont_to_xlfd (&logfont, logfont.lfHeight, -1, 0));
+      xlfd = logfont_to_xlfd (&logfont, logfont.lfHeight, -1, 0);
+      string = g_string_append (string, xlfd);
+      g_free (xlfd);
       list = list->next;
       if (list)
        string = g_string_append_c (string, ',');
       list = list->next;
       if (list)
        string = g_string_append_c (string, ',');
@@ -1124,7 +1132,7 @@ gdk_font_load_internal (const gchar *font_name)
   DWORD fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet,
     fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily;
   HGDIOBJ oldfont;
   DWORD fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet,
     fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily;
   HGDIOBJ oldfont;
-  const char *lpszFace;
+  char *lpszFace;
   gchar face[100];
 
   int numfields, n1, n2, tries;
   gchar face[100];
 
   int numfields, n1, n2, tries;
@@ -1164,7 +1172,7 @@ gdk_font_load_internal (const gchar *font_name)
       fdwClipPrecision = CLIP_DEFAULT_PRECIS;
       fdwQuality = PROOF_QUALITY;
       fdwPitchAndFamily = DEFAULT_PITCH;
       fdwClipPrecision = CLIP_DEFAULT_PRECIS;
       fdwQuality = PROOF_QUALITY;
       fdwPitchAndFamily = DEFAULT_PITCH;
-      lpszFace = font_name;
+      lpszFace = g_filename_from_utf8 (font_name);
     }
   else if (numfields != 5)
     {
     }
   else if (numfields != 5)
     {
@@ -1176,7 +1184,7 @@ gdk_font_load_internal (const gchar *font_name)
       /* It must be a XLFD name */
 
       /* Check for hex escapes in the font family,
       /* It must be a XLFD name */
 
       /* Check for hex escapes in the font family,
-       * put in there by gtkfontsel.
+       * put in there by logfont_to_xlfd. Convert them in-place.
        */
       p = family;
       while (*p)
        */
       p = family;
       while (*p)
@@ -1351,7 +1359,7 @@ gdk_font_load_internal (const gchar *font_name)
        fdwPitchAndFamily = VARIABLE_PITCH;
       else 
        fdwPitchAndFamily = DEFAULT_PITCH;
        fdwPitchAndFamily = VARIABLE_PITCH;
       else 
        fdwPitchAndFamily = DEFAULT_PITCH;
-      lpszFace = family;
+      lpszFace = g_filename_from_utf8 (family);
     }
 
   for (tries = 0; ; tries++)
     }
 
   for (tries = 0; ; tries++)
@@ -1364,15 +1372,20 @@ gdk_font_load_internal (const gchar *font_name)
                               fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
                               fdwCharSet, fdwOutputPrecision, fdwClipPrecision,
                               fdwQuality, fdwPitchAndFamily, lpszFace));
                               fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
                               fdwCharSet, fdwOutputPrecision, fdwClipPrecision,
                               fdwQuality, fdwPitchAndFamily, lpszFace));
-      if ((hfont =
-          CreateFont (nHeight, nWidth, nEscapement, nOrientation,
-                      fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
-                      fdwCharSet, fdwOutputPrecision, fdwClipPrecision,
-                      fdwQuality, fdwPitchAndFamily, lpszFace)) != NULL)
+      hfont = CreateFont (nHeight, nWidth, nEscapement, nOrientation,
+                         fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut,
+                         fdwCharSet, fdwOutputPrecision, fdwClipPrecision,
+                         fdwQuality, fdwPitchAndFamily, lpszFace);
+      /* After the first try lpszFace contains a return value
+       * from g_filename_from_utf8(), so free it.
+       */
+      if (tries == 0)
+       g_free (lpszFace);
+
+      if (hfont != NULL)
        break;
 
       /* If we fail, try some similar fonts often found on Windows. */
        break;
 
       /* If we fail, try some similar fonts often found on Windows. */
-
       if (tries == 0)
        {
          if (g_strcasecmp (family, "helvetica") == 0)
       if (tries == 0)
        {
          if (g_strcasecmp (family, "helvetica") == 0)
index 3afda1b193feaf5ffb4da4efed36fda0a88fc4eb..0030377abb2cf042671b39ec17d16bb621d5e3a3 100644 (file)
@@ -431,7 +431,7 @@ gdk_win32_gc_set_values (GdkGC           *gc,
   if (values_mask & GDK_GC_BACKGROUND)
     {
       GDK_NOTE (MISC, g_print ("bg = %s ",
   if (values_mask & GDK_GC_BACKGROUND)
     {
       GDK_NOTE (MISC, g_print ("bg = %s ",
-                              gdk_color_to_string (&values->foreground)));
+                              gdk_color_to_string (&values->background)));
       data->background = values->background;
       data->values_mask |= GDK_GC_BACKGROUND;
     }
       data->background = values->background;
       data->values_mask |= GDK_GC_BACKGROUND;
     }
index a20c7826f472f9910437e9646d39613dbc178e7a..271cb6f08b196cb3bee56504737759952d78d9ec 100644 (file)
@@ -240,7 +240,7 @@ gdk_wcstombs (const GdkWChar *src)
  * must be null-terminated. If the conversion is failed, it returns
  * -1.
  *
  * must be null-terminated. If the conversion is failed, it returns
  * -1.
  *
- * On Win32, thr string is assumed to be in UTF-8.  Also note that
+ * On Win32, the string is assumed to be in UTF-8.  Also note that
  * GdkWChar is 32 bits, while wchar_t, and the wide characters the
  * Windows API uses, are 16 bits!
  */
  * GdkWChar is 32 bits, while wchar_t, and the wide characters the
  * Windows API uses, are 16 bits!
  */
@@ -391,4 +391,3 @@ gdk_nmbstowchar_ts (wchar_t     *dest,
 
   return n;
 }
 
   return n;
 }
-
index fb6dd461a42d2a30e292a0fe608a6b1746013ac2..6e4d2b00c4535a2258e176aeabd14b1c2a9b00b3 100644 (file)
@@ -1003,7 +1003,7 @@ gdk_window_clear (GdkWindow *window)
   g_return_if_fail (GDK_IS_WINDOW (window));
 
   if (!GDK_DRAWABLE_DESTROYED (window))
   g_return_if_fail (GDK_IS_WINDOW (window));
 
   if (!GDK_DRAWABLE_DESTROYED (window))
-    gdk_window_clear_area (window, 0, 0, -1, -1);
+    gdk_window_clear_area (window, 0, 0, 0, 0);
 }
 
 
 }
 
 
index 585f048e746d28771857e305eaa1f64c26d981b3..1498490b4259f65f363d6776c92b4f4a69baf731 100755 (executable)
@@ -343,6 +343,7 @@ EXPORTS
        gtk_container_forall
        gtk_container_foreach
        gtk_container_foreach_full
        gtk_container_forall
        gtk_container_foreach
        gtk_container_foreach_full
+       gtk_container_get_toplevels
        gtk_container_get_type
        gtk_container_query_child_args
        gtk_container_queue_resize
        gtk_container_get_type
        gtk_container_query_child_args
        gtk_container_queue_resize
@@ -353,6 +354,7 @@ EXPORTS
        gtk_container_set_focus_child
        gtk_container_set_focus_hadjustment
        gtk_container_set_focus_vadjustment
        gtk_container_set_focus_child
        gtk_container_set_focus_hadjustment
        gtk_container_set_focus_vadjustment
+       gtk_container_set_reallocate_redraws
        gtk_container_set_resize_mode
        gtk_container_unregister_toplevel
        gtk_ctree_collapse
        gtk_container_set_resize_mode
        gtk_container_unregister_toplevel
        gtk_ctree_collapse
@@ -365,6 +367,7 @@ EXPORTS
        gtk_ctree_export_to_gnode
        gtk_ctree_find
        gtk_ctree_find_all_by_row_data
        gtk_ctree_export_to_gnode
        gtk_ctree_find
        gtk_ctree_find_all_by_row_data
+       gtk_ctree_find_all_by_row_data_custom
        gtk_ctree_find_by_row_data
        gtk_ctree_find_by_row_data_custom
        gtk_ctree_find_node_ptr
        gtk_ctree_find_by_row_data
        gtk_ctree_find_by_row_data_custom
        gtk_ctree_find_node_ptr
@@ -663,6 +666,7 @@ EXPORTS
        gtk_list_unselect_child
        gtk_list_unselect_item
        gtk_main
        gtk_list_unselect_child
        gtk_list_unselect_item
        gtk_main
+       gtk_main_do_event
        gtk_main_iteration
        gtk_main_iteration_do
        gtk_main_level
        gtk_main_iteration
        gtk_main_iteration_do
        gtk_main_level
@@ -811,6 +815,7 @@ EXPORTS
        gtk_object_ref
        gtk_object_remove_data
        gtk_object_remove_data_by_id
        gtk_object_ref
        gtk_object_remove_data
        gtk_object_remove_data_by_id
+       gtk_object_remove_no_notify
        gtk_object_remove_no_notify_by_id
        gtk_object_set
        gtk_object_set_data
        gtk_object_remove_no_notify_by_id
        gtk_object_set
        gtk_object_set_data
@@ -1279,10 +1284,12 @@ EXPORTS
        gtk_widget_newv
        gtk_widget_path
        gtk_widget_pop_colormap
        gtk_widget_newv
        gtk_widget_path
        gtk_widget_pop_colormap
+       gtk_widget_pop_composite_child
        gtk_widget_pop_style
        gtk_widget_pop_visual
        gtk_widget_popup
        gtk_widget_push_colormap
        gtk_widget_pop_style
        gtk_widget_pop_visual
        gtk_widget_popup
        gtk_widget_push_colormap
+       gtk_widget_push_composite_child
        gtk_widget_push_style
        gtk_widget_push_visual
        gtk_widget_queue_clear
        gtk_widget_push_style
        gtk_widget_push_visual
        gtk_widget_queue_clear
index d2e38ac5deba0407e6a8e8510c5c785cc2c30860..d3a1904364c362fddf9f7e60517ce09792ea8622 100644 (file)
 
 #include "config.h"
 
 
 #include "config.h"
 
-#include <glib.h>              /* To get stat->_stat redefinition
-                                *  for mingw32
-                                */
-
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -137,8 +133,6 @@ struct _CompletionDirSent
   dev_t device;
 
   gint entry_count;
   dev_t device;
 
   gint entry_count;
-  gchar *name_buffer; /* memory segment containing names of all entries */
-
   struct _CompletionDirEntry *entries;
 };
 
   struct _CompletionDirEntry *entries;
 };
 
@@ -164,7 +158,7 @@ struct _CompletionDir
  */
 struct _CompletionDirEntry
 {
  */
 struct _CompletionDirEntry
 {
-  gint is_dir;
+  gboolean is_dir;
   gchar *entry_name;
 };
 
   gchar *entry_name;
 };
 
@@ -181,7 +175,7 @@ struct _PossibleCompletion
    */
   gchar *text;
   gint is_a_completion;
    */
   gchar *text;
   gint is_a_completion;
-  gint is_directory;
+  gboolean is_directory;
 
   /* Private fields
    */
 
   /* Private fields
    */
@@ -194,7 +188,7 @@ struct _CompletionState
   gchar *updated_text;
   gint updated_text_len;
   gint updated_text_alloc;
   gchar *updated_text;
   gint updated_text_len;
   gint updated_text_alloc;
-  gint re_complete;
+  gboolean re_complete;
 
   gchar *user_dir_name_buffer;
   gint user_directories_len;
 
   gchar *user_dir_name_buffer;
   gint user_directories_len;
@@ -242,7 +236,7 @@ static gint                cmpl_is_a_completion   (PossibleCompletion*);
 
 /* True if the completion is a directory
  */
 
 /* True if the completion is a directory
  */
-static gint                cmpl_is_directory      (PossibleCompletion*);
+static gboolean            cmpl_is_directory      (PossibleCompletion*);
 
 /* Obtains the next completion, or NULL
  */
 
 /* Obtains the next completion, or NULL
  */
@@ -260,7 +254,7 @@ static gchar*              cmpl_updated_text       (CompletionState* cmpl_state)
 /* After updating, to see if the completion was a directory, call
  * this.  If it was, you should consider re-calling completion_matches.
  */
 /* After updating, to see if the completion was a directory, call
  * this.  If it was, you should consider re-calling completion_matches.
  */
-static gint                cmpl_updated_dir        (CompletionState* cmpl_state);
+static gboolean            cmpl_updated_dir        (CompletionState* cmpl_state);
 
 /* Current location: if using file completion, return the current
  * directory, from which file completion begins.  More specifically,
 
 /* Current location: if using file completion, return the current
  * directory, from which file completion begins.  More specifically,
@@ -703,7 +697,7 @@ void
 gtk_file_selection_set_filename (GtkFileSelection *filesel,
                                 const gchar      *filename)
 {
 gtk_file_selection_set_filename (GtkFileSelection *filesel,
                                 const gchar      *filename)
 {
-  char  buf[MAXPATHLEN];
+  gchar *buf;
   const char *name, *last_slash;
 
   g_return_if_fail (filesel != NULL);
   const char *name, *last_slash;
 
   g_return_if_fail (filesel != NULL);
@@ -714,16 +708,13 @@ gtk_file_selection_set_filename (GtkFileSelection *filesel,
 
   if (!last_slash)
     {
 
   if (!last_slash)
     {
-      buf[0] = 0;
+      buf = g_strdup ("");
       name = filename;
     }
   else
     {
       name = filename;
     }
   else
     {
-      gint len = MIN (MAXPATHLEN - 1, last_slash - filename + 1);
-
-      strncpy (buf, filename, len);
-      buf[len] = 0;
-
+      buf = g_strdup (filename);
+      buf[last_slash - filename + 1] = 0;
       name = last_slash + 1;
     }
 
       name = last_slash + 1;
     }
 
@@ -731,6 +722,7 @@ gtk_file_selection_set_filename (GtkFileSelection *filesel,
 
   if (filesel->selection_entry)
     gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
 
   if (filesel->selection_entry)
     gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
+  g_free (buf);
 }
 
 gchar*
 }
 
 gchar*
@@ -750,7 +742,7 @@ gtk_file_selection_get_filename (GtkFileSelection *filesel)
   if (text)
     {
       filename = cmpl_completion_fullname (text, filesel->cmpl_state);
   if (text)
     {
       filename = cmpl_completion_fullname (text, filesel->cmpl_state);
-      return filename;
+      return g_filename_from_utf8 (filename);
     }
 
   return nothing;
     }
 
   return nothing;
@@ -1661,7 +1653,7 @@ cmpl_updated_text (CompletionState* cmpl_state)
   return cmpl_state->updated_text;
 }
 
   return cmpl_state->updated_text;
 }
 
-static gint
+static gboolean
 cmpl_updated_dir (CompletionState* cmpl_state)
 {
   return cmpl_state->re_complete;
 cmpl_updated_dir (CompletionState* cmpl_state)
 {
   return cmpl_state->re_complete;
@@ -1737,7 +1729,7 @@ cmpl_this_completion (PossibleCompletion* pc)
   return pc->text;
 }
 
   return pc->text;
 }
 
-static gint
+static gboolean
 cmpl_is_directory (PossibleCompletion* pc)
 {
   return pc->is_directory;
 cmpl_is_directory (PossibleCompletion* pc)
 {
   return pc->is_directory;
@@ -1845,7 +1837,9 @@ free_dir(CompletionDir* dir)
 static void
 free_dir_sent(CompletionDirSent* sent)
 {
 static void
 free_dir_sent(CompletionDirSent* sent)
 {
-  g_free(sent->name_buffer);
+  gint i;
+  for (i = 0; i < sent->entry_count; i++)
+    g_free(sent->entries[i].entry_name);
   g_free(sent->entries);
   g_free(sent);
 }
   g_free(sent->entries);
   g_free(sent);
 }
@@ -2102,32 +2096,22 @@ open_relative_dir(gchar* dir_name,
                  CompletionDir* dir,
                  CompletionState *cmpl_state)
 {
                  CompletionDir* dir,
                  CompletionState *cmpl_state)
 {
-  gchar path_buf[2*MAXPATHLEN];
+  CompletionDir *result;
+  GString *path;
 
 
-  if(dir->fullname_len + strlen(dir_name) + 2 >= MAXPATHLEN)
-    {
-      cmpl_errno = CMPL_ERRNO_TOO_LONG;
-      return NULL;
-    }
+  path = g_string_sized_new (dir->fullname_len + strlen (dir_name) + 10);
+  g_string_assign (path, dir->fullname);
 
 
-  strcpy(path_buf, dir->fullname);
+  if(dir->fullname_len > 1
+    && path->str[dir->fullname_len - 1] != G_DIR_SEPARATOR)
+     g_string_append_c (path, G_DIR_SEPARATOR);
+  g_string_append (path, dir_name);
 
 
-  if(dir->fullname_len > 1)
-    {
-      if (path_buf[dir->fullname_len - 1] != G_DIR_SEPARATOR)
-       {
-         path_buf[dir->fullname_len] = G_DIR_SEPARATOR;
-         strcpy (path_buf + dir->fullname_len + 1, dir_name);
-       }
-      else
-       strcpy (path_buf + dir->fullname_len, dir_name);
-    }
-  else
-    {
-      strcpy(path_buf + dir->fullname_len, dir_name);
-    }
+  result = open_dir(path->str, cmpl_state);
+
+  g_string_free (path, TRUE);
 
 
-  return open_dir(path_buf, cmpl_state);
+  return result;
 }
 
 /* after the cache lookup fails, really open a new directory */
 }
 
 /* after the cache lookup fails, really open a new directory */
@@ -2138,29 +2122,23 @@ open_new_dir(gchar* dir_name, struct stat* sbuf, gboolean stat_subdirs)
   DIR* directory;
   gchar *buffer_ptr;
   struct dirent *dirent_ptr;
   DIR* directory;
   gchar *buffer_ptr;
   struct dirent *dirent_ptr;
-  gint buffer_size = 0;
   gint entry_count = 0;
   gint i;
   struct stat ent_sbuf;
   gint entry_count = 0;
   gint i;
   struct stat ent_sbuf;
-  char path_buf[MAXPATHLEN*2];
-  gint path_buf_len;
+  GString *path;
+  gchar *xdir, *xname;
+  int entry_len;
 
   sent = g_new(CompletionDirSent, 1);
   sent->mtime = sbuf->st_mtime;
   sent->inode = sbuf->st_ino;
   sent->device = sbuf->st_dev;
 
 
   sent = g_new(CompletionDirSent, 1);
   sent->mtime = sbuf->st_mtime;
   sent->inode = sbuf->st_ino;
   sent->device = sbuf->st_dev;
 
-  path_buf_len = strlen(dir_name);
+  path = g_string_sized_new (2*MAXPATHLEN + 10);
 
 
-  if (path_buf_len > MAXPATHLEN)
-    {
-      cmpl_errno = CMPL_ERRNO_TOO_LONG;
-      return NULL;
-    }
-
-  strcpy(path_buf, dir_name);
-
-  directory = opendir(dir_name);
+  xdir = g_filename_from_utf8 (dir_name);
+  directory = opendir(xdir);
+  g_free (xdir);
 
   if(!directory)
     {
 
   if(!directory)
     {
@@ -2170,24 +2148,12 @@ open_new_dir(gchar* dir_name, struct stat* sbuf, gboolean stat_subdirs)
 
   while((dirent_ptr = readdir(directory)) != NULL)
     {
 
   while((dirent_ptr = readdir(directory)) != NULL)
     {
-      int entry_len = strlen(dirent_ptr->d_name);
-      buffer_size += entry_len + 1;
-      entry_count += 1;
-
-      if(path_buf_len + entry_len + 2 >= MAXPATHLEN)
-       {
-         cmpl_errno = CMPL_ERRNO_TOO_LONG;
-         closedir(directory);
-         return NULL;
-       }
+      entry_count++;
     }
 
     }
 
-  sent->name_buffer = g_new(gchar, buffer_size);
   sent->entries = g_new(CompletionDirEntry, entry_count);
   sent->entry_count = entry_count;
 
   sent->entries = g_new(CompletionDirEntry, entry_count);
   sent->entry_count = entry_count;
 
-  buffer_ptr = sent->name_buffer;
-
   rewinddir(directory);
 
   for(i = 0; i < entry_count; i += 1)
   rewinddir(directory);
 
   for(i = 0; i < entry_count; i += 1)
@@ -2201,33 +2167,29 @@ open_new_dir(gchar* dir_name, struct stat* sbuf, gboolean stat_subdirs)
          return NULL;
        }
 
          return NULL;
        }
 
-      strcpy(buffer_ptr, dirent_ptr->d_name);
-      sent->entries[i].entry_name = buffer_ptr;
-      buffer_ptr += strlen(dirent_ptr->d_name);
-      *buffer_ptr = 0;
-      buffer_ptr += 1;
+      sent->entries[i].entry_name = g_filename_to_utf8 (dirent_ptr->d_name);
 
 
-      if (path_buf[path_buf_len-1] != G_DIR_SEPARATOR)
+      g_string_assign (path, dir_name);
+      if (path->str[path->len-1] != G_DIR_SEPARATOR)
        {
        {
-         path_buf[path_buf_len] = G_DIR_SEPARATOR;
-         strcpy(path_buf + path_buf_len + 1, dirent_ptr->d_name);
+         g_string_append_c (path, G_DIR_SEPARATOR);
        }
        }
-      else
-       strcpy(path_buf + path_buf_len, dirent_ptr->d_name);
+      g_string_append (path, dirent_ptr->d_name);
 
       if (stat_subdirs)
        {
 
       if (stat_subdirs)
        {
-         if(stat(path_buf, &ent_sbuf) >= 0 && S_ISDIR(ent_sbuf.st_mode))
-           sent->entries[i].is_dir = 1;
+         if(stat(path->str, &ent_sbuf) >= 0 && S_ISDIR(ent_sbuf.st_mode))
+           sent->entries[i].is_dir = TRUE;
          else
            /* stat may fail, and we don't mind, since it could be a
             * dangling symlink. */
          else
            /* stat may fail, and we don't mind, since it could be a
             * dangling symlink. */
-           sent->entries[i].is_dir = 0;
+           sent->entries[i].is_dir = FALSE;
        }
       else
        sent->entries[i].is_dir = 1;
     }
 
        }
       else
        sent->entries[i].is_dir = 1;
     }
 
+  g_string_free (path, TRUE);
   qsort(sent->entries, sent->entry_count, sizeof(CompletionDirEntry), compare_cmpl_dir);
 
   closedir(directory);
   qsort(sent->entries, sent->entry_count, sizeof(CompletionDirEntry), compare_cmpl_dir);
 
   closedir(directory);
@@ -2562,7 +2524,7 @@ attempt_homedir_completion(gchar* text_to_complete,
        }
 
       cmpl_state->the_completion.is_a_completion = 1;
        }
 
       cmpl_state->the_completion.is_a_completion = 1;
-      cmpl_state->the_completion.is_directory = 1;
+      cmpl_state->the_completion.is_directory = TRUE;
 
       append_completion_text("~", cmpl_state);
 
 
       append_completion_text("~", cmpl_state);
 
@@ -2583,7 +2545,7 @@ attempt_homedir_completion(gchar* text_to_complete,
     {
       cmpl_state->user_completion_index += 1;
       cmpl_state->the_completion.is_a_completion = 1;
     {
       cmpl_state->user_completion_index += 1;
       cmpl_state->the_completion.is_a_completion = 1;
-      cmpl_state->the_completion.is_directory = 1;
+      cmpl_state->the_completion.is_directory = TRUE;
 
       return append_completion_text("~" G_DIR_SEPARATOR_S, cmpl_state);
     }
 
       return append_completion_text("~" G_DIR_SEPARATOR_S, cmpl_state);
     }
index 64ad3ab6bea904850774208ffd61b1264618b6a1..24ff5de521f77766f859bbcf69a43a93a67306ea 100644 (file)
@@ -86,7 +86,13 @@ GtkType    gtk_file_selection_get_type            (void);
 GtkWidget* gtk_file_selection_new                 (const gchar      *title);
 void       gtk_file_selection_set_filename        (GtkFileSelection *filesel,
                                                   const gchar      *filename);
 GtkWidget* gtk_file_selection_new                 (const gchar      *title);
 void       gtk_file_selection_set_filename        (GtkFileSelection *filesel,
                                                   const gchar      *filename);
+/* This function returns the selected filename in the C runtime's
+ * multibyte string encoding, which may or may not be the same as that
+ * used by GDK (UTF-8). To convert to UTF-8, call g_filename_to_utf8().
+ * The returned string should be deallocated with g_free().
+ */
 gchar*     gtk_file_selection_get_filename        (GtkFileSelection *filesel);
 gchar*     gtk_file_selection_get_filename        (GtkFileSelection *filesel);
+
 void      gtk_file_selection_complete            (GtkFileSelection *filesel,
                                                   const gchar      *pattern);
 void       gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel);
 void      gtk_file_selection_complete            (GtkFileSelection *filesel,
                                                   const gchar      *pattern);
 void       gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel);