mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-18 03:30:18 +00:00
fix: refresh AppIndicator tray label on menu map/open
This commit is contained in:
@@ -1144,6 +1144,12 @@ fe_gui_info (session *sess, int info_type)
|
|||||||
return 2; /* hidden (iconified or systray) */
|
return 2; /* hidden (iconified or systray) */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
GdkWindow *gdk_win = gtk_widget_get_window (GTK_WIDGET (sess->gui->window));
|
||||||
|
if (gdk_win && (gdk_window_get_state (gdk_win) & GDK_WINDOW_STATE_ICONIFIED))
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
if (gtk_window_is_active (GTK_WINDOW (sess->gui->window)))
|
if (gtk_window_is_active (GTK_WINDOW (sess->gui->window)))
|
||||||
{
|
{
|
||||||
return 1; /* active/focused */
|
return 1; /* active/focused */
|
||||||
|
|||||||
@@ -424,6 +424,8 @@ tray_app_indicator_init (void)
|
|||||||
tray_menu = gtk_menu_new ();
|
tray_menu = gtk_menu_new ();
|
||||||
g_signal_connect (G_OBJECT (tray_menu), "show",
|
g_signal_connect (G_OBJECT (tray_menu), "show",
|
||||||
G_CALLBACK (tray_menu_show_cb), NULL);
|
G_CALLBACK (tray_menu_show_cb), NULL);
|
||||||
|
g_signal_connect (G_OBJECT (tray_menu), "map",
|
||||||
|
G_CALLBACK (tray_menu_show_cb), NULL);
|
||||||
app_indicator_set_menu (tray_indicator, GTK_MENU (tray_menu));
|
app_indicator_set_menu (tray_indicator, GTK_MENU (tray_menu));
|
||||||
app_indicator_set_status (tray_indicator, APP_INDICATOR_STATUS_ACTIVE);
|
app_indicator_set_status (tray_indicator, APP_INDICATOR_STATUS_ACTIVE);
|
||||||
|
|
||||||
@@ -581,11 +583,21 @@ static WinStatus
|
|||||||
tray_get_window_status (void)
|
tray_get_window_status (void)
|
||||||
{
|
{
|
||||||
GtkWindow *win;
|
GtkWindow *win;
|
||||||
|
GtkWidget *widget;
|
||||||
|
GdkWindow *gdk_win;
|
||||||
const char *st;
|
const char *st;
|
||||||
|
|
||||||
win = GTK_WINDOW (zoitechat_get_info (ph, "gtkwin_ptr"));
|
win = GTK_WINDOW (zoitechat_get_info (ph, "gtkwin_ptr"));
|
||||||
if (win && !gtk_widget_get_visible (GTK_WIDGET (win)))
|
if (win)
|
||||||
return WS_HIDDEN;
|
{
|
||||||
|
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))
|
||||||
|
return WS_HIDDEN;
|
||||||
|
}
|
||||||
|
|
||||||
st = zoitechat_get_info (ph, "win_status");
|
st = zoitechat_get_info (ph, "win_status");
|
||||||
|
|
||||||
|
|||||||
@@ -198,8 +198,6 @@ plugingui_load_cb (session *sess, char *file)
|
|||||||
char *addons_dir;
|
char *addons_dir;
|
||||||
char *basename;
|
char *basename;
|
||||||
char *addons_target;
|
char *addons_target;
|
||||||
char *canonical_addons;
|
|
||||||
char *canonical_file;
|
|
||||||
gboolean file_in_addons;
|
gboolean file_in_addons;
|
||||||
|
|
||||||
target_sess = is_session (sess) ? sess : current_sess;
|
target_sess = is_session (sess) ? sess : current_sess;
|
||||||
@@ -211,11 +209,9 @@ plugingui_load_cb (session *sess, char *file)
|
|||||||
|
|
||||||
load_target = g_strdup (file);
|
load_target = g_strdup (file);
|
||||||
addons_dir = g_build_filename (get_xdir (), "addons", NULL);
|
addons_dir = g_build_filename (get_xdir (), "addons", NULL);
|
||||||
canonical_addons = g_canonicalize_filename (addons_dir, NULL);
|
file_in_addons = g_str_has_prefix (file, addons_dir)
|
||||||
canonical_file = g_canonicalize_filename (file, NULL);
|
&& (file[strlen (addons_dir)] == G_DIR_SEPARATOR
|
||||||
file_in_addons = g_str_has_prefix (canonical_file, canonical_addons)
|
|| file[strlen (addons_dir)] == '\0');
|
||||||
&& (canonical_file[strlen (canonical_addons)] == G_DIR_SEPARATOR
|
|
||||||
|| canonical_file[strlen (canonical_addons)] == '\0');
|
|
||||||
|
|
||||||
if (!file_in_addons)
|
if (!file_in_addons)
|
||||||
{
|
{
|
||||||
@@ -240,8 +236,6 @@ plugingui_load_cb (session *sess, char *file)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (canonical_addons);
|
|
||||||
g_free (canonical_file);
|
|
||||||
g_free (addons_dir);
|
g_free (addons_dir);
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|||||||
Reference in New Issue
Block a user