[Q] Gtk+ is not working with Korean IM




Hi~~~ I have problem with using Korean in Gtk+
I'm using hanIM as Korean IM... 
(It works well with Netscape and most I18Ned application 
 except Gtk  :(  )
You can get it from
ftp://ftp.kaist.ac.kr//pub/hangul/mirror/www.mizi.co.kr/hanIM
 - get two files hanIM-0.9-?.rpm and xfntmizi-1.1-1.rpm
   install them and set LANG=ko ... and start hanIM

Gtk+ configure script has some problem too..
glibc is not supporting 2bytes languages but configure think it does
so it didn't DX_LOCALE flag.. 
so you have to manualy set it (Makefile gdk/Makefile gtk/Makefile)
add -DX_LOCALE ....

i enclose test program and rc file...

first recompile gtk+ with -DX_LOCALE flag...
compile gtkimtest.c
run im 'hanIM&'
run it './gtkimtest gtkimtest.rc'

you will see Korean charactor in a button (it means 'quit')
press shift-space to switch to korean.. and type anything...
nothing happen (to disconnect from IM press control-space)

I don't know much about I18N so... It's difficult to look gtk source
some guy said to me the fix(?)

gdk.c    about line 750~760 in fuction gdk_event_get()

filter_status=XFilterEvent(&xevent,GDK_WINDOW_XWINDOW(xim_window));

change above line like below

filter_status=XFilterEvent(&xevent, None);

this worked 0.99.?  and i didn't test later versions...

I don't know what that means...

can anyone tell me how to use hanIM correctly?
Which is victim(?) hanIM or Gtk+ ?   (or me?)

(sorry for my terrible english ...)

//--------------------------------------------
                 robocop@green.vivian.com
               hc92028@pine.kangwon.ac.kr
                          Young-jae Chang
  --------------------------------------------
/* $Id: gtkimtest.c,v 1.2 1998/02/17 07:06:46 frog Exp $ */
#if 0
# include <locale.h>
#else
# include <X11/Xlocale.h>
#endif
#include <gtk/gtk.h>

int
main (int argc, char **argv)
{
  GtkWidget *window, *vbox, *entry, *button;
  
  gtk_set_locale();
  gtk_init(&argc, &argv);

  if (argc < 2)
    {
      g_error("»ç¿ë¹ý: %s <rc ÆÄÀÏ À̸§>\n", argv[0]);
      gtk_exit(1);
    }
  
  gtk_rc_parse(argv[1]);
  
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_border_width (GTK_CONTAINER (window), 10);

  vbox = gtk_vbox_new (FALSE, 4);
  gtk_container_add (GTK_CONTAINER (window), vbox);
  
  entry = gtk_entry_new();
  gtk_box_pack_start_defaults (GTK_BOX (vbox), entry);

  button = gtk_button_new_with_label("³¡");
  gtk_signal_connect(GTK_OBJECT(button), "clicked",
                     GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
  gtk_box_pack_start_defaults (GTK_BOX (vbox), button);

  gtk_widget_show (entry);
  gtk_widget_show (button);
  gtk_widget_show (vbox);
  gtk_widget_show (window);
         
  gtk_main();
}
style "default"
{
  fontset = "-misc-gothic-*-*-*--*-*-*-*-c-*-*" 
}
widget_class "*" style "default"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]