summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMark Jansen <mark.jansen@reactos.org>2017-11-14 21:47:17 +0100
committerPatrick Griffis <tingping@tingping.se>2018-03-09 13:24:08 -0500
commit9b8a7eaa0147c6a564c1d1401d57cc685461e320 (patch)
treedac6421083b173c1b89c2a1e733abdc6627ddab0
parentcdefb8e2d65f94aa5f1e88dda487dcf72f92ef34 (diff)
win32: Respond to WM_TIMECHANGE by updating the CRT timezone info
Closes #2090
Fixes #1851
-rw-r--r--src/fe-gtk/maingui.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index d0c59aa0..7ac65c5a 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -3200,11 +3200,29 @@ mg_tabwindow_de_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 	return TRUE;
 }
 
+#ifdef G_OS_WIN32
+static GdkFilterReturn
+mg_time_change (GdkXEvent *xevent, GdkEvent *event, gpointer data)
+{
+	MSG *msg = (MSG*)xevent;
+
+	if (msg->message == WM_TIMECHANGE)
+	{
+		_tzset();
+	}
+
+	return GDK_FILTER_CONTINUE;
+}
+#endif
+
 static void
 mg_create_tabwindow (session *sess)
 {
 	GtkWidget *win;
 	GtkWidget *table;
+#ifdef G_OS_WIN32
+	GdkWindow *parent_win;
+#endif
 
 	win = gtkutil_window_new ("HexChat", NULL, prefs.hex_gui_win_width,
 									  prefs.hex_gui_win_height, 0);
@@ -3269,6 +3287,11 @@ mg_create_tabwindow (session *sess)
 	mg_place_userlist_and_chanview (sess->gui);
 
 	gtk_widget_show (win);
+
+#ifdef G_OS_WIN32
+	parent_win = gtk_widget_get_window (win);
+	gdk_window_add_filter (parent_win, mg_time_change, NULL);
+#endif
 }
 
 void