Archives for December of 2012
- imhangul에서 안마태 자판이 선택되는 현상 해결하기 (16th of December, 2012)
- gdk-pixbuf에서 xpm 크기가 안바뀌는 문제 (16th of December, 2012)
지난번에 웹비넷으로 옮기고 테스트할 때 젠투리눅스 업데이트를 했는데 파이어폭스에서 입력기가 안마태 자판으로 설정되는 문제가 있었다. 일단 gtk.immodules에서 imhangul 목록을 내가 쓰는것만 남기고 지워서 썼는데, gtk.immodules가 업데이트 되면 자꾸 안마태 자판이 떠서 원인을 찾아봤다.
원인은 http://git.gnome.org/browse/gtk+/commit/gtk/gtkimmodule.c?id=4d7e47ddd0590a6cad1bdf5d785203e8aa9f259e 에 있었다. GTK_IM_MODULE 환경변수는 이전에는 하나만 지원했는데 : 을 구분자로 fallback을 추가할 수 있도록 바뀌었다. 그러면서 추가된 lookup_immodule 함수가 문제였다. GTK_IM_MODULE에서 설정한 context를 가지고 찾은 immodule의 첫번째 context를 return하면서 자꾸 안마태 자판이 나온 것이다.
코드는 간단히 immodule이 가지고 있는 context중에 실제 요청한 context를 return하도록 고치면 된다.
--- gtk+-2.24.12/gtk/gtkimmodule.c.orig 2012-12-14 09:42:51.500009901 +0900 +++ gtk+-2.24.12/gtk/gtkimmodule.c 2012-12-14 09:58:14.960465057 +0900 @@ -662,7 +662,16 @@ GtkIMModule *module; module = g_hash_table_lookup (contexts_hash, *immodules_list); if (module) - return module->contexts[0]->context_id; + { + int i; + for (i = 0; i < module->n_contexts; i++) + { + if (strcmp (module->contexts[i]->context_id, *immodules_list) == 0) + return module->contexts[i]->context_id; + } + + return NULL; + } } immodules_list++; }
gdk-pixbuf가 2.26으로 올라가더니 gnome-panel에 eclipse 아이콘 모양이 이상해졌다.
그냥 이대로 쓰다가 거슬려서 gdk-pixbuf 소스를 뒤져봤다. 원인을 찾았는데 http://git.gnome.org/browse/gdk-pixbuf/commit/gdk-pixbuf/gdk-pixbuf-loader.c?id=c62676a2843f391f32df2636d738e6333ae0318d 이 커밋이 문제였다. 이 커밋은 animated gif 때문에 추가 된건데, 난 animated gif는 별로 안쓰니까 원래대로 돌리고 했더니
이렇게 잘 나온다.
gnome bugzilla에 관련 내용이 있길래 업데이트. https://bugzilla.gnome.org/show_bug.cgi?id=686514