[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
gtk 2.4.3 on win32: menu icon problem
- From: Allin Cottrell <cottrell wfu edu>
- To: gtk-app-devel-list gnome org
- Subject: gtk 2.4.3 on win32: menu icon problem
- Date: Sat, 3 Jul 2004 20:37:28 -0400 (EDT)
I posted something on this back on May 21: the problem then "went
away" when I ensured my gtk-win32 runtime was consistent. Now it
seems to be back again after I updated to Tor's current runtime
(glib-2.4.2 plus gtk-2.4.3).
The problem: accessing a menu that contains a stock icon (e.g. the
file open icon) causes a crash on Windows when the GTK program is run
in certain LANG environments. I have tested this under XP, running a
trivial test program with one little menu item. It works fine in
English, and also if I 'set LANG=it' or 'set LANG=de'.
But if I 'set LANG=es' or 'set LANG=fr' the test app crashes when I
touch the menu.
I have double-checked that I'm using the exact intl and iconv dlls
referenced on Tor's page
http://www.gimp.org/~tml/gimp/win32/downloads.html
and also that the program was linked against the corresponding .libs
and using the corresponding headers. The crash happens both when I
'set LANG' in an XP console, and when I set the language (to Spanish
or French) using the Windows Control Panel. It happens without any
actual translations being present (no .po files for those languages).
I'm attaching a couple of small files: C source for my test program
and a stack trace for a crash.
--
Allin Cottrell
Department of Economics
Wake Forest University, NC
/* In English, runs fine.
In Spanish, crashes when the menu is accessed.
*/
#include "libintl.h"
#include "locale.h"
#define _(String) gettext (String)
#define N_(String) String
#include <gtk/gtk.h>
#define PACKAGE "test"
#define LOCALEDIR "."
void dummy_call (gpointer p, guint i, GtkWidget *w)
{
g_print("Got menu item\n");
}
GtkItemFactoryEntry test_items[] = {
{ N_("/_File"), NULL, NULL, 0, "<Branch>" },
{ N_("/File/_Open data"), NULL, dummy_call, 0,
"<StockItem>", GTK_STOCK_OPEN },
};
void app_exit (GtkWidget *w, gpointer p)
{
gtk_main_quit();
}
gchar *menu_translate (const gchar *path, gpointer p)
{
return (_(path));
}
GtkItemFactory *create_menu (void)
{
GtkItemFactory *ifac;
int nitems = sizeof test_items / sizeof test_items[0];
ifac = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", NULL);
gtk_item_factory_set_translate_func(ifac, menu_translate, NULL, NULL);
gtk_item_factory_create_items(ifac, nitems, test_items, NULL);
return ifac;
}
void nls_init (void)
{
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
bind_textdomain_codeset (PACKAGE, "UTF-8");
}
int main (int argc, char *argv[])
{
GtkWidget *w, *mbar;
GtkItemFactory *ifac;
nls_init();
gtk_init(&argc, &argv);
w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(w), "destroy",
G_CALLBACK(app_exit), NULL);
ifac = create_menu();
mbar = gtk_item_factory_get_widget(ifac, "<main>");
gtk_widget_show(mbar);
gtk_container_add(GTK_CONTAINER(w), mbar);
gtk_widget_show(w);
gtk_main();
return 0;
}
menu_trans.exe caused an Access Violation at location 003d36bd in module intl.dll Reading from location 0000ad20.
Registers:
eax=0000ad20 ebx=00ff0000 ecx=00000020 edx=00000004 esi=010725c0 edi=000015ff
eip=003d36bd esp=0022e200 ebp=0022e220 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000202
Call stack:
003D36BD intl.dll:003D36BD libintl_textdomain
003D34C1 intl.dll:003D34C1 libintl_textdomain
003D12DF intl.dll:003D12DF libintl_dcgettext
1000C975 libglib-2.0-0.dll:1000C975 g_dir_open
0072526D libgtk-win32-2.0-0.dll:0072526D gtk_icon_info_get_display_name
00722BA9 libgtk-win32-2.0-0.dll:00722BA9 gtk_icon_theme_lookup_icon
00722F86 libgtk-win32-2.0-0.dll:00722F86 gtk_icon_theme_load_icon
007211DD libgtk-win32-2.0-0.dll:007211DD gtk_icon_source_get_size
00720C7D libgtk-win32-2.0-0.dll:00720C7D gtk_icon_source_get_size
0071E74A libgtk-win32-2.0-0.dll:0071E74A gtk_icon_set_render_icon
008CCA3E libgtk-win32-2.0-0.dll:008CCA3E gtk_widget_render_icon
0072A3A1 libgtk-win32-2.0-0.dll:0072A3A1 gtk_image_get
0072B109 libgtk-win32-2.0-0.dll:0072B109 gtk_image_new
005C9F23 libgobject-2.0-0.dll:005C9F23 g_cclosure_marshal_VOID__BOXED
005B4529 libgobject-2.0-0.dll:005B4529 g_cclosure_new_swap
005B3D7C libgobject-2.0-0.dll:005B3D7C g_closure_invoke
005C8951 libgobject-2.0-0.dll:005C8951 g_signal_emit_by_name
005C81BA libgobject-2.0-0.dll:005C81BA g_signal_emit_valist
005C8583 libgobject-2.0-0.dll:005C8583 g_signal_emit_by_name
007C9329 libgtk-win32-2.0-0.dll:007C9329 gtk_size_group_new
0072C4FF libgtk-win32-2.0-0.dll:0072C4FF gtk_image_menu_item_new_with_mnemonic
005C9F23 libgobject-2.0-0.dll:005C9F23 g_cclosure_marshal_VOID__BOXED
005B4529 libgobject-2.0-0.dll:005B4529 g_cclosure_new_swap
005B3D7C libgobject-2.0-0.dll:005B3D7C g_closure_invoke
005C8951 libgobject-2.0-0.dll:005C8951 g_signal_emit_by_name
005C81BA libgobject-2.0-0.dll:005C81BA g_signal_emit_valist
005C8583 libgobject-2.0-0.dll:005C8583 g_signal_emit_by_name
007C9329 libgtk-win32-2.0-0.dll:007C9329 gtk_size_group_new
00768465 libgtk-win32-2.0-0.dll:00768465 gtk_menu_reorder_child
005C9F23 libgobject-2.0-0.dll:005C9F23 g_cclosure_marshal_VOID__BOXED
005B4529 libgobject-2.0-0.dll:005B4529 g_cclosure_new_swap
005B3D7C libgobject-2.0-0.dll:005B3D7C g_closure_invoke
005C8951 libgobject-2.0-0.dll:005C8951 g_signal_emit_by_name
005C81BA libgobject-2.0-0.dll:005C81BA g_signal_emit_valist
005C8583 libgobject-2.0-0.dll:005C8583 g_signal_emit_by_name
007C9329 libgtk-win32-2.0-0.dll:007C9329 gtk_size_group_new
0076AF84 libgtk-win32-2.0-0.dll:0076AF84 gtk_menu_reorder_child
00765B8B libgtk-win32-2.0-0.dll:00765B8B gtk_menu_popup
0077334D libgtk-win32-2.0-0.dll:0077334D gtk_menu_item_toggle_size_allocate
00772A7E libgtk-win32-2.0-0.dll:00772A7E gtk_menu_item_toggle_size_allocate
005C9389 libgobject-2.0-0.dll:005C9389 g_cclosure_marshal_VOID__VOID
005B4529 libgobject-2.0-0.dll:005B4529 g_cclosure_new_swap
005B3D7C libgobject-2.0-0.dll:005B3D7C g_closure_invoke
005C8951 libgobject-2.0-0.dll:005C8951 g_signal_emit_by_name
005C81BA libgobject-2.0-0.dll:005C81BA g_signal_emit_valist
005C8456 libgobject-2.0-0.dll:005C8456 g_signal_emit
00736853 libgtk-win32-2.0-0.dll:00736853 gtk_item_select
00777E3B libgtk-win32-2.0-0.dll:00777E3B gtk_menu_shell_prepend
00776E88 libgtk-win32-2.0-0.dll:00776E88 gtk_menu_shell_select_item
00775F00 libgtk-win32-2.0-0.dll:00775F00 gtk_menu_shell_deactivate
0075F28A libgtk-win32-2.0-0.dll:0075F28A gtk_marshal_VOID__UINT_STRING
005B4529 libgobject-2.0-0.dll:005B4529 g_cclosure_new_swap
005B3D7C libgobject-2.0-0.dll:005B3D7C g_closure_invoke
005C8B5E libgobject-2.0-0.dll:005C8B5E g_signal_emit_by_name
005C7FAC libgobject-2.0-0.dll:005C7FAC g_signal_emit_valist
005C8456 libgobject-2.0-0.dll:005C8456 g_signal_emit
008C7FCB libgtk-win32-2.0-0.dll:008C7FCB gtk_widget_send_expose
0075B43C libgtk-win32-2.0-0.dll:0075B43C gtk_propagate_event
0075AA36 libgtk-win32-2.0-0.dll:0075AA36 gtk_main_do_event
009C1B7E libgdk-win32-2.0-0.dll:009C1B7E gdk_net_wm_supports
1001DCC3 libglib-2.0-0.dll:1001DCC3 g_idle_remove_by_data
1001E48B libglib-2.0-0.dll:1001E48B g_idle_remove_by_data
1001A5E1 libglib-2.0-0.dll:1001A5E1 g_main_loop_run
0075A660 libgtk-win32-2.0-0.dll:0075A660 gtk_main
004014DC menu_trans.exe:004014DC main menu_trans.c:80
int main(
int argc = 1,
char * * argv = &0x00a62811
)
0040116A menu_trans.exe:0040116A
00401038 menu_trans.exe:00401038
77E814C7 kernel32.dll:77E814C7 GetCurrentDirectoryW
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]