diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2008-07-04 04:30:16 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2008-07-04 04:30:16 +0000 |
commit | a48e2187fd9227ec46cc3f7a77c3ed8c04e3358f (patch) | |
tree | f2baab66f9f9d5f7714517a9229db5fb11ad1d57 | |
parent | e4fa47016f53e76df6d0ef387d41270b98e5578c (diff) |
win32: handle console ctrl events.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2023 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.ja | 6 | ||||
-rw-r--r-- | src/main.c | 31 |
3 files changed, 38 insertions, 4 deletions
@@ -1,3 +1,8 @@ +2008-07-04 + + * src/main.c: win32: handle console ctrl events. + Call register_system_events() after all config files are read. + 2008-06-27 * configure.in diff --git a/ChangeLog.ja b/ChangeLog.ja index 2e82f0e4..67c1855e 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,9 @@ +2008-07-04 + + * src/main.c: win32: console ctrl イベントを処理するようにした。 + すべての設定ファイルを読み込んだ後に register_system_events() + を呼ぶようにした。 + 2008-06-27 * configure.in @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2007 Hiroyuki Yamamoto + * Copyright (C) 1999-2008 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -99,6 +99,8 @@ gchar *prog_version; +static gboolean init_console_done = FALSE; + static gint lock_socket = -1; static gint lock_socket_tag = 0; static GIOChannel *lock_ch = NULL; @@ -296,8 +298,6 @@ int main(int argc, char *argv[]) set_log_handlers(TRUE); - register_system_events(); - account_read_config_all(); account_set_menu(); main_window_reflect_prefs_all(); @@ -317,6 +317,8 @@ int main(int argc, char *argv[]) addressbook_read_file(); + register_system_events(); + inc_autocheck_timer_init(mainwin); remote_command_exec(); @@ -331,7 +333,6 @@ static void init_console(void) #ifdef G_OS_WIN32 gint fd; FILE *fp; - static gboolean init_console_done = FALSE; if (init_console_done) return; @@ -958,6 +959,15 @@ static void set_log_handlers(gboolean enable) } #ifdef G_OS_WIN32 +static BOOL WINAPI +ctrl_handler(DWORD dwctrltype) +{ + log_print("ctrl_handler: received %d\n", dwctrltype); + app_will_exit(TRUE); + + return TRUE; +} + static LRESULT CALLBACK wndproc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { @@ -991,11 +1001,24 @@ static void register_system_events(void) { WNDCLASS wclass; static HWND hwnd = NULL; + static BOOL ctrl_handler_set = FALSE; ATOM klass; HINSTANCE hmodule = GetModuleHandle(NULL); if (hwnd) return; + if (ctrl_handler_set) + return; + + if (init_console_done) { + debug_print("register_system_events(): SetConsoleCtrlHandler\n"); + ctrl_handler_set = SetConsoleCtrlHandler(ctrl_handler, TRUE); + if (!ctrl_handler_set) + g_warning("SetConsoleCtrlHandler() failed\n"); + return; + } + + debug_print("register_system_events(): RegisterClass\n"); memset(&wclass, 0, sizeof(WNDCLASS)); wclass.lpszClassName = "sylpheed-observer"; |