void screen_size_changed(GdkScreen *screen, gpointer user_data) { get_dpy_xyl(); }
int main(int argc, char **argv) { #if WIN32 putenv("PANGO_WIN32_NO_UNISCRIBE=1"); #endif char *destroy = getenv("HIME_DESTROY_WINDOW"); if (destroy) destroy_window = atoi(destroy); // printf("HIME_DESTROY_WINDOW=%d\n",destroy_window); gtk_init (&argc, &argv); #if GTK_CHECK_VERSION(2,91,6) static char css[]= "GtkButton\n" "{\n" " border-width: 0;\n" " padding: 0;\n" " -GtkButton-inner-border: 0;\n" "}"; GtkCssProvider *provider = gtk_css_provider_new(); gtk_css_provider_load_from_data(provider, css, -1, NULL); gtk_style_context_add_provider_for_screen(gdk_display_get_default_screen(gdk_display_get_default()), GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref(provider); #else static char button_rc[]="style \"button\"\n" "{\n" " GtkButton::inner-border = {0,0,0,0}\n" "\n" "xthickness = 1\n" "ythickness = 0\n" "}\n" "class \"GtkButton\" style \"button\""; gtk_rc_parse_string(button_rc); #endif #if UNIX signal(SIGCHLD, SIG_IGN); signal(SIGPIPE, SIG_IGN); if (getenv("HIME_DAEMON")) { daemon(1,1); #if FREEBSD setpgid(0, getpid()); #else setpgrp(); #endif } #endif //putenv("GDK_NATIVE_WINDOWS=1"); #if WIN32 typedef BOOL (WINAPI* pImmDisableIME)(DWORD); pImmDisableIME pd; HMODULE imm32=LoadLibraryA("imm32"); if (imm32 && (pd=(pImmDisableIME)GetProcAddress(imm32, "ImmDisableIME"))) { (*pd)(0); } init_hime_program_files(); init_hime_im_serv(); #endif set_is_chs(); #if UNIX char *lc_ctype = getenv("LC_CTYPE"); char *lc_all = getenv("LC_ALL"); char *lang = getenv("LANG"); if (!lc_ctype && lang) lc_ctype = lang; if (lc_all) lc_ctype = lc_all; if (!lc_ctype) lc_ctype = "zh_TW.Big5"; dbg("hime get env LC_CTYPE=%s LC_ALL=%s LANG=%s\n", lc_ctype, lc_all, lang); #endif #if USE_XIM char *t = strchr(lc_ctype, '.'); if (t) { int len = t - lc_ctype; #if MAC_OS || FREEBSD lc = strdup(lc_ctype); lc[len] = 0; #else lc = g_strndup(lc_ctype, len); #endif } else lc = lc_ctype; char *xim_server_name = get_hime_xim_name(); strcpy(xim_arr[0].xim_server_name, xim_server_name); dbg("hime XIM will use %s as the default encoding\n", lc_ctype); #endif if (argc == 2 && (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version") || !strcmp(argv[1], "-h")) ) { setenv("NO_GTK_INIT", "", TRUE); p_err(" version %s\n", HIME_VERSION); } init_TableDir(); load_setttings(); load_gtab_list(TRUE); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif dbg("after gtk_init\n"); #if UNIX dpy = GDK_DISPLAY(); root=DefaultRootWindow(dpy); #endif get_dpy_xyl(); g_signal_connect(gdk_screen_get_default(),"size-changed", G_CALLBACK(screen_size_changed), NULL); dbg("display width:%d height:%d\n", dpy_xl, dpy_yl); #if UNIX start_inmd_window(); #endif #if USE_XIM open_xim(); #endif #if UNIX gdk_window_add_filter(NULL, my_gdk_filter, NULL); init_atom_property(); signal(SIGINT, sig_do_exit); signal(SIGHUP, sig_do_exit); // disable the io handler abort // void *olderr = XSetErrorHandler((XErrorHandler)xerror_handler); #endif #if UNIX init_hime_im_serv(xim_arr[0].xim_xwin); #endif exec_setup_scripts(); #if UNIX g_timeout_add(5000, delayed_start_cb, NULL); #else delayed_start_cb(NULL); #endif dbg("before gtk_main\n"); disp_win_kbm_capslock_init(); gtk_main(); return 0; }
int main(int argc, char **argv) { char *destroy = getenv("HIME_DESTROY_WINDOW"); if (destroy) destroy_window = atoi(destroy); // printf("HIME_DESTROY_WINDOW=%d\n",destroy_window); gtk_init (&argc, &argv); signal(SIGCHLD, SIG_IGN); signal(SIGPIPE, SIG_IGN); if (getenv("HIME_DAEMON")) { daemon(1,1); #if FREEBSD setpgid(0, getpid()); #else setpgrp(); #endif } set_is_chs(); char *lc_ctype = getenv("LC_CTYPE"); char *lc_all = getenv("LC_ALL"); char *lang = getenv("LANG"); if (!lc_ctype && lang) lc_ctype = lang; if (lc_all) lc_ctype = lc_all; if (!lc_ctype) lc_ctype = "zh_TW.Big5"; dbg("hime get env LC_CTYPE=%s LC_ALL=%s LANG=%s\n", lc_ctype, lc_all, lang); #if USE_XIM char *t = strchr(lc_ctype, '.'); if (t) { int len = t - lc_ctype; #if MAC_OS || FREEBSD lc = strdup(lc_ctype); lc[len] = 0; #else lc = g_strndup(lc_ctype, len); #endif } else lc = lc_ctype; dbg("hime XIM will use %s as the default encoding\n", lc_ctype); #endif if (argc == 2 && (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version") || !strcmp(argv[1], "-h")) ) { #if GIT_HAVE p_err(" version %s (git %s)\n", HIME_VERSION, GIT_HASH); #else p_err(" version %s\n", HIME_VERSION); #endif } init_TableDir(); load_setttings(); load_gtab_list(TRUE); #if HIME_i18n_message bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif dbg("after gtk_init\n"); dpy = GDK_DISPLAY(); root=DefaultRootWindow(dpy); get_dpy_xyl(); g_signal_connect(gdk_screen_get_default(),"size-changed", G_CALLBACK(screen_size_changed), NULL); dbg("display width:%d height:%d\n", dpy_xl, dpy_yl); start_inmd_window(); #if USE_XIM open_xim(); #endif gdk_window_add_filter(NULL, my_gdk_filter, NULL); init_atom_property(); signal(SIGINT, sig_do_exit); signal(SIGHUP, sig_do_exit); // disable the io handler abort // void *olderr = XSetErrorHandler((XErrorHandler)xerror_handler); init_hime_im_serv(xim_xwin); exec_setup_scripts(); g_timeout_add(200, delayed_start_cb, NULL); // Old setting is 5000 here. dbg("before gtk_main\n"); disp_win_kbm_capslock_init(); gtk_main(); return 0; }