Added a Windows-only helper (mg_win32_allow_autohide_taskbar) that gets the native HWND and calls SetWindowPos(..., HWND_NOTOPMOST, ...) for non-fullscreen window-state transitions, so a maximized ZoiteChat window no longer blocks the taskbar auto-hide reveal edge.

Hooked that helper into mg_windowstate_cb so it runs whenever the main window state changes (while preserving existing maximize/fullscreen preference handling).
This commit is contained in:
2026-02-25 14:18:23 -07:00
parent 588e27b456
commit 7cfa3b3513

View File

@@ -58,6 +58,36 @@
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
#include <windows.h> #include <windows.h>
#include <gdk/gdkwin32.h>
static void
mg_win32_allow_autohide_taskbar (GtkWindow *window, GdkEventWindowState *event)
{
GdkWindow *gdk_window;
HWND hwnd;
if (!window || !event)
return;
if ((event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)
return;
gdk_window = gtk_widget_get_window (GTK_WIDGET (window));
if (!gdk_window)
return;
hwnd = gdk_win32_window_get_handle (gdk_window);
if (!hwnd)
return;
SetWindowPos (hwnd,
HWND_NOTOPMOST,
0,
0,
0,
0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOOWNERZORDER);
}
#endif #endif
#define ICON_TAB_DETACH "zc-menu-detach" #define ICON_TAB_DETACH "zc-menu-detach"
@@ -659,6 +689,10 @@ mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata
menu_set_fullscreen (current_sess->gui, prefs.hex_gui_win_fullscreen); menu_set_fullscreen (current_sess->gui, prefs.hex_gui_win_fullscreen);
#ifdef G_OS_WIN32
mg_win32_allow_autohide_taskbar (wid, event);
#endif
return FALSE; return FALSE;
} }