From 1805d1aa32f1f0807bc33f9bc9254a3ef2d323de Mon Sep 17 00:00:00 2001 From: Mike Buchholz Date: Fri, 13 Mar 2026 11:07:41 -0600 Subject: [PATCH] fix: Win32 taskbar toggle + --existing now work. --- src/fe-gtk/fe-gtk.c | 2 +- src/fe-gtk/maingui.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index 0137926e..ede5fcb9 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -91,7 +91,7 @@ static const GOptionEntry gopt_entries[] = {"configdir", 'u', 0, G_OPTION_ARG_NONE, &arg_show_config, N_("Show user config directory"), NULL}, {"url", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &arg_url, N_("Open an irc://server:port/channel?key URL"), "URL"}, {"command", 'c', 0, G_OPTION_ARG_STRING, &arg_command, N_("Execute command:"), "COMMAND"}, -#ifdef USE_DBUS +#if defined(USE_DBUS) || defined(WIN32) {"existing", 'e', 0, G_OPTION_ARG_NONE, &arg_existing, N_("Open URL or execute command in an existing ZoiteChat"), NULL}, #endif {"minimize", 0, 0, G_OPTION_ARG_INT, &arg_minimize, N_("Begin minimized. Level 0=Normal 1=Iconified 2=Tray"), N_("level")}, diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index a5ba248d..2e484085 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -3868,10 +3868,21 @@ mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data) { if (strcmp (command, "__WIN32_TASKBAR_TOGGLE__") == 0) { - if (gtk_widget_get_visible (current_sess->gui->window)) - fe_ctrl_gui (current_sess, FE_GUI_ICONIFY, 0); + GtkWidget *window = current_sess->gui->window; + GtkWindow *gtk_window = GTK_WINDOW (window); + GdkWindow *gdk_window = gtk_widget_get_window (window); + gboolean iconified = gdk_window && ((gdk_window_get_state (gdk_window) & GDK_WINDOW_STATE_ICONIFIED) != 0); + + if (!gtk_widget_get_visible (window) || iconified) + { + gtk_widget_show (window); + gtk_window_deiconify (gtk_window); + gtk_window_present (gtk_window); + } else - fe_ctrl_gui (current_sess, FE_GUI_SHOW, 0); + { + gtk_window_iconify (gtk_window); + } } else {