forked from AuroraMiddleware/gtk
gtk/gtkaccelmap.[ch] gtk/gtkfilechooser.[ch] gtk/gtkfilesel.c
2004-12-12 Tor Lillqvist <tml@iki.fi> * gtk/gtkaccelmap.[ch] * gtk/gtkfilechooser.[ch] * gtk/gtkfilesel.c * gtk/gtkfilesystemwin32.c * gtk/gtkiconfactory.[ch] * gtk/gtkicontheme.[ch] * gtk/gtkimage.[ch] * gtk/gtkimmodule.c * gtk/gtkmodules.c * gtk/gtkrc.[ch] * gtk/gtkuimanager.[ch] * gtk/gtkwindow.[ch] * gtk/updateiconcache.c * gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert environment variables referring to pathnames from locale encoding to UTF-8. As in GLib, in order to preserve Windows DLL ABI stability, add binary compatibility versions of functions that take file names as arguments, or return file names. Add a _utf8 suffix to the "real" such functions on Windows. The ABI compatibility versions keep the old name. * gtk/Makefile.am: Strip PRIVATE symbols from the GNU import library. * gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement file mapping on Win32. * gtk/updateiconcache.c: Don't crash if invoked without argument. Use binary mode when opening file. * modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
This commit is contained in:
parent
f821217218
commit
f3da170539
35
ChangeLog
35
ChangeLog
@ -1,3 +1,38 @@
|
||||
2004-12-11 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkaccelmap.[ch]
|
||||
* gtk/gtkfilechooser.[ch]
|
||||
* gtk/gtkfilesel.c
|
||||
* gtk/gtkfilesystemwin32.c
|
||||
* gtk/gtkiconfactory.[ch]
|
||||
* gtk/gtkicontheme.[ch]
|
||||
* gtk/gtkimage.[ch]
|
||||
* gtk/gtkimmodule.c
|
||||
* gtk/gtkmodules.c
|
||||
* gtk/gtkrc.[ch]
|
||||
* gtk/gtkuimanager.[ch]
|
||||
* gtk/gtkwindow.[ch]
|
||||
* gtk/updateiconcache.c
|
||||
* gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert
|
||||
environment variables referring to pathnames from locale encoding
|
||||
to UTF-8. As in GLib, in order to preserve Windows DLL ABI
|
||||
stability, add binary compatibility versions of functions that
|
||||
take file names as arguments, or return file names. Add a _utf8
|
||||
suffix to the "real" such functions on Windows. The ABI
|
||||
compatibility versions keep the old name.
|
||||
|
||||
* gtk/Makefile.am: Strip PRIVATE symbols from the GNU import
|
||||
library.
|
||||
|
||||
* gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement
|
||||
file mapping on Win32.
|
||||
|
||||
* gtk/updateiconcache.c: Don't crash if invoked without
|
||||
argument. Use binary mode when opening file.
|
||||
|
||||
* modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install
|
||||
gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
|
||||
|
||||
2004-12-12 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_setup_mnemonic): Fix a
|
||||
|
@ -1,3 +1,38 @@
|
||||
2004-12-11 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkaccelmap.[ch]
|
||||
* gtk/gtkfilechooser.[ch]
|
||||
* gtk/gtkfilesel.c
|
||||
* gtk/gtkfilesystemwin32.c
|
||||
* gtk/gtkiconfactory.[ch]
|
||||
* gtk/gtkicontheme.[ch]
|
||||
* gtk/gtkimage.[ch]
|
||||
* gtk/gtkimmodule.c
|
||||
* gtk/gtkmodules.c
|
||||
* gtk/gtkrc.[ch]
|
||||
* gtk/gtkuimanager.[ch]
|
||||
* gtk/gtkwindow.[ch]
|
||||
* gtk/updateiconcache.c
|
||||
* gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert
|
||||
environment variables referring to pathnames from locale encoding
|
||||
to UTF-8. As in GLib, in order to preserve Windows DLL ABI
|
||||
stability, add binary compatibility versions of functions that
|
||||
take file names as arguments, or return file names. Add a _utf8
|
||||
suffix to the "real" such functions on Windows. The ABI
|
||||
compatibility versions keep the old name.
|
||||
|
||||
* gtk/Makefile.am: Strip PRIVATE symbols from the GNU import
|
||||
library.
|
||||
|
||||
* gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement
|
||||
file mapping on Win32.
|
||||
|
||||
* gtk/updateiconcache.c: Don't crash if invoked without
|
||||
argument. Use binary mode when opening file.
|
||||
|
||||
* modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install
|
||||
gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
|
||||
|
||||
2004-12-12 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_setup_mnemonic): Fix a
|
||||
|
@ -1,3 +1,38 @@
|
||||
2004-12-11 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkaccelmap.[ch]
|
||||
* gtk/gtkfilechooser.[ch]
|
||||
* gtk/gtkfilesel.c
|
||||
* gtk/gtkfilesystemwin32.c
|
||||
* gtk/gtkiconfactory.[ch]
|
||||
* gtk/gtkicontheme.[ch]
|
||||
* gtk/gtkimage.[ch]
|
||||
* gtk/gtkimmodule.c
|
||||
* gtk/gtkmodules.c
|
||||
* gtk/gtkrc.[ch]
|
||||
* gtk/gtkuimanager.[ch]
|
||||
* gtk/gtkwindow.[ch]
|
||||
* gtk/updateiconcache.c
|
||||
* gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert
|
||||
environment variables referring to pathnames from locale encoding
|
||||
to UTF-8. As in GLib, in order to preserve Windows DLL ABI
|
||||
stability, add binary compatibility versions of functions that
|
||||
take file names as arguments, or return file names. Add a _utf8
|
||||
suffix to the "real" such functions on Windows. The ABI
|
||||
compatibility versions keep the old name.
|
||||
|
||||
* gtk/Makefile.am: Strip PRIVATE symbols from the GNU import
|
||||
library.
|
||||
|
||||
* gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement
|
||||
file mapping on Win32.
|
||||
|
||||
* gtk/updateiconcache.c: Don't crash if invoked without
|
||||
argument. Use binary mode when opening file.
|
||||
|
||||
* modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install
|
||||
gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
|
||||
|
||||
2004-12-12 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_setup_mnemonic): Fix a
|
||||
|
@ -1,3 +1,38 @@
|
||||
2004-12-11 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gtk/gtkaccelmap.[ch]
|
||||
* gtk/gtkfilechooser.[ch]
|
||||
* gtk/gtkfilesel.c
|
||||
* gtk/gtkfilesystemwin32.c
|
||||
* gtk/gtkiconfactory.[ch]
|
||||
* gtk/gtkicontheme.[ch]
|
||||
* gtk/gtkimage.[ch]
|
||||
* gtk/gtkimmodule.c
|
||||
* gtk/gtkmodules.c
|
||||
* gtk/gtkrc.[ch]
|
||||
* gtk/gtkuimanager.[ch]
|
||||
* gtk/gtkwindow.[ch]
|
||||
* gtk/updateiconcache.c
|
||||
* gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert
|
||||
environment variables referring to pathnames from locale encoding
|
||||
to UTF-8. As in GLib, in order to preserve Windows DLL ABI
|
||||
stability, add binary compatibility versions of functions that
|
||||
take file names as arguments, or return file names. Add a _utf8
|
||||
suffix to the "real" such functions on Windows. The ABI
|
||||
compatibility versions keep the old name.
|
||||
|
||||
* gtk/Makefile.am: Strip PRIVATE symbols from the GNU import
|
||||
library.
|
||||
|
||||
* gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement
|
||||
file mapping on Win32.
|
||||
|
||||
* gtk/updateiconcache.c: Don't crash if invoked without
|
||||
argument. Use binary mode when opening file.
|
||||
|
||||
* modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install
|
||||
gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
|
||||
|
||||
2004-12-12 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtklabel.c (gtk_label_setup_mnemonic): Fix a
|
||||
|
@ -46,6 +46,10 @@ gtk-win32res.lo : gtk-win32.rc
|
||||
$(top_srcdir)/build/win32/lt-compile-resource gtk-win32.rc gtk-win32res.lo
|
||||
|
||||
install-libtool-import-lib:
|
||||
for entry in `grep PRIVATE gtk.def | sed -e 's/PRIVATE//'`; do \
|
||||
file=`nm -A .libs/libgtk-win32-$(GTK_API_VERSION).dll.a | tr -d '\r' | grep -m 1 -E $$entry'$$' | cut -d: -f2`; \
|
||||
ar d .libs/libgtk-win32-$(GTK_API_VERSION).dll.a $$file; \
|
||||
done
|
||||
$(INSTALL) .libs/libgtk-win32-$(GTK_API_VERSION).dll.a $(DESTDIR)$(libdir)
|
||||
uninstall-libtool-import-lib:
|
||||
-rm $(DESTDIR)$(libdir)/libtk-win32-$(GTK_API_VERSION).dll.a
|
||||
|
155
gtk/gtk.symbols
155
gtk/gtk.symbols
@ -72,12 +72,18 @@ gtk_accel_map_foreach
|
||||
gtk_accel_map_foreach_unfiltered
|
||||
gtk_accel_map_get
|
||||
gtk_accel_map_get_type G_GNUC_CONST
|
||||
gtk_accel_map_load
|
||||
gtk_accel_map_load PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_accel_map_load_utf8
|
||||
#endif
|
||||
gtk_accel_map_load_fd
|
||||
gtk_accel_map_load_scanner
|
||||
gtk_accel_map_lock_path
|
||||
gtk_accel_map_lookup_entry
|
||||
gtk_accel_map_save
|
||||
gtk_accel_map_save PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_accel_map_save_utf8
|
||||
#endif
|
||||
gtk_accel_map_save_fd
|
||||
gtk_accel_map_unlock_path
|
||||
gtk_accessible_connect_widget_destroyed
|
||||
@ -772,7 +778,10 @@ gtk_expander_style_get_type G_GNUC_CONST
|
||||
gtk_false G_GNUC_CONST
|
||||
gtk_file_chooser_action_get_type G_GNUC_CONST
|
||||
gtk_file_chooser_add_filter
|
||||
gtk_file_chooser_add_shortcut_folder
|
||||
gtk_file_chooser_add_shortcut_folder PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_add_shortcut_folder_utf8
|
||||
#endif
|
||||
gtk_file_chooser_add_shortcut_folder_uri
|
||||
gtk_file_chooser_button_get_title
|
||||
gtk_file_chooser_button_get_type G_GNUC_CONST
|
||||
@ -788,14 +797,26 @@ gtk_file_chooser_dialog_new_with_backend
|
||||
gtk_file_chooser_error_get_type
|
||||
gtk_file_chooser_error_quark
|
||||
gtk_file_chooser_get_action
|
||||
gtk_file_chooser_get_current_folder
|
||||
gtk_file_chooser_get_current_folder PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_get_current_folder_utf8
|
||||
#endif
|
||||
gtk_file_chooser_get_current_folder_uri
|
||||
gtk_file_chooser_get_extra_widget
|
||||
gtk_file_chooser_get_filename
|
||||
gtk_file_chooser_get_filenames
|
||||
gtk_file_chooser_get_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_get_filename_utf8
|
||||
#endif
|
||||
gtk_file_chooser_get_filenames PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_get_filenames_utf8
|
||||
#endif
|
||||
gtk_file_chooser_get_filter
|
||||
gtk_file_chooser_get_local_only
|
||||
gtk_file_chooser_get_preview_filename
|
||||
gtk_file_chooser_get_preview_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_get_preview_filename_utf8
|
||||
#endif
|
||||
gtk_file_chooser_get_preview_uri
|
||||
gtk_file_chooser_get_preview_widget
|
||||
gtk_file_chooser_get_preview_widget_active
|
||||
@ -806,20 +827,35 @@ gtk_file_chooser_get_uri
|
||||
gtk_file_chooser_get_uris
|
||||
gtk_file_chooser_get_use_preview_label
|
||||
gtk_file_chooser_list_filters
|
||||
gtk_file_chooser_list_shortcut_folders
|
||||
gtk_file_chooser_list_shortcut_folders PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_list_shortcut_folders_utf8
|
||||
#endif
|
||||
gtk_file_chooser_list_shortcut_folder_uris
|
||||
gtk_file_chooser_remove_filter
|
||||
gtk_file_chooser_remove_shortcut_folder
|
||||
gtk_file_chooser_remove_shortcut_folder PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_remove_shortcut_folder_utf8
|
||||
#endif
|
||||
gtk_file_chooser_remove_shortcut_folder_uri
|
||||
gtk_file_chooser_select_all
|
||||
gtk_file_chooser_select_filename
|
||||
gtk_file_chooser_select_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_select_filename_utf8
|
||||
#endif
|
||||
gtk_file_chooser_select_uri
|
||||
gtk_file_chooser_set_action
|
||||
gtk_file_chooser_set_current_folder
|
||||
gtk_file_chooser_set_current_folder PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_set_current_folder_utf8
|
||||
#endif
|
||||
gtk_file_chooser_set_current_folder_uri
|
||||
gtk_file_chooser_set_current_name
|
||||
gtk_file_chooser_set_extra_widget
|
||||
gtk_file_chooser_set_filename
|
||||
gtk_file_chooser_set_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_set_filename_utf8
|
||||
#endif
|
||||
gtk_file_chooser_set_filter
|
||||
gtk_file_chooser_set_local_only
|
||||
gtk_file_chooser_set_preview_widget
|
||||
@ -829,7 +865,10 @@ gtk_file_chooser_set_show_hidden
|
||||
gtk_file_chooser_set_uri
|
||||
gtk_file_chooser_set_use_preview_label
|
||||
gtk_file_chooser_unselect_all
|
||||
gtk_file_chooser_unselect_filename
|
||||
gtk_file_chooser_unselect_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_chooser_unselect_filename_utf8
|
||||
#endif
|
||||
gtk_file_chooser_unselect_uri
|
||||
gtk_file_chooser_widget_get_type G_GNUC_CONST
|
||||
gtk_file_chooser_widget_new
|
||||
@ -871,13 +910,22 @@ gtk_file_paths_copy
|
||||
gtk_file_paths_free
|
||||
gtk_file_paths_sort
|
||||
gtk_file_selection_complete
|
||||
gtk_file_selection_get_filename
|
||||
gtk_file_selection_get_selections
|
||||
gtk_file_selection_get_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_selection_get_filename_utf8
|
||||
#endif
|
||||
gtk_file_selection_get_selections PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_selection_get_selections_utf8
|
||||
#endif
|
||||
gtk_file_selection_get_select_multiple
|
||||
gtk_file_selection_get_type G_GNUC_CONST
|
||||
gtk_file_selection_hide_fileop_buttons
|
||||
gtk_file_selection_new
|
||||
gtk_file_selection_set_filename
|
||||
gtk_file_selection_set_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_file_selection_set_filename_utf8
|
||||
#endif
|
||||
gtk_file_selection_set_select_multiple
|
||||
gtk_file_selection_show_fileop_buttons
|
||||
gtk_file_system_create_folder
|
||||
@ -1019,7 +1067,10 @@ gtk_icon_info_get_base_size
|
||||
gtk_icon_info_get_builtin_pixbuf
|
||||
gtk_icon_info_get_display_name
|
||||
gtk_icon_info_get_embedded_rect
|
||||
gtk_icon_info_get_filename
|
||||
gtk_icon_info_get_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_info_get_filename_utf8
|
||||
#endif
|
||||
gtk_icon_info_get_type G_GNUC_CONST
|
||||
gtk_icon_info_load_icon
|
||||
gtk_icon_info_set_raw_coordinates
|
||||
@ -1044,7 +1095,10 @@ gtk_icon_source_copy
|
||||
gtk_icon_source_free
|
||||
gtk_icon_source_get_direction
|
||||
gtk_icon_source_get_direction_wildcarded
|
||||
gtk_icon_source_get_filename
|
||||
gtk_icon_source_get_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_source_get_filename_utf8
|
||||
#endif
|
||||
gtk_icon_source_get_icon_name
|
||||
gtk_icon_source_get_pixbuf
|
||||
gtk_icon_source_get_size
|
||||
@ -1055,7 +1109,10 @@ gtk_icon_source_get_type G_GNUC_CONST
|
||||
gtk_icon_source_new
|
||||
gtk_icon_source_set_direction
|
||||
gtk_icon_source_set_direction_wildcarded
|
||||
gtk_icon_source_set_filename
|
||||
gtk_icon_source_set_filename PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_source_set_filename_utf8
|
||||
#endif
|
||||
gtk_icon_source_set_icon_name
|
||||
gtk_icon_source_set_pixbuf
|
||||
gtk_icon_source_set_size
|
||||
@ -1063,25 +1120,37 @@ gtk_icon_source_set_size_wildcarded
|
||||
gtk_icon_source_set_state
|
||||
gtk_icon_source_set_state_wildcarded
|
||||
gtk_icon_theme_add_builtin_icon
|
||||
gtk_icon_theme_append_search_path
|
||||
gtk_icon_theme_append_search_path PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_theme_append_search_path_utf8
|
||||
#endif
|
||||
gtk_icon_theme_error_get_type
|
||||
gtk_icon_theme_error_quark
|
||||
gtk_icon_theme_get_default
|
||||
gtk_icon_theme_get_example_icon_name
|
||||
gtk_icon_theme_get_for_screen
|
||||
gtk_icon_theme_get_icon_sizes
|
||||
gtk_icon_theme_get_search_path
|
||||
gtk_icon_theme_get_search_path PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_theme_get_search_path_utf8
|
||||
#endif
|
||||
gtk_icon_theme_get_type G_GNUC_CONST
|
||||
gtk_icon_theme_has_icon
|
||||
gtk_icon_theme_list_icons
|
||||
gtk_icon_theme_load_icon
|
||||
gtk_icon_theme_lookup_icon
|
||||
gtk_icon_theme_new
|
||||
gtk_icon_theme_prepend_search_path
|
||||
gtk_icon_theme_prepend_search_path PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_theme_prepend_search_path_utf8
|
||||
#endif
|
||||
gtk_icon_theme_rescan_if_needed
|
||||
gtk_icon_theme_set_custom_theme
|
||||
gtk_icon_theme_set_screen
|
||||
gtk_icon_theme_set_search_path
|
||||
gtk_icon_theme_set_search_path PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_icon_theme_set_search_path_utf8
|
||||
#endif
|
||||
gtk_icon_view_get_markup_column
|
||||
gtk_icon_view_get_model
|
||||
gtk_icon_view_get_orientation
|
||||
@ -1132,7 +1201,10 @@ gtk_image_menu_item_new_with_mnemonic
|
||||
gtk_image_menu_item_set_image
|
||||
gtk_image_new
|
||||
gtk_image_new_from_animation
|
||||
gtk_image_new_from_file
|
||||
gtk_image_new_from_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_image_new_from_file_utf8
|
||||
#endif
|
||||
gtk_image_new_from_icon_name
|
||||
gtk_image_new_from_icon_set
|
||||
gtk_image_new_from_image
|
||||
@ -1141,7 +1213,10 @@ gtk_image_new_from_pixmap
|
||||
gtk_image_new_from_stock
|
||||
gtk_image_set
|
||||
gtk_image_set_from_animation
|
||||
gtk_image_set_from_file
|
||||
gtk_image_set_from_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_image_set_from_file_utf8
|
||||
#endif
|
||||
gtk_image_set_from_icon_name
|
||||
gtk_image_set_from_icon_set
|
||||
gtk_image_set_from_image
|
||||
@ -1666,7 +1741,10 @@ gtk_range_set_range
|
||||
gtk_range_set_update_policy
|
||||
gtk_range_set_value
|
||||
gtk_rc_add_class_style
|
||||
gtk_rc_add_default_file
|
||||
gtk_rc_add_default_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_rc_add_default_file_utf8
|
||||
#endif
|
||||
gtk_rc_add_widget_class_style
|
||||
gtk_rc_add_widget_name_style
|
||||
gtk_rc_find_module_in_path
|
||||
@ -1679,7 +1757,10 @@ gtk_rc_get_module_dir
|
||||
gtk_rc_get_style
|
||||
gtk_rc_get_style_by_paths
|
||||
gtk_rc_get_theme_dir
|
||||
gtk_rc_parse
|
||||
gtk_rc_parse PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_rc_parse_utf8
|
||||
#endif
|
||||
gtk_rc_parse_color
|
||||
gtk_rc_parse_priority
|
||||
gtk_rc_parse_state
|
||||
@ -1693,7 +1774,10 @@ gtk_rc_reparse_all
|
||||
gtk_rc_reparse_all_for_settings
|
||||
gtk_rc_reset_styles
|
||||
gtk_rc_scanner_new
|
||||
gtk_rc_set_default_files
|
||||
gtk_rc_set_default_files PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_rc_set_default_files_utf8
|
||||
#endif
|
||||
gtk_rc_style_copy
|
||||
gtk_rc_style_get_type G_GNUC_CONST
|
||||
gtk_rc_style_new
|
||||
@ -2627,7 +2711,10 @@ gtk_type_init
|
||||
gtk_type_new
|
||||
gtk_type_unique
|
||||
gtk_ui_manager_add_ui
|
||||
gtk_ui_manager_add_ui_from_file
|
||||
gtk_ui_manager_add_ui_from_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_ui_manager_add_ui_from_file_utf8
|
||||
#endif
|
||||
gtk_ui_manager_add_ui_from_string
|
||||
gtk_ui_manager_ensure_update
|
||||
gtk_ui_manager_get_accel_group
|
||||
@ -2868,7 +2955,10 @@ gtk_window_set_auto_startup_notification
|
||||
gtk_window_set_decorated
|
||||
gtk_window_set_default
|
||||
gtk_window_set_default_icon
|
||||
gtk_window_set_default_icon_from_file
|
||||
gtk_window_set_default_icon_from_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_window_set_default_icon_from_file_utf8
|
||||
#endif
|
||||
gtk_window_set_default_icon_list
|
||||
gtk_window_set_default_icon_name
|
||||
gtk_window_set_default_size
|
||||
@ -2880,7 +2970,10 @@ gtk_window_set_geometry_hints
|
||||
gtk_window_set_gravity
|
||||
gtk_window_set_has_frame
|
||||
gtk_window_set_icon
|
||||
gtk_window_set_icon_from_file
|
||||
gtk_window_set_icon_from_file PRIVATE
|
||||
#ifdef G_OS_WIN32
|
||||
gtk_window_set_icon_from_file_utf8
|
||||
#endif
|
||||
gtk_window_set_icon_list
|
||||
gtk_window_set_icon_name
|
||||
gtk_window_set_keep_above
|
||||
|
@ -25,6 +25,8 @@
|
||||
#include "gtkmarshalers.h"
|
||||
#include "gtkwindow.h" /* in lack of GtkAcceleratable */
|
||||
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
@ -603,7 +605,8 @@ gtk_accel_map_load_fd (gint fd)
|
||||
|
||||
/**
|
||||
* gtk_accel_map_load:
|
||||
* @file_name: a file containing accelerator specifications
|
||||
* @file_name: a file containing accelerator specifications,
|
||||
* in the GLib file name encoding
|
||||
*
|
||||
* Parses a file previously saved with gtk_accel_map_save() for
|
||||
* accelerator specifications, and propagates them accordingly.
|
||||
@ -618,7 +621,7 @@ gtk_accel_map_load (const gchar *file_name)
|
||||
if (!g_file_test (file_name, G_FILE_TEST_IS_REGULAR))
|
||||
return;
|
||||
|
||||
fd = open (file_name, O_RDONLY);
|
||||
fd = g_open (file_name, O_RDONLY, 0);
|
||||
if (fd < 0)
|
||||
return;
|
||||
|
||||
@ -713,7 +716,8 @@ gtk_accel_map_save_fd (gint fd)
|
||||
|
||||
/**
|
||||
* gtk_accel_map_save:
|
||||
* @file_name: the file to contain accelerator specifications
|
||||
* @file_name: the name of the file to contain accelerator specifications,
|
||||
* in the GLib file name encoding
|
||||
*
|
||||
* Saves current accelerator specifications (accelerator path, key
|
||||
* and modifiers) to @file_name.
|
||||
@ -727,7 +731,7 @@ gtk_accel_map_save (const gchar *file_name)
|
||||
|
||||
g_return_if_fail (file_name != NULL);
|
||||
|
||||
fd = open (file_name, O_CREAT | O_TRUNC | O_WRONLY, 0644);
|
||||
fd = g_open (file_name, O_CREAT | O_TRUNC | O_WRONLY, 0644);
|
||||
if (fd < 0)
|
||||
return;
|
||||
|
||||
@ -996,3 +1000,31 @@ do_accel_map_changed (AccelEntry *entry)
|
||||
entry->accel_key,
|
||||
entry->accel_mods);
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
#undef gtk_accel_map_load
|
||||
|
||||
void
|
||||
gtk_accel_map_load (const gchar *file_name)
|
||||
{
|
||||
gchar *utf8_file_name = g_locale_to_utf8 (file_name, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_accel_map_load_utf8 (utf8_file_name);
|
||||
|
||||
g_free (utf8_file_name);
|
||||
}
|
||||
|
||||
#undef gtk_accel_map_save
|
||||
|
||||
void
|
||||
gtk_accel_map_save (const gchar *file_name)
|
||||
{
|
||||
gchar *utf8_file_name = g_locale_to_utf8 (file_name, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_accel_map_save_utf8 (utf8_file_name);
|
||||
|
||||
g_free (utf8_file_name);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -44,6 +44,13 @@ typedef void (*GtkAccelMapForeach) (gpointer data,
|
||||
|
||||
|
||||
/* --- public API --- */
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_accel_map_load gtk_accel_map_load_utf8
|
||||
#define gtk_accel_map_save gtk_accel_map_save_utf8
|
||||
#endif
|
||||
|
||||
void gtk_accel_map_add_entry (const gchar *accel_path,
|
||||
guint accel_key,
|
||||
GdkModifierType accel_mods);
|
||||
|
@ -1827,3 +1827,172 @@ gtk_file_chooser_get_show_hidden (GtkFileChooser *chooser)
|
||||
|
||||
return show_hidden;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DLL ABI stability backward compatibility versions */
|
||||
|
||||
#undef gtk_file_chooser_get_filename
|
||||
|
||||
gchar *
|
||||
gtk_file_chooser_get_filename (GtkFileChooser *chooser)
|
||||
{
|
||||
gchar *utf8_filename = gtk_file_chooser_get_filename_utf8 (chooser);
|
||||
gchar *retval = g_locale_from_utf8 (utf8_filename, -1, NULL, NULL, NULL);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_set_filename
|
||||
|
||||
gboolean
|
||||
gtk_file_chooser_set_filename (GtkFileChooser *chooser,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gboolean retval = gtk_file_chooser_set_filename_utf8 (chooser, utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_select_filename
|
||||
|
||||
gboolean
|
||||
gtk_file_chooser_select_filename (GtkFileChooser *chooser,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gboolean retval = gtk_file_chooser_select_filename_utf8 (chooser, utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_unselect_filename
|
||||
|
||||
void
|
||||
gtk_file_chooser_unselect_filename (GtkFileChooser *chooser,
|
||||
const char *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_file_chooser_unselect_filename_utf8 (chooser, utf8_filename);
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_get_filenames
|
||||
|
||||
GSList *
|
||||
gtk_file_chooser_get_filenames (GtkFileChooser *chooser)
|
||||
{
|
||||
GSList *list = gtk_file_chooser_get_filenames_utf8 (chooser);
|
||||
GSList *rover = list;
|
||||
|
||||
while (rover)
|
||||
{
|
||||
gchar *tem = (gchar *) rover->data;
|
||||
rover->data = g_locale_from_utf8 ((gchar *) rover->data, -1, NULL, NULL, NULL);
|
||||
g_free (tem);
|
||||
rover = rover->next;
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_set_current_folder
|
||||
|
||||
gboolean
|
||||
gtk_file_chooser_set_current_folder (GtkFileChooser *chooser,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gboolean retval = gtk_file_chooser_set_current_folder_utf8 (chooser, utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_get_current_folder
|
||||
|
||||
gchar *
|
||||
gtk_file_chooser_get_current_folder (GtkFileChooser *chooser)
|
||||
{
|
||||
gchar *utf8_folder = gtk_file_chooser_get_current_folder_utf8 (chooser);
|
||||
gchar *retval = g_locale_from_utf8 (utf8_folder, -1, NULL, NULL, NULL);
|
||||
|
||||
g_free (utf8_folder);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_get_preview_filename
|
||||
|
||||
char *
|
||||
gtk_file_chooser_get_preview_filename (GtkFileChooser *chooser)
|
||||
{
|
||||
char *utf8_filename = gtk_file_chooser_get_preview_filename_utf8 (chooser);
|
||||
char *retval = g_locale_from_utf8 (utf8_filename, -1, NULL, NULL, NULL);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_add_shortcut_folder
|
||||
|
||||
gboolean
|
||||
gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser,
|
||||
const char *folder,
|
||||
GError **error)
|
||||
{
|
||||
char *utf8_folder = g_locale_to_utf8 (folder, -1, NULL, NULL, NULL);
|
||||
gboolean retval =
|
||||
gtk_file_chooser_add_shortcut_folder_utf8 (chooser, utf8_folder, error);
|
||||
|
||||
g_free (utf8_folder);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_remove_shortcut_folder
|
||||
|
||||
gboolean
|
||||
gtk_file_chooser_remove_shortcut_folder (GtkFileChooser *chooser,
|
||||
const char *folder,
|
||||
GError **error)
|
||||
{
|
||||
char *utf8_folder = g_locale_to_utf8 (folder, -1, NULL, NULL, NULL);
|
||||
gboolean retval =
|
||||
gtk_file_chooser_remove_shortcut_folder_utf8 (chooser, utf8_folder, error);
|
||||
|
||||
g_free (utf8_folder);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_chooser_list_shortcut_folders
|
||||
|
||||
GSList *
|
||||
gtk_file_chooser_list_shortcut_folders (GtkFileChooser *chooser)
|
||||
{
|
||||
GSList *list = gtk_file_chooser_list_shortcut_folders_utf8 (chooser);
|
||||
GSList *rover = list;
|
||||
|
||||
while (rover)
|
||||
{
|
||||
gchar *tem = (gchar *) rover->data;
|
||||
rover->data = g_locale_from_utf8 ((gchar *) rover->data, -1, NULL, NULL, NULL);
|
||||
g_free (tem);
|
||||
rover = rover->next;
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -75,6 +75,21 @@ void gtk_file_chooser_set_current_name (GtkFileChooser *chooser,
|
||||
|
||||
/* Filename manipulation
|
||||
*/
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_file_chooser_get_filename gtk_file_chooser_get_filename_utf8
|
||||
#define gtk_file_chooser_set_filename gtk_file_chooser_set_filename_utf8
|
||||
#define gtk_file_chooser_select_filename gtk_file_chooser_select_filename_utf8
|
||||
#define gtk_file_chooser_unselect_filename gtk_file_chooser_unselect_filename_utf8
|
||||
#define gtk_file_chooser_get_filenames gtk_file_chooser_get_filenames_utf8
|
||||
#define gtk_file_chooser_set_current_folder gtk_file_chooser_set_current_folder_utf8
|
||||
#define gtk_file_chooser_get_current_folder gtk_file_chooser_get_current_folder_utf8
|
||||
#define gtk_file_chooser_get_preview_filename gtk_file_chooser_get_preview_filename_utf8
|
||||
#define gtk_file_chooser_add_shortcut_folder gtk_file_chooser_add_shortcut_folder_utf8
|
||||
#define gtk_file_chooser_remove_shortcut_folder gtk_file_chooser_remove_shortcut_folder_utf8
|
||||
#define gtk_file_chooser_list_shortcut_folders gtk_file_chooser_list_shortcut_folders_utf8
|
||||
#endif
|
||||
|
||||
gchar * gtk_file_chooser_get_filename (GtkFileChooser *chooser);
|
||||
gboolean gtk_file_chooser_set_filename (GtkFileChooser *chooser,
|
||||
const char *filename);
|
||||
|
@ -43,6 +43,7 @@
|
||||
#endif
|
||||
|
||||
#include <glib.h> /* Include early to get G_OS_WIN32 etc */
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#if defined(G_PLATFORM_WIN32)
|
||||
#include <ctype.h>
|
||||
@ -89,7 +90,6 @@
|
||||
#ifdef G_OS_WIN32
|
||||
#include <direct.h>
|
||||
#include <io.h>
|
||||
#define mkdir(p,m) _mkdir(p)
|
||||
#ifndef S_ISDIR
|
||||
#define S_ISDIR(mode) ((mode)&_S_IFDIR)
|
||||
#endif
|
||||
@ -1194,7 +1194,7 @@ gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel)
|
||||
* working directory and an empty filename, @filename must have a trailing
|
||||
* directory separator.
|
||||
*
|
||||
* The encoding of @filename is the on-disk encoding, which
|
||||
* The encoding of @filename is preferred GLib file name encoding, which
|
||||
* may not be UTF-8. See g_filename_from_utf8().
|
||||
**/
|
||||
void
|
||||
@ -1239,11 +1239,10 @@ gtk_file_selection_set_filename (GtkFileSelection *filesel,
|
||||
* gtk_file_selection_get_filename:
|
||||
* @filesel: a #GtkFileSelection
|
||||
*
|
||||
* This function returns the selected filename in the on-disk encoding
|
||||
* (see g_filename_from_utf8()), which may or may not be the same as that
|
||||
* used by GTK+ (UTF-8). To convert to UTF-8, call g_filename_to_utf8().
|
||||
* The returned string points to a statically allocated buffer and
|
||||
* should be copied if you plan to keep it around.
|
||||
* This function returns the selected filename in the GLib file name
|
||||
* encoding. To convert to UTF-8, call g_filename_to_utf8(). The
|
||||
* returned string points to a statically allocated buffer and should
|
||||
* be copied if you plan to keep it around.
|
||||
*
|
||||
* If no file is selected then the selected directory path is returned.
|
||||
*
|
||||
@ -1253,7 +1252,7 @@ G_CONST_RETURN gchar*
|
||||
gtk_file_selection_get_filename (GtkFileSelection *filesel)
|
||||
{
|
||||
static const gchar nothing[2] = "";
|
||||
static gchar something[MAXPATHLEN*2];
|
||||
static gchar something[MAXPATHLEN*2+1];
|
||||
char *sys_filename;
|
||||
const char *text;
|
||||
|
||||
@ -1270,7 +1269,8 @@ gtk_file_selection_get_filename (GtkFileSelection *filesel)
|
||||
g_free (fullname);
|
||||
if (!sys_filename)
|
||||
return nothing;
|
||||
strncpy (something, sys_filename, sizeof (something));
|
||||
strncpy (something, sys_filename, sizeof (something) - 1);
|
||||
something[sizeof (something) - 1] = '\0';
|
||||
g_free (sys_filename);
|
||||
return something;
|
||||
}
|
||||
@ -1451,7 +1451,7 @@ gtk_file_selection_create_dir_confirmed (GtkWidget *widget,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mkdir (sys_full_path, 0777) < 0)
|
||||
if (g_mkdir (sys_full_path, 0777) < 0)
|
||||
{
|
||||
buf = g_strdup_printf (_("Error creating folder \"%s\": %s\n"), dirname,
|
||||
g_strerror (errno));
|
||||
@ -1581,7 +1581,7 @@ gtk_file_selection_delete_file_response (GtkDialog *dialog,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (unlink (sys_full_path) < 0)
|
||||
if (g_unlink (sys_full_path) < 0)
|
||||
{
|
||||
buf = g_strdup_printf (_("Error deleting file \"%s\": %s"),
|
||||
fs->fileop_file, g_strerror (errno));
|
||||
@ -1701,7 +1701,7 @@ gtk_file_selection_rename_file_confirmed (GtkWidget *widget,
|
||||
goto out2;
|
||||
}
|
||||
|
||||
if (rename (sys_old_filename, sys_new_filename) < 0)
|
||||
if (g_rename (sys_old_filename, sys_new_filename) < 0)
|
||||
{
|
||||
buf = g_strdup_printf (_("Error renaming file \"%s\" to \"%s\": %s"),
|
||||
sys_old_filename, sys_new_filename,
|
||||
@ -2458,9 +2458,8 @@ maybe_clear_entry:
|
||||
* This function is intended for use when the user can select multiple files
|
||||
* in the file list.
|
||||
*
|
||||
* The filenames are in the encoding of g_filename_from_utf8(), which may or
|
||||
* may not be the same as that used by GTK+ (UTF-8). To convert to UTF-8, call
|
||||
* g_filename_to_utf8() on each string.
|
||||
* The filenames are in the GLib file name encoding. To convert to
|
||||
* UTF-8, call g_filename_to_utf8() on each string.
|
||||
*
|
||||
* Return value: a newly-allocated %NULL-terminated array of strings. Use
|
||||
* g_strfreev() to free it.
|
||||
@ -3172,7 +3171,7 @@ open_new_dir (gchar *dir_name,
|
||||
if (stat_subdirs)
|
||||
{
|
||||
/* Here we know path->str is a "system charset" string */
|
||||
if (stat (path->str, &ent_sbuf) >= 0 && S_ISDIR (ent_sbuf.st_mode))
|
||||
if (g_stat (path->str, &ent_sbuf) >= 0 && S_ISDIR (ent_sbuf.st_mode))
|
||||
sent->entries[n_entries].is_dir = TRUE;
|
||||
else
|
||||
/* stat may fail, and we don't mind, since it could be a
|
||||
@ -3226,7 +3225,7 @@ check_dir (gchar *dir_name,
|
||||
initialized = TRUE;
|
||||
for (i = 0; i < n_no_stat_dirs; i++)
|
||||
{
|
||||
if (stat (no_stat_dirs[i].name, &no_stat_dirs[i].statbuf) == 0)
|
||||
if (g_stat (no_stat_dirs[i].name, &no_stat_dirs[i].statbuf) == 0)
|
||||
no_stat_dirs[i].present = TRUE;
|
||||
}
|
||||
}
|
||||
@ -3238,7 +3237,7 @@ check_dir (gchar *dir_name,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stat (sys_dir_name, result) < 0)
|
||||
if (g_stat (sys_dir_name, result) < 0)
|
||||
{
|
||||
g_free (sys_dir_name);
|
||||
cmpl_errno = errno;
|
||||
@ -3380,7 +3379,7 @@ correct_dir_fullname (CompletionDir* cmpl_dir)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stat (sys_filename, &sbuf) < 0)
|
||||
if (g_stat (sys_filename, &sbuf) < 0)
|
||||
{
|
||||
g_free (sys_filename);
|
||||
cmpl_errno = errno;
|
||||
@ -3414,7 +3413,7 @@ correct_dir_fullname (CompletionDir* cmpl_dir)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stat (sys_filename, &sbuf) < 0)
|
||||
if (g_stat (sys_filename, &sbuf) < 0)
|
||||
{
|
||||
g_free (sys_filename);
|
||||
cmpl_errno = errno;
|
||||
@ -3472,7 +3471,7 @@ correct_parent (CompletionDir *cmpl_dir,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stat (sys_filename, &parbuf) < 0)
|
||||
if (g_stat (sys_filename, &parbuf) < 0)
|
||||
{
|
||||
g_free (sys_filename);
|
||||
cmpl_errno = errno;
|
||||
@ -4036,3 +4035,59 @@ cmpl_strerror (gint err)
|
||||
else
|
||||
return g_strerror (err);
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DLL ABI stability backward compatibility versions */
|
||||
|
||||
#undef gtk_file_selection_get_filename
|
||||
|
||||
G_CONST_RETURN gchar*
|
||||
gtk_file_selection_get_filename (GtkFileSelection *filesel)
|
||||
{
|
||||
static gchar retval[MAXPATHLEN*2+1];
|
||||
gchar *tem;
|
||||
|
||||
tem = g_locale_from_utf8 (gtk_file_selection_get_filename_utf8 (filesel),
|
||||
-1, NULL, NULL, NULL);
|
||||
|
||||
strncpy (retval, tem, sizeof (retval) - 1);
|
||||
retval[sizeof (retval) - 1] = '\0';
|
||||
g_free (tem);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_file_selection_set_filename
|
||||
|
||||
void
|
||||
gtk_file_selection_set_filename (GtkFileSelection *filesel,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gtk_file_selection_set_filename_utf8 (filesel, utf8_filename);
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#undef gtk_file_selection_get_selections
|
||||
|
||||
gchar **
|
||||
gtk_file_selection_get_selections (GtkFileSelection *filesel)
|
||||
{
|
||||
int i = 0;
|
||||
gchar **selections = gtk_file_selection_get_selections_utf8 (filesel);
|
||||
|
||||
if (selections != NULL)
|
||||
while (selections[i] != NULL)
|
||||
{
|
||||
gchar *tem = selections[i];
|
||||
selections[i] = g_locale_from_utf8 (selections[i],
|
||||
-1, NULL, NULL, NULL);
|
||||
g_free (tem);
|
||||
i++;
|
||||
}
|
||||
|
||||
return selections;
|
||||
}
|
||||
|
||||
#endif /* G_OS_WIN32 */
|
||||
|
@ -94,16 +94,17 @@ struct _GtkFileSelectionClass
|
||||
};
|
||||
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_file_selection_get_filename gtk_file_selection_get_filename_utf8
|
||||
#define gtk_file_selection_set_filename gtk_file_selection_set_filename_utf8
|
||||
#define gtk_file_selection_get_selections gtk_file_selection_get_selections_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_file_selection_get_type (void) G_GNUC_CONST;
|
||||
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 points to a statically allocated buffer and
|
||||
* should be copied away.
|
||||
*/
|
||||
G_CONST_RETURN gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);
|
||||
|
||||
void gtk_file_selection_complete (GtkFileSelection *filesel,
|
||||
|
@ -27,6 +27,8 @@
|
||||
#include "gtkstock.h"
|
||||
#include "gtkiconfactory.h"
|
||||
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@ -39,7 +41,6 @@
|
||||
#include <shellapi.h> /* ExtractAssociatedIcon */
|
||||
#include <direct.h>
|
||||
#include <io.h>
|
||||
#define mkdir(p,m) _mkdir(p)
|
||||
#include <gdk/win32/gdkwin32.h> /* gdk_win32_hdc_get */
|
||||
#else
|
||||
#error "The implementation is win32 only."
|
||||
@ -371,10 +372,10 @@ gtk_file_system_win32_get_volume_for_path (GtkFileSystem *file_system,
|
||||
}
|
||||
|
||||
static GtkFileFolder *
|
||||
gtk_file_system_win32_get_folder (GtkFileSystem *file_system,
|
||||
const GtkFilePath *path,
|
||||
GtkFileInfoType types,
|
||||
GError **error)
|
||||
gtk_file_system_win32_get_folder (GtkFileSystem *file_system,
|
||||
const GtkFilePath *path,
|
||||
GtkFileInfoType types,
|
||||
GError **error)
|
||||
{
|
||||
GtkFileSystemWin32 *system_win32;
|
||||
GtkFileFolderWin32 *folder_win32;
|
||||
@ -393,7 +394,7 @@ gtk_file_system_win32_get_folder (GtkFileSystem *file_system,
|
||||
if (!g_file_test (filename, G_FILE_TEST_IS_DIR))
|
||||
{
|
||||
int save_errno = errno;
|
||||
gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gchar *display_filename = g_filename_display_name (filename);
|
||||
|
||||
/* If g_file_test() returned FALSE but not due to an error, it means
|
||||
* that the filename is not a directory.
|
||||
@ -404,17 +405,17 @@ gtk_file_system_win32_get_folder (GtkFileSystem *file_system,
|
||||
GTK_FILE_SYSTEM_ERROR,
|
||||
GTK_FILE_SYSTEM_ERROR_NOT_FOLDER,
|
||||
_("%s: %s"),
|
||||
filename_utf8 ? filename_utf8 : "???",
|
||||
display_filename,
|
||||
g_strerror (ENOTDIR));
|
||||
else
|
||||
g_set_error (error,
|
||||
GTK_FILE_SYSTEM_ERROR,
|
||||
GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
|
||||
_("error getting information for '%s': %s"),
|
||||
filename_utf8 ? filename_utf8 : "???",
|
||||
display_filename,
|
||||
g_strerror (save_errno));
|
||||
|
||||
g_free (filename_utf8);
|
||||
g_free (display_filename);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -443,18 +444,18 @@ gtk_file_system_win32_create_folder (GtkFileSystem *file_system,
|
||||
filename = filename_from_path (path);
|
||||
g_return_val_if_fail (filename != NULL, FALSE);
|
||||
|
||||
result = mkdir (filename, 0777) == 0;
|
||||
result = g_mkdir (filename, 0777) == 0;
|
||||
|
||||
if (!result)
|
||||
{
|
||||
gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
gchar *display_filename = g_filename_display_name (filename);
|
||||
g_set_error (error,
|
||||
GTK_FILE_SYSTEM_ERROR,
|
||||
GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
|
||||
_("error creating directory '%s': %s"),
|
||||
filename_utf8 ? filename_utf8 : "???",
|
||||
display_filename,
|
||||
g_strerror (errno));
|
||||
g_free (filename_utf8);
|
||||
g_free (display_filename);
|
||||
}
|
||||
else if (!filename_is_drive_root (filename))
|
||||
{
|
||||
@ -517,7 +518,7 @@ gtk_file_system_win32_volume_mount (GtkFileSystem *file_system,
|
||||
|
||||
static gchar *
|
||||
gtk_file_system_win32_volume_get_display_name (GtkFileSystem *file_system,
|
||||
GtkFileSystemVolume *volume)
|
||||
GtkFileSystemVolume *volume)
|
||||
{
|
||||
gchar *real_display_name;
|
||||
gunichar2 *wdrive = g_utf8_to_utf16 (volume->drive, -1, NULL, NULL, NULL);
|
||||
@ -526,12 +527,12 @@ gtk_file_system_win32_volume_get_display_name (GtkFileSystem *file_system,
|
||||
g_return_val_if_fail (wdrive != NULL, NULL);
|
||||
|
||||
if (GetVolumeInformationW (wdrive,
|
||||
wname, G_N_ELEMENTS(wname),
|
||||
NULL, /* serial number */
|
||||
NULL, /* max. component length */
|
||||
NULL, /* fs flags */
|
||||
NULL, 0) /* fs type like FAT, NTFS */
|
||||
&& wname[0])
|
||||
wname, G_N_ELEMENTS(wname),
|
||||
NULL, /* serial number */
|
||||
NULL, /* max. component length */
|
||||
NULL, /* fs flags */
|
||||
NULL, 0) /* fs type like FAT, NTFS */
|
||||
&& wname[0])
|
||||
{
|
||||
gchar *name = g_utf16_to_utf8 (wname, -1, NULL, NULL, NULL);
|
||||
real_display_name = g_strconcat (name, " (", volume->drive, ")", NULL);
|
||||
@ -547,10 +548,10 @@ gtk_file_system_win32_volume_get_display_name (GtkFileSystem *file_system,
|
||||
|
||||
static GdkPixbuf *
|
||||
gtk_file_system_win32_volume_render_icon (GtkFileSystem *file_system,
|
||||
GtkFileSystemVolume *volume,
|
||||
GtkWidget *widget,
|
||||
gint pixel_size,
|
||||
GError **error)
|
||||
GtkFileSystemVolume *volume,
|
||||
GtkWidget *widget,
|
||||
gint pixel_size,
|
||||
GError **error)
|
||||
{
|
||||
GtkIconSet *icon_set = NULL;
|
||||
DWORD dt = GetDriveType (volume->drive);
|
||||
@ -618,32 +619,15 @@ gtk_file_system_win32_make_path (GtkFileSystem *file_system,
|
||||
GError **error)
|
||||
{
|
||||
const char *base_filename;
|
||||
gchar *filename;
|
||||
gchar *full_filename;
|
||||
GError *tmp_error = NULL;
|
||||
GtkFilePath *result;
|
||||
|
||||
base_filename = gtk_file_path_get_string (base_path);
|
||||
g_return_val_if_fail (base_filename != NULL, NULL);
|
||||
g_return_val_if_fail (g_path_is_absolute (base_filename), NULL);
|
||||
|
||||
filename = g_filename_from_utf8 (display_name, -1, NULL, NULL, &tmp_error);
|
||||
if (!filename)
|
||||
{
|
||||
g_set_error (error,
|
||||
GTK_FILE_SYSTEM_ERROR,
|
||||
GTK_FILE_SYSTEM_ERROR_BAD_FILENAME,
|
||||
"%s",
|
||||
tmp_error->message);
|
||||
|
||||
g_error_free (tmp_error);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
full_filename = g_build_filename (base_filename, filename, NULL);
|
||||
full_filename = g_build_filename (base_filename, display_name, NULL);
|
||||
result = filename_to_path (full_filename);
|
||||
g_free (filename);
|
||||
g_free (full_filename);
|
||||
|
||||
return result;
|
||||
@ -780,19 +764,16 @@ gtk_file_system_win32_parse (GtkFileSystem *file_system,
|
||||
{
|
||||
if (g_ascii_isalpha (base_filename[0]) &&
|
||||
base_filename[1] == ':')
|
||||
folder_part = g_strdup_printf ("%c:%c", base_filename[0],
|
||||
G_DIR_SEPARATOR);
|
||||
folder_part = g_strdup_printf ("%c:" G_DIR_SEPARATOR_S, base_filename[0]);
|
||||
else
|
||||
folder_part = g_strdup (G_DIR_SEPARATOR_S);
|
||||
}
|
||||
else if (g_ascii_isalpha (str[0]) &&
|
||||
str[1] == ':' &&
|
||||
G_IS_DIR_SEPARATOR (str[2]))
|
||||
folder_part = g_filename_from_utf8 (str, last_slash - str + 1,
|
||||
NULL, NULL, &tmp_error);
|
||||
folder_part = g_strdup_printf ("%c:" G_DIR_SEPARATOR_S, str[0]);
|
||||
else
|
||||
folder_part = g_filename_from_utf8 (str, last_slash - str,
|
||||
NULL, NULL, &tmp_error);
|
||||
folder_part = g_strndup (str, last_slash - str);
|
||||
|
||||
if (!folder_part)
|
||||
{
|
||||
@ -904,7 +885,7 @@ bookmarks_serialize (GSList **bookmarks,
|
||||
else
|
||||
ok = FALSE;
|
||||
}
|
||||
if (ok && (f = fopen (filename, "wb")) != NULL)
|
||||
if (ok && (f = g_fopen (filename, "wb")) != NULL)
|
||||
{
|
||||
entry = g_slist_find_custom (list, uri, (GCompareFunc) strcmp);
|
||||
if (add)
|
||||
@ -1294,7 +1275,6 @@ gtk_file_folder_win32_get_info (GtkFileFolder *folder,
|
||||
{
|
||||
GtkFileFolderWin32 *folder_win32 = GTK_FILE_FOLDER_WIN32 (folder);
|
||||
GtkFileInfo *info;
|
||||
gchar *dirname;
|
||||
gchar *filename;
|
||||
|
||||
if (!path)
|
||||
@ -1310,12 +1290,6 @@ gtk_file_folder_win32_get_info (GtkFileFolder *folder,
|
||||
filename = filename_from_path (path);
|
||||
g_return_val_if_fail (filename != NULL, NULL);
|
||||
|
||||
#if 0
|
||||
dirname = g_path_get_dirname (filename);
|
||||
g_return_val_if_fail (strcmp (dirname, folder_win32->filename) == 0, NULL);
|
||||
g_free (dirname);
|
||||
#endif
|
||||
|
||||
info = filename_get_info (filename, folder_win32->types, error);
|
||||
|
||||
g_free (filename);
|
||||
@ -1378,17 +1352,39 @@ filename_get_info (const gchar *filename,
|
||||
GtkFileIconType icon_type = GTK_FILE_ICON_REGULAR;
|
||||
#endif
|
||||
WIN32_FILE_ATTRIBUTE_DATA wfad;
|
||||
int rc = 0;
|
||||
|
||||
if (!GetFileAttributesEx (filename, GetFileExInfoStandard, &wfad))
|
||||
if (G_WIN32_HAVE_WIDECHAR_API ())
|
||||
{
|
||||
gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, error);
|
||||
|
||||
if (!wfilename)
|
||||
return NULL;
|
||||
|
||||
rc = GetFileAttributesExW (wfilename, GetFileExInfoStandard, &wfad);
|
||||
g_free (wfilename);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *cpfilename = g_locale_from_utf8 (filename, -1, NULL, NULL, error);
|
||||
|
||||
if (!cpfilename)
|
||||
return NULL;
|
||||
|
||||
rc = GetFileAttributesExA (cpfilename, GetFileExInfoStandard, &wfad);
|
||||
g_free (cpfilename);
|
||||
}
|
||||
|
||||
if (!rc)
|
||||
{
|
||||
gchar *display_filename = g_filename_display_name (filename);
|
||||
g_set_error (error,
|
||||
GTK_FILE_SYSTEM_ERROR,
|
||||
GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
|
||||
_("error getting information for '%s': %s"),
|
||||
filename_utf8 ? filename_utf8 : "???",
|
||||
display_filename,
|
||||
g_win32_error_message (GetLastError ()));
|
||||
g_free (filename_utf8);
|
||||
g_free (display_filename);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -1409,21 +1405,17 @@ filename_get_info (const gchar *filename,
|
||||
|
||||
if (types & GTK_FILE_INFO_DISPLAY_NAME)
|
||||
{
|
||||
gchar *display_name = g_filename_to_utf8 (basename, -1, NULL, NULL, NULL);
|
||||
if (!display_name)
|
||||
display_name = g_strescape (basename, NULL);
|
||||
gchar *display_basename = g_filename_display_name (basename);
|
||||
|
||||
gtk_file_info_set_display_name (info, display_name);
|
||||
|
||||
g_free (display_name);
|
||||
gtk_file_info_set_display_name (info, display_basename);
|
||||
g_free (display_basename);
|
||||
}
|
||||
|
||||
if (types & GTK_FILE_INFO_IS_HIDDEN)
|
||||
{
|
||||
/* win32 convention ... */
|
||||
gboolean is_hidden = basename[0] == '.';
|
||||
/* ... _and_ windoze attribute */
|
||||
is_hidden = is_hidden || !!(wfad.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN);
|
||||
/* Unix dot convention or the Windows hidden attribute */
|
||||
gboolean is_hidden = basename[0] == '.' ||
|
||||
!!(wfad.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN);
|
||||
gtk_file_info_set_is_hidden (info, is_hidden);
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,13 @@
|
||||
#include <config.h>
|
||||
#include "gtkdebug.h"
|
||||
#include "gtkiconcache.h"
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#ifdef HAVE_MMAP
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
#ifdef G_OS_WIN32
|
||||
#include <windows.h>
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
@ -35,6 +37,10 @@
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef _O_BINARY
|
||||
#define _O_BINARY 0
|
||||
#endif
|
||||
|
||||
#define MAJOR_VERSION 1
|
||||
#define MINOR_VERSION 0
|
||||
|
||||
@ -46,6 +52,9 @@ struct _GtkIconCache {
|
||||
|
||||
gsize size;
|
||||
gchar *buffer;
|
||||
#ifdef G_OS_WIN32
|
||||
HANDLE handle;
|
||||
#endif
|
||||
};
|
||||
|
||||
GtkIconCache *
|
||||
@ -66,6 +75,10 @@ _gtk_icon_cache_unref (GtkIconCache *cache)
|
||||
g_print ("unmapping icon cache\n"));
|
||||
#ifdef HAVE_MMAP
|
||||
munmap (cache->buffer, cache->size);
|
||||
#endif
|
||||
#ifdef G_OS_WIN32
|
||||
UnmapViewOfFile (cache->buffer);
|
||||
CloseHandle (cache->handle);
|
||||
#endif
|
||||
g_free (cache);
|
||||
}
|
||||
@ -75,12 +88,16 @@ GtkIconCache *
|
||||
_gtk_icon_cache_new_for_path (const gchar *path)
|
||||
{
|
||||
GtkIconCache *cache = NULL;
|
||||
#ifdef HAVE_MMAP
|
||||
|
||||
#if defined(HAVE_MMAP) || defined(G_OS_WIN32)
|
||||
gchar *cache_filename;
|
||||
gint fd;
|
||||
gint fd = -1;
|
||||
struct stat st;
|
||||
struct stat path_st;
|
||||
gchar *buffer;
|
||||
gchar *buffer = NULL;
|
||||
#ifdef G_OS_WIN32
|
||||
HANDLE handle = NULL;
|
||||
#endif
|
||||
|
||||
if (g_getenv ("GTK_NO_ICON_CACHE"))
|
||||
return NULL;
|
||||
@ -91,8 +108,14 @@ _gtk_icon_cache_new_for_path (const gchar *path)
|
||||
GTK_NOTE (ICONTHEME,
|
||||
g_print ("look for cache in %s\n", path));
|
||||
|
||||
/* Open the file and mmap it */
|
||||
fd = open (cache_filename, O_RDONLY);
|
||||
if (!g_file_test (cache_filename, G_FILE_TEST_IS_REGULAR))
|
||||
goto done;
|
||||
|
||||
if (g_stat (path, &path_st) < 0)
|
||||
goto done;
|
||||
|
||||
/* Open the file and map it into memory */
|
||||
fd = g_open (cache_filename, O_RDONLY|_O_BINARY, 0);
|
||||
|
||||
if (fd < 0)
|
||||
{
|
||||
@ -100,15 +123,9 @@ _gtk_icon_cache_new_for_path (const gchar *path)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!g_file_test (cache_filename, G_FILE_TEST_IS_REGULAR))
|
||||
goto done;
|
||||
|
||||
if (fstat (fd, &st) < 0 || st.st_size < 4)
|
||||
goto done;
|
||||
|
||||
if (stat (path, &path_st) < 0)
|
||||
goto done;
|
||||
|
||||
/* Verify cache is uptodate */
|
||||
if (st.st_mtime < path_st.st_mtime)
|
||||
{
|
||||
@ -117,16 +134,36 @@ _gtk_icon_cache_new_for_path (const gchar *path)
|
||||
goto done;
|
||||
}
|
||||
|
||||
#ifndef G_OS_WIN32
|
||||
buffer = (gchar *) mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
|
||||
|
||||
if (buffer == MAP_FAILED)
|
||||
goto done;
|
||||
#else
|
||||
handle = CreateFileMapping (_get_osfhandle (fd), NULL, PAGE_READONLY,
|
||||
0, 0, NULL);
|
||||
if (handle == NULL)
|
||||
goto done;
|
||||
|
||||
buffer = MapViewOfFile (handle, FILE_MAP_READ, 0, 0, 0);
|
||||
|
||||
if (buffer == NULL)
|
||||
{
|
||||
CloseHandle (handle);
|
||||
goto done;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Verify version */
|
||||
if (GET_UINT16 (buffer, 0) != MAJOR_VERSION ||
|
||||
GET_UINT16 (buffer, 2) != MINOR_VERSION)
|
||||
{
|
||||
#ifndef G_OS_WIN32
|
||||
munmap (buffer, st.st_size);
|
||||
#else
|
||||
UnmapViewOfFile (buffer);
|
||||
CloseHandle (handle);
|
||||
#endif
|
||||
GTK_NOTE (ICONTHEME,
|
||||
g_print ("wrong cache version\n"));
|
||||
goto done;
|
||||
@ -138,12 +175,16 @@ _gtk_icon_cache_new_for_path (const gchar *path)
|
||||
cache = g_new0 (GtkIconCache, 1);
|
||||
cache->ref_count = 1;
|
||||
cache->buffer = buffer;
|
||||
#ifdef G_OS_WIN32
|
||||
cache->handle = handle;
|
||||
#endif
|
||||
cache->size = st.st_size;
|
||||
done:
|
||||
g_free (cache_filename);
|
||||
close (fd);
|
||||
if (fd != -1)
|
||||
close (fd);
|
||||
|
||||
#endif /* HAVE_MMAP */
|
||||
#endif /* HAVE_MMAP || G_OS_WIN32 */
|
||||
|
||||
return cache;
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ struct _GtkIconSource
|
||||
gchar *filename;
|
||||
GdkPixbuf *pixbuf;
|
||||
} source;
|
||||
|
||||
|
||||
GdkPixbuf *filename_pixbuf;
|
||||
|
||||
GtkTextDirection direction;
|
||||
@ -72,6 +72,13 @@ struct _GtkIconSource
|
||||
guint any_direction : 1;
|
||||
guint any_state : 1;
|
||||
guint any_size : 1;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* System codepage version of filename, for DLL ABI backward
|
||||
* compatibility functions.
|
||||
*/
|
||||
gchar *cp_filename;
|
||||
#endif
|
||||
};
|
||||
|
||||
static gpointer parent_class = NULL;
|
||||
@ -2131,6 +2138,9 @@ gtk_icon_source_copy (const GtkIconSource *source)
|
||||
break;
|
||||
case GTK_ICON_SOURCE_FILENAME:
|
||||
copy->source.filename = g_strdup (copy->source.filename);
|
||||
#ifdef G_OS_WIN32
|
||||
copy->cp_filename = g_strdup (copy->cp_filename);
|
||||
#endif
|
||||
if (copy->filename_pixbuf)
|
||||
g_object_ref (copy->filename_pixbuf);
|
||||
break;
|
||||
@ -2187,6 +2197,10 @@ icon_source_clear (GtkIconSource *source)
|
||||
case GTK_ICON_SOURCE_FILENAME:
|
||||
g_free (source->source.filename);
|
||||
source->source.filename = NULL;
|
||||
#ifdef G_OS_WIN32
|
||||
g_free (source->cp_filename);
|
||||
source->cp_filename = NULL;
|
||||
#endif
|
||||
if (source->filename_pixbuf)
|
||||
g_object_unref (source->filename_pixbuf);
|
||||
source->filename_pixbuf = NULL;
|
||||
@ -2227,6 +2241,9 @@ gtk_icon_source_set_filename (GtkIconSource *source,
|
||||
{
|
||||
source->type = GTK_ICON_SOURCE_FILENAME;
|
||||
source->source.filename = g_strdup (filename);
|
||||
#ifdef G_OS_WIN32
|
||||
source->cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -2939,3 +2956,35 @@ _gtk_icon_factory_list_ids (void)
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DLL ABI stability backward compatibility versions */
|
||||
|
||||
#undef gtk_icon_source_set_filename
|
||||
|
||||
void
|
||||
gtk_icon_source_set_filename (GtkIconSource *source,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_icon_source_set_filename_utf8 (source, utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#undef gtk_icon_source_get_filename
|
||||
|
||||
G_CONST_RETURN gchar*
|
||||
gtk_icon_source_get_filename (const GtkIconSource *source)
|
||||
{
|
||||
g_return_val_if_fail (source != NULL, NULL);
|
||||
|
||||
if (source->type == GTK_ICON_SOURCE_FILENAME)
|
||||
return source->cp_filename;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -63,6 +63,12 @@ struct _GtkIconFactoryClass
|
||||
void (*_gtk_reserved4) (void);
|
||||
};
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_icon_source_set_filename gtk_icon_source_set_filename_utf8
|
||||
#define gtk_icon_source_get_filename gtk_icon_source_get_filename_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_icon_factory_get_type (void) G_GNUC_CONST;
|
||||
GtkIconFactory* gtk_icon_factory_new (void);
|
||||
void gtk_icon_factory_add (GtkIconFactory *factory,
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <glib.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include "gtkalias.h"
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
@ -103,6 +104,12 @@ struct _GtkIconInfo
|
||||
/* Information about the source
|
||||
*/
|
||||
gchar *filename;
|
||||
#ifdef G_OS_WIN32
|
||||
/* System codepage version of filename, for DLL ABI backward
|
||||
* compatibility functions.
|
||||
*/
|
||||
gchar *cp_filename;
|
||||
#endif
|
||||
GdkPixbuf *builtin_pixbuf;
|
||||
|
||||
GtkIconData *data;
|
||||
@ -885,7 +892,7 @@ insert_theme (GtkIconTheme *icon_theme, const char *theme_name)
|
||||
NULL);
|
||||
dir_mtime = g_new (IconThemeDirMtime, 1);
|
||||
dir_mtime->dir = path;
|
||||
if (stat (path, &stat_buf) == 0 && S_ISDIR (stat_buf.st_mode))
|
||||
if (g_stat (path, &stat_buf) == 0 && S_ISDIR (stat_buf.st_mode))
|
||||
dir_mtime->mtime = stat_buf.st_mtime;
|
||||
else
|
||||
dir_mtime->mtime = 0;
|
||||
@ -1214,6 +1221,10 @@ gtk_icon_theme_lookup_icon (GtkIconTheme *icon_theme,
|
||||
icon_info->filename = g_strdup (unthemed_icon->svg_filename);
|
||||
else if (unthemed_icon->no_svg_filename)
|
||||
icon_info->filename = g_strdup (unthemed_icon->no_svg_filename);
|
||||
#ifdef G_OS_WIN32
|
||||
icon_info->cp_filename = g_locale_from_utf8 (icon_info->filename,
|
||||
-1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
icon_info->dir_type = ICON_THEME_DIR_UNTHEMED;
|
||||
}
|
||||
@ -1629,7 +1640,7 @@ gtk_icon_theme_rescan_if_needed (GtkIconTheme *icon_theme)
|
||||
{
|
||||
dir_mtime = d->data;
|
||||
|
||||
stat_res = stat (dir_mtime->dir, &stat_buf);
|
||||
stat_res = g_stat (dir_mtime->dir, &stat_buf);
|
||||
|
||||
/* dir mtime didn't change */
|
||||
if (stat_res == 0 &&
|
||||
@ -1880,7 +1891,10 @@ theme_lookup_icon (IconTheme *theme,
|
||||
file = g_strconcat (icon_name, string_from_suffix (suffix), NULL);
|
||||
icon_info->filename = g_build_filename (min_dir->dir, file, NULL);
|
||||
g_free (file);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
icon_info->cp_filename = g_locale_from_utf8 (icon_info->filename,
|
||||
-1, NULL, NULL, NULL);
|
||||
#endif
|
||||
if (min_dir->cache && has_icon_file)
|
||||
{
|
||||
gchar *icon_file_name, *icon_file_path;
|
||||
@ -2282,6 +2296,10 @@ gtk_icon_info_copy (GtkIconInfo *icon_info)
|
||||
copy->load_error = g_error_copy (copy->load_error);
|
||||
if (copy->filename)
|
||||
copy->filename = g_strdup (copy->filename);
|
||||
#ifdef G_OS_WIN32
|
||||
if (copy->cp_filename)
|
||||
copy->cp_filename = g_strdup (copy->cp_filename);
|
||||
#endif
|
||||
|
||||
return copy;
|
||||
}
|
||||
@ -2301,6 +2319,10 @@ gtk_icon_info_free (GtkIconInfo *icon_info)
|
||||
|
||||
if (icon_info->filename)
|
||||
g_free (icon_info->filename);
|
||||
#ifdef G_OS_WIN32
|
||||
if (icon_info->cp_filename)
|
||||
g_free (icon_info->cp_filename);
|
||||
#endif
|
||||
if (icon_info->builtin_pixbuf)
|
||||
g_object_unref (icon_info->builtin_pixbuf);
|
||||
if (icon_info->pixbuf)
|
||||
@ -2900,3 +2922,94 @@ find_builtin_icon (const gchar *icon_name,
|
||||
|
||||
return min_icon;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DLL ABI stability backward compatibility versions */
|
||||
|
||||
#undef gtk_icon_theme_set_search_path
|
||||
|
||||
void
|
||||
gtk_icon_theme_set_search_path (GtkIconTheme *icon_theme,
|
||||
const gchar *path[],
|
||||
gint n_elements)
|
||||
{
|
||||
const gchar **utf8_path;
|
||||
gint i;
|
||||
|
||||
utf8_path = g_new (const gchar *, n_elements);
|
||||
|
||||
for (i = 0; i < n_elements; i++)
|
||||
utf8_path[i] = g_locale_to_utf8 (path[i], -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_icon_theme_set_search_path_utf8 (icon_theme, utf8_path, n_elements);
|
||||
|
||||
for (i = 0; i < n_elements; i++)
|
||||
g_free ((gchar *) utf8_path[i]);
|
||||
|
||||
g_free (utf8_path);
|
||||
}
|
||||
|
||||
#undef gtk_icon_theme_get_search_path
|
||||
|
||||
void
|
||||
gtk_icon_theme_get_search_path (GtkIconTheme *icon_theme,
|
||||
gchar **path[],
|
||||
gint *n_elements)
|
||||
{
|
||||
gint i, n;
|
||||
|
||||
gtk_icon_theme_get_search_path_utf8 (icon_theme, path, &n);
|
||||
|
||||
if (n_elements)
|
||||
*n_elements = n;
|
||||
|
||||
if (path)
|
||||
{
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
gchar *tem = (*path)[i];
|
||||
|
||||
(*path)[i] = g_locale_from_utf8 ((*path)[i], -1, NULL, NULL, NULL);
|
||||
g_free (tem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#undef gtk_icon_theme_append_search_path
|
||||
|
||||
void
|
||||
gtk_icon_theme_append_search_path (GtkIconTheme *icon_theme,
|
||||
const gchar *path)
|
||||
{
|
||||
gchar *utf8_path = g_locale_from_utf8 (path, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_icon_theme_append_search_path_utf8 (icon_theme, utf8_path);
|
||||
|
||||
g_free (utf8_path);
|
||||
}
|
||||
|
||||
#undef gtk_icon_theme_prepend_search_path
|
||||
|
||||
void
|
||||
gtk_icon_theme_prepend_search_path (GtkIconTheme *icon_theme,
|
||||
const gchar *path)
|
||||
{
|
||||
gchar *utf8_path = g_locale_from_utf8 (path, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_icon_theme_prepend_search_path_utf8 (icon_theme, utf8_path);
|
||||
|
||||
g_free (utf8_path);
|
||||
}
|
||||
|
||||
#undef gtk_icon_info_get_filename
|
||||
|
||||
G_CONST_RETURN gchar *
|
||||
gtk_icon_info_get_filename (GtkIconInfo *icon_info)
|
||||
{
|
||||
g_return_val_if_fail (icon_info != NULL, NULL);
|
||||
|
||||
return icon_info->cp_filename;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -92,6 +92,15 @@ typedef enum {
|
||||
|
||||
GQuark gtk_icon_theme_error_quark (void);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old name for DLL ABI backward compatibility */
|
||||
#define gtk_icon_theme_set_search_path gtk_icon_theme_set_search_path_utf8
|
||||
#define gtk_icon_theme_get_search_path gtk_icon_theme_get_search_path_utf8
|
||||
#define gtk_icon_theme_append_search_path gtk_icon_theme_append_search_path_utf8
|
||||
#define gtk_icon_theme_prepend_search_path gtk_icon_theme_prepend_search_path_utf8
|
||||
#define gtk_icon_info_get_filename gtk_icon_info_get_filename_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_icon_theme_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkIconTheme *gtk_icon_theme_new (void);
|
||||
|
@ -2106,3 +2106,35 @@ gtk_image_get_pixel_size (GtkImage *image)
|
||||
|
||||
return priv->pixel_size;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
#undef gtk_image_new_from_file
|
||||
|
||||
GtkWidget*
|
||||
gtk_image_new_from_file (const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
GtkWidget *retval;
|
||||
|
||||
retval = gtk_image_new_from_file_utf8 (utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_image_set_from_file
|
||||
|
||||
void
|
||||
gtk_image_set_from_file (GtkImage *image,
|
||||
const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_image_set_from_file_utf8 (image, utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -141,6 +141,12 @@ struct _GtkImageClass
|
||||
void (*_gtk_reserved4) (void);
|
||||
};
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_image_new_from_file gtk_image_new_from_file_utf8
|
||||
#define gtk_image_set_from_file gtk_image_set_from_file_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_image_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GtkWidget* gtk_image_new (void);
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <glib/gstdio.h>
|
||||
#include <gmodule.h>
|
||||
#include <pango/pango-utils.h>
|
||||
#include "gtkalias.h"
|
||||
@ -45,6 +46,10 @@
|
||||
* else.
|
||||
*/
|
||||
|
||||
#ifdef __GTK_PRIVATE_H__
|
||||
#error gtkprivate.h should not be included in this file
|
||||
#endif
|
||||
|
||||
#define SIMPLE_ID "gtk-im-context-simple"
|
||||
|
||||
typedef struct _GtkIMModule GtkIMModule;
|
||||
@ -279,7 +284,7 @@ gtk_im_module_init (void)
|
||||
|
||||
contexts_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
file = fopen (filename, "r");
|
||||
file = g_fopen (filename, "r");
|
||||
if (!file)
|
||||
{
|
||||
/* In case someone wants only the default input method,
|
||||
@ -353,7 +358,7 @@ gtk_im_module_init (void)
|
||||
goto context_error;
|
||||
info->domain_dirname = g_strdup (tmp_buf->str);
|
||||
#ifdef DO_CORRECT_LIBDIR_PREFIX
|
||||
correct_libdir_prefix (&info->domain_dirname);
|
||||
correct_libdir_prefix ((char **) &info->domain_dirname);
|
||||
#endif
|
||||
|
||||
if (!pango_scan_string (&p, tmp_buf))
|
||||
|
@ -70,6 +70,13 @@ get_module_path (void)
|
||||
module_path_env = g_getenv ("GTK_PATH");
|
||||
exe_prefix = g_getenv ("GTK_EXE_PREFIX");
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (module_path_env)
|
||||
module_path_env = g_locale_to_utf8 (module_path_env, -1, NULL, NULL, NULL);
|
||||
if (exe_prefix)
|
||||
exe_prefix = g_locale_to_utf8 (exe_prefix, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (exe_prefix)
|
||||
default_dir = g_build_filename (exe_prefix, "lib", "gtk-2.0", NULL);
|
||||
else
|
||||
@ -88,6 +95,13 @@ get_module_path (void)
|
||||
module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
|
||||
default_dir, NULL);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (module_path_env)
|
||||
g_free ((void *) module_path_env);
|
||||
if (exe_prefix)
|
||||
g_free ((void *) exe_prefix);
|
||||
#endif
|
||||
|
||||
g_free (home_gtk_dir);
|
||||
g_free (default_dir);
|
||||
|
||||
|
119
gtk/gtkrc.c
119
gtk/gtkrc.c
@ -41,11 +41,8 @@
|
||||
|
||||
#include "gtkalias.h"
|
||||
|
||||
#ifndef HAVE_LSTAT
|
||||
#define lstat stat
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include "gdkconfig.h"
|
||||
|
||||
#include "gtkversion.h"
|
||||
@ -313,11 +310,21 @@ gtk_rc_make_default_dir (const gchar *type)
|
||||
gchar *path;
|
||||
|
||||
var = g_getenv ("GTK_EXE_PREFIX");
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
var = g_locale_to_utf8 (var, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (var)
|
||||
path = g_build_filename (var, "lib", "gtk-2.0", GTK_BINARY_VERSION, type, NULL);
|
||||
else
|
||||
path = g_build_filename (GTK_LIBDIR, "gtk-2.0", GTK_BINARY_VERSION, type, NULL);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
g_free ((void *) var);
|
||||
#endif
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@ -354,7 +361,16 @@ gtk_rc_get_im_module_path (void)
|
||||
gchar *
|
||||
gtk_rc_get_im_module_file (void)
|
||||
{
|
||||
gchar *result = g_strdup (g_getenv ("GTK_IM_MODULE_FILE"));
|
||||
const gchar *var = g_getenv ("GTK_IM_MODULE_FILE");
|
||||
gchar *result = NULL;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
var = g_locale_to_utf8 (var, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (var)
|
||||
result = g_strdup (var);
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@ -364,6 +380,11 @@ gtk_rc_get_im_module_file (void)
|
||||
result = g_build_filename (GTK_SYSCONFDIR, "gtk-2.0", "gtk.immodules", NULL);
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
g_free ((void *) var);
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -374,11 +395,22 @@ gtk_rc_get_theme_dir (void)
|
||||
gchar *path;
|
||||
|
||||
var = g_getenv ("GTK_DATA_PREFIX");
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
var = g_locale_to_utf8 (var, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (var)
|
||||
path = g_build_filename (var, "share", "themes", NULL);
|
||||
else
|
||||
path = g_build_filename (GTK_DATA_PREFIX, "share", "themes", NULL);
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
g_free ((void *) var);
|
||||
#endif
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
@ -414,6 +446,12 @@ gtk_rc_add_initial_default_files (void)
|
||||
init = TRUE;
|
||||
|
||||
var = g_getenv ("GTK2_RC_FILES");
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
var = g_locale_to_utf8 (var, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (var)
|
||||
{
|
||||
files = g_strsplit (var, G_SEARCHPATH_SEPARATOR_S, 128);
|
||||
@ -427,19 +465,25 @@ gtk_rc_add_initial_default_files (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
const gchar *home;
|
||||
str = g_build_filename (GTK_SYSCONFDIR, "gtk-2.0", "gtkrc", NULL);
|
||||
|
||||
gtk_rc_add_default_file (str);
|
||||
g_free (str);
|
||||
|
||||
var = g_get_home_dir ();
|
||||
if (var)
|
||||
home = g_get_home_dir ();
|
||||
if (home)
|
||||
{
|
||||
str = g_build_filename (var, ".gtkrc-2.0", NULL);
|
||||
str = g_build_filename (home, ".gtkrc-2.0", NULL);
|
||||
gtk_rc_add_default_file (str);
|
||||
g_free (str);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (var)
|
||||
g_free ((void *) var);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@ -805,13 +849,13 @@ gtk_rc_context_parse_one_file (GtkRcContext *context,
|
||||
if (g_slist_find (current_files_stack, rc_file))
|
||||
return;
|
||||
|
||||
if (!lstat (rc_file->canonical_name, &statbuf))
|
||||
if (!g_lstat (rc_file->canonical_name, &statbuf))
|
||||
{
|
||||
gint fd;
|
||||
|
||||
rc_file->mtime = statbuf.st_mtime;
|
||||
|
||||
fd = open (rc_file->canonical_name, O_RDONLY);
|
||||
fd = g_open (rc_file->canonical_name, O_RDONLY, 0);
|
||||
if (fd < 0)
|
||||
goto out;
|
||||
|
||||
@ -1457,7 +1501,7 @@ gtk_rc_reparse_all_for_settings (GtkSettings *settings,
|
||||
|
||||
if (!rc_file->is_string)
|
||||
{
|
||||
if (!lstat (rc_file->name, &statbuf) &&
|
||||
if (!g_lstat (rc_file->name, &statbuf) &&
|
||||
(statbuf.st_mtime > rc_file->mtime))
|
||||
{
|
||||
mtime_modified = TRUE;
|
||||
@ -3907,3 +3951,56 @@ gtk_rc_parse_stock (GtkRcContext *context,
|
||||
|
||||
return G_TOKEN_NONE;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
/* DLL ABI stability backward compatibility versions */
|
||||
|
||||
#undef gtk_rc_add_default_file
|
||||
|
||||
void
|
||||
gtk_rc_add_default_file (const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_rc_add_default_file_utf8 (utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#undef gtk_rc_set_default_files
|
||||
|
||||
void
|
||||
gtk_rc_set_default_files (gchar **filenames)
|
||||
{
|
||||
gchar **utf8_filenames;
|
||||
int n = 0, i;
|
||||
|
||||
while (filenames[n++] != NULL)
|
||||
;
|
||||
|
||||
utf8_filenames = g_new (gchar *, n + 1);
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
utf8_filenames[i] = g_locale_to_utf8 (filenames[i], -1, NULL, NULL, NULL);
|
||||
|
||||
utf8_filenames[n] = NULL;
|
||||
|
||||
gtk_rc_set_default_files_utf8 (utf8_filenames);
|
||||
|
||||
g_strfreev (utf8_filenames);
|
||||
}
|
||||
|
||||
#undef gtk_rc_parse
|
||||
|
||||
void
|
||||
gtk_rc_parse (const gchar *filename)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
|
||||
gtk_rc_parse_utf8 (utf8_filename);
|
||||
|
||||
g_free (utf8_filename);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -121,6 +121,13 @@ struct _GtkRcStyleClass
|
||||
void (*_gtk_reserved4) (void);
|
||||
};
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_rc_add_default_file gtk_rc_add_default_file_utf8
|
||||
#define gtk_rc_set_default_files gtk_rc_set_default_files_utf8
|
||||
#define gtk_rc_parse gtk_rc_parse_utf8
|
||||
#endif
|
||||
|
||||
void _gtk_rc_init (void);
|
||||
void gtk_rc_add_default_file (const gchar *filename);
|
||||
void gtk_rc_set_default_files (gchar **filenames);
|
||||
|
@ -2752,3 +2752,26 @@ gtk_ui_manager_get_ui (GtkUIManager *self)
|
||||
return g_string_free (buffer, FALSE);
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
#undef gtk_ui_manager_add_ui_from_file
|
||||
|
||||
guint
|
||||
gtk_ui_manager_add_ui_from_file (GtkUIManager *self,
|
||||
const gchar *filename,
|
||||
GError **error)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, error);
|
||||
guint retval;
|
||||
|
||||
if (utf8_filename == NULL)
|
||||
return 0;
|
||||
|
||||
retval = gtk_ui_manager_add_ui_from_file_utf8 (self, utf8_filename, error);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -102,6 +102,11 @@ typedef enum {
|
||||
GTK_UI_MANAGER_ACCELERATOR = 1 << 8
|
||||
} GtkUIManagerItemType;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old name for DLL ABI backward compatibility */
|
||||
#define gtk_ui_manager_add_ui_from_file gtk_ui_manager_add_ui_from_file_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_ui_manager_get_type (void) G_GNUC_CONST;
|
||||
GtkUIManager *gtk_ui_manager_new (void);
|
||||
void gtk_ui_manager_set_add_tearoffs (GtkUIManager *self,
|
||||
|
@ -7451,3 +7451,46 @@ gtk_window_set_auto_startup_notification (gboolean setting)
|
||||
{
|
||||
disable_startup_notification = !setting;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
|
||||
#undef gtk_window_set_icon_from_file
|
||||
|
||||
gboolean
|
||||
gtk_window_set_icon_from_file (GtkWindow *window,
|
||||
const gchar *filename,
|
||||
GError **err)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, err);
|
||||
gboolean retval;
|
||||
|
||||
if (utf8_filename == NULL)
|
||||
return FALSE;
|
||||
|
||||
retval = gtk_window_set_icon_from_file_utf8 (window, utf8_filename, err);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#undef gtk_window_set_default_icon_from_file
|
||||
|
||||
gboolean
|
||||
gtk_window_set_default_icon_from_file (const gchar *filename,
|
||||
GError **err)
|
||||
{
|
||||
gchar *utf8_filename = g_locale_to_utf8 (filename, -1, NULL, NULL, err);
|
||||
gboolean retval;
|
||||
|
||||
if (utf8_filename == NULL)
|
||||
return FALSE;
|
||||
|
||||
retval = gtk_window_set_default_icon_from_file_utf8 (utf8_filename, err);
|
||||
|
||||
g_free (utf8_filename);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -164,6 +164,12 @@ struct _GtkWindowGroupClass
|
||||
void (*_gtk_reserved4) (void);
|
||||
};
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Reserve old names for DLL ABI backward compatibility */
|
||||
#define gtk_window_set_icon_from_file gtk_window_set_icon_from_file_utf8
|
||||
#define gtk_window_set_default_icon_from_file gtk_window_set_default_icon_from_file_utf8
|
||||
#endif
|
||||
|
||||
GType gtk_window_get_type (void) G_GNUC_CONST;
|
||||
GtkWidget* gtk_window_new (GtkWindowType type);
|
||||
void gtk_window_set_title (GtkWindow *window,
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <utime.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#define CACHE_NAME "icon-theme.cache"
|
||||
|
||||
@ -49,7 +50,7 @@ is_cache_up_to_date (const gchar *path)
|
||||
gchar *cache_path;
|
||||
int retval;
|
||||
|
||||
retval = stat (path, &path_stat);
|
||||
retval = g_stat (path, &path_stat);
|
||||
|
||||
if (retval < 0)
|
||||
{
|
||||
@ -59,7 +60,7 @@ is_cache_up_to_date (const gchar *path)
|
||||
}
|
||||
|
||||
cache_path = g_build_filename (path, CACHE_NAME, NULL);
|
||||
retval = stat (cache_path, &cache_stat);
|
||||
retval = g_stat (cache_path, &cache_stat);
|
||||
g_free (cache_path);
|
||||
|
||||
if (retval < 0 && errno == ENOENT)
|
||||
@ -554,7 +555,7 @@ build_cache (const gchar *path)
|
||||
GList *directories = NULL;
|
||||
|
||||
tmp_cache_path = g_build_filename (path, "."CACHE_NAME, NULL);
|
||||
cache = fopen (tmp_cache_path, "w");
|
||||
cache = g_fopen (tmp_cache_path, "wb");
|
||||
|
||||
if (!cache)
|
||||
{
|
||||
@ -571,7 +572,7 @@ build_cache (const gchar *path)
|
||||
/* Empty table, just close and remove the file */
|
||||
|
||||
fclose (cache);
|
||||
unlink (tmp_cache_path);
|
||||
g_unlink (tmp_cache_path);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
@ -584,22 +585,22 @@ build_cache (const gchar *path)
|
||||
|
||||
if (!retval)
|
||||
{
|
||||
unlink (tmp_cache_path);
|
||||
g_unlink (tmp_cache_path);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
cache_path = g_build_filename (path, CACHE_NAME, NULL);
|
||||
|
||||
if (rename (tmp_cache_path, cache_path) == -1)
|
||||
if (g_rename (tmp_cache_path, cache_path) == -1)
|
||||
{
|
||||
unlink (tmp_cache_path);
|
||||
g_unlink (tmp_cache_path);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Update time */
|
||||
/* FIXME: What do do if an error occurs here? */
|
||||
stat (path, &path_stat);
|
||||
stat (cache_path, &cache_stat);
|
||||
g_stat (path, &path_stat);
|
||||
g_stat (cache_path, &cache_stat);
|
||||
|
||||
utime_buf.actime = path_stat.st_atime;
|
||||
utime_buf.modtime = cache_stat.st_mtime;
|
||||
@ -621,12 +622,18 @@ main (int argc, char **argv)
|
||||
gchar *path;
|
||||
GOptionContext *context;
|
||||
|
||||
if (argc < 2)
|
||||
return 0;
|
||||
|
||||
context = g_option_context_new ("ICONPATH");
|
||||
g_option_context_add_main_entries (context, args, NULL);
|
||||
|
||||
g_option_context_parse (context, &argc, &argv, NULL);
|
||||
|
||||
path = argv[1];
|
||||
#ifdef G_OS_WIN32
|
||||
path = g_locale_to_utf8 (path, -1, NULL, NULL, NULL);
|
||||
#endif
|
||||
|
||||
if (!force_update && is_cache_up_to_date (path))
|
||||
return 0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
themedir = $(datadir)/themes/gtk-2.0
|
||||
themedir = $(datadir)/themes/MS-Windows/gtk-2.0
|
||||
theme_DATA=gtkrc
|
||||
|
||||
EXTRA_DIST=$(theme_DATA)
|
||||
|
Loading…
Reference in New Issue
Block a user