mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-21 21:20:20 +00:00
Compare commits
1 Commits
master
...
taskbar-ic
| Author | SHA1 | Date | |
|---|---|---|---|
| 364e52f7d9 |
@@ -4375,10 +4375,37 @@ 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 *widget = current_sess->gui->window;
|
||||
GdkWindow *gdk_window = NULL;
|
||||
gboolean hidden = TRUE;
|
||||
|
||||
if (widget)
|
||||
{
|
||||
hidden = !gtk_widget_get_visible (widget);
|
||||
gdk_window = gtk_widget_get_window (widget);
|
||||
if (!hidden && gdk_window &&
|
||||
(gdk_window_get_state (gdk_window) & GDK_WINDOW_STATE_ICONIFIED))
|
||||
hidden = TRUE;
|
||||
}
|
||||
|
||||
if (hidden)
|
||||
{
|
||||
if (widget)
|
||||
{
|
||||
gtk_widget_show (widget);
|
||||
gtk_window_deiconify (GTK_WINDOW (widget));
|
||||
gtk_window_present (GTK_WINDOW (widget));
|
||||
}
|
||||
else
|
||||
fe_ctrl_gui (current_sess, FE_GUI_SHOW, 0);
|
||||
}
|
||||
else
|
||||
fe_ctrl_gui (current_sess, FE_GUI_SHOW, 0);
|
||||
{
|
||||
if (widget)
|
||||
gtk_window_iconify (GTK_WINDOW (widget));
|
||||
else
|
||||
fe_ctrl_gui (current_sess, FE_GUI_ICONIFY, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -582,23 +582,33 @@ tray_backend_cleanup (void)
|
||||
tray_backend_active = FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
tray_window_is_hidden (GtkWidget *widget)
|
||||
{
|
||||
GdkWindow *gdk_win;
|
||||
|
||||
if (!widget || !gtk_widget_get_visible (widget))
|
||||
return TRUE;
|
||||
|
||||
gdk_win = gtk_widget_get_window (widget);
|
||||
if (gdk_win && (gdk_window_get_state (gdk_win) & GDK_WINDOW_STATE_ICONIFIED))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static WinStatus
|
||||
tray_get_window_status (void)
|
||||
{
|
||||
GtkWindow *win;
|
||||
GtkWidget *widget;
|
||||
GdkWindow *gdk_win;
|
||||
const char *st;
|
||||
|
||||
win = GTK_WINDOW (zoitechat_get_info (ph, "gtkwin_ptr"));
|
||||
if (win)
|
||||
{
|
||||
widget = GTK_WIDGET (win);
|
||||
if (!gtk_widget_get_visible (widget))
|
||||
return WS_HIDDEN;
|
||||
|
||||
gdk_win = gtk_widget_get_window (widget);
|
||||
if (gdk_win && (gdk_window_get_state (gdk_win) & GDK_WINDOW_STATE_ICONIFIED))
|
||||
if (tray_window_is_hidden (widget))
|
||||
return WS_HIDDEN;
|
||||
}
|
||||
|
||||
@@ -853,6 +863,8 @@ tray_toggle_visibility (gboolean force_hide)
|
||||
static int maximized;
|
||||
static int fullscreen;
|
||||
GtkWindow *win;
|
||||
GtkWidget *widget;
|
||||
gboolean hidden;
|
||||
|
||||
if (!tray_backend_active)
|
||||
return FALSE;
|
||||
@@ -868,7 +880,10 @@ tray_toggle_visibility (gboolean force_hide)
|
||||
if (!win)
|
||||
return FALSE;
|
||||
|
||||
if (force_hide || gtk_widget_get_visible (GTK_WIDGET (win)))
|
||||
widget = GTK_WIDGET (win);
|
||||
hidden = tray_window_is_hidden (widget);
|
||||
|
||||
if (force_hide || !hidden)
|
||||
{
|
||||
if (prefs.hex_gui_tray_away)
|
||||
zoitechat_command (ph, "ALLSERV AWAY");
|
||||
|
||||
Reference in New Issue
Block a user