mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-22 05:30:18 +00:00
Compare commits
1 Commits
master
...
taskbar-ic
| Author | SHA1 | Date | |
|---|---|---|---|
| 364e52f7d9 |
@@ -4375,12 +4375,39 @@ mg_win32_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data)
|
|||||||
{
|
{
|
||||||
if (strcmp (command, "__WIN32_TASKBAR_TOGGLE__") == 0)
|
if (strcmp (command, "__WIN32_TASKBAR_TOGGLE__") == 0)
|
||||||
{
|
{
|
||||||
if (gtk_widget_get_visible (current_sess->gui->window))
|
GtkWidget *widget = current_sess->gui->window;
|
||||||
fe_ctrl_gui (current_sess, FE_GUI_ICONIFY, 0);
|
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
|
else
|
||||||
fe_ctrl_gui (current_sess, FE_GUI_SHOW, 0);
|
fe_ctrl_gui (current_sess, FE_GUI_SHOW, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (widget)
|
||||||
|
gtk_window_iconify (GTK_WINDOW (widget));
|
||||||
|
else
|
||||||
|
fe_ctrl_gui (current_sess, FE_GUI_ICONIFY, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
handle_command (current_sess, command, FALSE);
|
handle_command (current_sess, command, FALSE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,7 +125,6 @@ static void tray_menu_notify_cb (GObject *tray, GParamSpec *pspec, gpointer user
|
|||||||
static void tray_update_toggle_item_label (void);
|
static void tray_update_toggle_item_label (void);
|
||||||
static gboolean tray_window_state_cb (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata);
|
static gboolean tray_window_state_cb (GtkWidget *widget, GdkEventWindowState *event, gpointer userdata);
|
||||||
static void tray_window_visibility_cb (GtkWidget *widget, gpointer userdata);
|
static void tray_window_visibility_cb (GtkWidget *widget, gpointer userdata);
|
||||||
static void tray_toggle_item_destroy_cb (GtkWidget *widget, gpointer userdata);
|
|
||||||
#if HAVE_APPINDICATOR_BACKEND
|
#if HAVE_APPINDICATOR_BACKEND
|
||||||
static void tray_menu_show_cb (GtkWidget *menu, gpointer userdata) G_GNUC_UNUSED;
|
static void tray_menu_show_cb (GtkWidget *menu, gpointer userdata) G_GNUC_UNUSED;
|
||||||
#endif
|
#endif
|
||||||
@@ -409,7 +408,6 @@ tray_app_indicator_cleanup (void)
|
|||||||
|
|
||||||
if (tray_menu)
|
if (tray_menu)
|
||||||
{
|
{
|
||||||
if (GTK_IS_WIDGET (tray_menu))
|
|
||||||
gtk_widget_destroy (tray_menu);
|
gtk_widget_destroy (tray_menu);
|
||||||
tray_menu = NULL;
|
tray_menu = NULL;
|
||||||
}
|
}
|
||||||
@@ -584,23 +582,33 @@ tray_backend_cleanup (void)
|
|||||||
tray_backend_active = FALSE;
|
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
|
static WinStatus
|
||||||
tray_get_window_status (void)
|
tray_get_window_status (void)
|
||||||
{
|
{
|
||||||
GtkWindow *win;
|
GtkWindow *win;
|
||||||
GtkWidget *widget;
|
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)
|
if (win)
|
||||||
{
|
{
|
||||||
widget = GTK_WIDGET (win);
|
widget = GTK_WIDGET (win);
|
||||||
if (!gtk_widget_get_visible (widget))
|
if (tray_window_is_hidden (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;
|
return WS_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -855,6 +863,8 @@ tray_toggle_visibility (gboolean force_hide)
|
|||||||
static int maximized;
|
static int maximized;
|
||||||
static int fullscreen;
|
static int fullscreen;
|
||||||
GtkWindow *win;
|
GtkWindow *win;
|
||||||
|
GtkWidget *widget;
|
||||||
|
gboolean hidden;
|
||||||
|
|
||||||
if (!tray_backend_active)
|
if (!tray_backend_active)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -870,7 +880,10 @@ tray_toggle_visibility (gboolean force_hide)
|
|||||||
if (!win)
|
if (!win)
|
||||||
return FALSE;
|
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)
|
if (prefs.hex_gui_tray_away)
|
||||||
zoitechat_command (ph, "ALLSERV AWAY");
|
zoitechat_command (ph, "ALLSERV AWAY");
|
||||||
@@ -1028,14 +1041,9 @@ blink_item (unsigned int *setting, GtkWidget *menu, char *label)
|
|||||||
static void
|
static void
|
||||||
tray_menu_destroy (GtkWidget *menu, gpointer userdata)
|
tray_menu_destroy (GtkWidget *menu, gpointer userdata)
|
||||||
{
|
{
|
||||||
GtkWidget **menu_ptr = userdata;
|
(void)userdata;
|
||||||
|
|
||||||
if (menu_ptr && *menu_ptr == menu)
|
|
||||||
*menu_ptr = NULL;
|
|
||||||
|
|
||||||
if (GTK_IS_WIDGET (menu))
|
|
||||||
gtk_widget_destroy (menu);
|
gtk_widget_destroy (menu);
|
||||||
if (G_IS_OBJECT (menu))
|
|
||||||
g_object_unref (menu);
|
g_object_unref (menu);
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
g_source_remove (tray_menu_timer);
|
g_source_remove (tray_menu_timer);
|
||||||
@@ -1096,8 +1104,6 @@ tray_menu_populate (GtkWidget *menu)
|
|||||||
zoitechat_set_context (ph, zoitechat_find_context (ph, NULL, NULL));
|
zoitechat_set_context (ph, zoitechat_find_context (ph, NULL, NULL));
|
||||||
|
|
||||||
tray_toggle_item = tray_make_item (menu, _("_Hide Window"), tray_menu_restore_cb, NULL);
|
tray_toggle_item = tray_make_item (menu, _("_Hide Window"), tray_menu_restore_cb, NULL);
|
||||||
g_signal_connect (G_OBJECT (tray_toggle_item), "destroy",
|
|
||||||
G_CALLBACK (tray_toggle_item_destroy_cb), NULL);
|
|
||||||
tray_update_toggle_item_label ();
|
tray_update_toggle_item_label ();
|
||||||
tray_make_item (menu, NULL, tray_menu_quit_cb, NULL);
|
tray_make_item (menu, NULL, tray_menu_quit_cb, NULL);
|
||||||
|
|
||||||
@@ -1138,22 +1144,12 @@ tray_menu_clear (GtkWidget *menu)
|
|||||||
|
|
||||||
children = gtk_container_get_children (GTK_CONTAINER (menu));
|
children = gtk_container_get_children (GTK_CONTAINER (menu));
|
||||||
for (iter = children; iter; iter = iter->next)
|
for (iter = children; iter; iter = iter->next)
|
||||||
if (GTK_IS_WIDGET (iter->data))
|
|
||||||
gtk_widget_destroy (GTK_WIDGET (iter->data));
|
gtk_widget_destroy (GTK_WIDGET (iter->data));
|
||||||
g_list_free (children);
|
g_list_free (children);
|
||||||
tray_toggle_item = NULL;
|
tray_toggle_item = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
|
||||||
tray_toggle_item_destroy_cb (GtkWidget *widget, gpointer userdata)
|
|
||||||
{
|
|
||||||
(void)userdata;
|
|
||||||
|
|
||||||
if (tray_toggle_item == widget)
|
|
||||||
tray_toggle_item = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tray_update_toggle_item_label (void)
|
tray_update_toggle_item_label (void)
|
||||||
{
|
{
|
||||||
@@ -1161,11 +1157,6 @@ tray_update_toggle_item_label (void)
|
|||||||
|
|
||||||
if (!tray_toggle_item)
|
if (!tray_toggle_item)
|
||||||
return;
|
return;
|
||||||
if (!GTK_IS_MENU_ITEM (tray_toggle_item))
|
|
||||||
{
|
|
||||||
tray_toggle_item = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tray_get_window_status () == WS_HIDDEN)
|
if (tray_get_window_status () == WS_HIDDEN)
|
||||||
label = _("_Restore Window");
|
label = _("_Restore Window");
|
||||||
@@ -1218,9 +1209,10 @@ tray_menu_cb (GtkWidget *widget, guint button, guint time, gpointer userdata)
|
|||||||
(void)time;
|
(void)time;
|
||||||
(void)userdata;
|
(void)userdata;
|
||||||
|
|
||||||
if (menu)
|
/* close any old menu */
|
||||||
|
if (G_IS_OBJECT (menu))
|
||||||
{
|
{
|
||||||
tray_menu_destroy (menu, &menu);
|
tray_menu_destroy (menu, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
menu = gtk_menu_new ();
|
menu = gtk_menu_new ();
|
||||||
@@ -1230,9 +1222,8 @@ tray_menu_cb (GtkWidget *widget, guint button, guint time, gpointer userdata)
|
|||||||
g_object_ref (menu);
|
g_object_ref (menu);
|
||||||
g_object_ref_sink (menu);
|
g_object_ref_sink (menu);
|
||||||
g_object_unref (menu);
|
g_object_unref (menu);
|
||||||
g_object_add_weak_pointer (G_OBJECT (menu), (gpointer *)&menu);
|
|
||||||
g_signal_connect (G_OBJECT (menu), "selection-done",
|
g_signal_connect (G_OBJECT (menu), "selection-done",
|
||||||
G_CALLBACK (tray_menu_destroy), &menu);
|
G_CALLBACK (tray_menu_destroy), NULL);
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
g_signal_connect (G_OBJECT (menu), "leave-notify-event",
|
g_signal_connect (G_OBJECT (menu), "leave-notify-event",
|
||||||
G_CALLBACK (tray_menu_left_cb), NULL);
|
G_CALLBACK (tray_menu_left_cb), NULL);
|
||||||
|
|||||||
@@ -2197,8 +2197,8 @@ setup_ok_cb (GtkWidget *but, GtkWidget *win)
|
|||||||
char buffer[192];
|
char buffer[192];
|
||||||
|
|
||||||
memcpy (&old_prefs, &prefs, sizeof (prefs));
|
memcpy (&old_prefs, &prefs, sizeof (prefs));
|
||||||
setup_apply (&setup_prefs);
|
|
||||||
theme_preferences_stage_apply ();
|
theme_preferences_stage_apply ();
|
||||||
|
setup_apply (&setup_prefs);
|
||||||
save_result = preferences_persistence_save_all ();
|
save_result = preferences_persistence_save_all ();
|
||||||
if (save_result.success)
|
if (save_result.success)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,16 +68,6 @@ theme_get_color (ThemeSemanticToken token, GdkRGBA *color)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
theme_get_widget_style_values_for_widget (GtkWidget *widget, ThemeWidgetStyleValues *out_values)
|
|
||||||
{
|
|
||||||
(void)widget;
|
|
||||||
if (!out_values)
|
|
||||||
return;
|
|
||||||
gdk_rgba_parse (&out_values->foreground, "#111111");
|
|
||||||
gdk_rgba_parse (&out_values->background, "#f0f0f0");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
theme_manager_set_token_color (unsigned int dark_mode, ThemeSemanticToken token, const GdkRGBA *color, gboolean *changed)
|
theme_manager_set_token_color (unsigned int dark_mode, ThemeSemanticToken token, const GdkRGBA *color, gboolean *changed)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -723,7 +723,6 @@ theme_preferences_manager_dialog_response_cb (GtkDialog *dialog, gint response_i
|
|||||||
if (theme_preferences_stage.active)
|
if (theme_preferences_stage.active)
|
||||||
{
|
{
|
||||||
ThemeSemanticToken token;
|
ThemeSemanticToken token;
|
||||||
ThemeWidgetStyleValues style_values;
|
|
||||||
|
|
||||||
for (token = THEME_TOKEN_MIRC_0; token < THEME_TOKEN_COUNT; token++)
|
for (token = THEME_TOKEN_MIRC_0; token < THEME_TOKEN_COUNT; token++)
|
||||||
{
|
{
|
||||||
@@ -734,12 +733,6 @@ theme_preferences_manager_dialog_response_cb (GtkDialog *dialog, gint response_i
|
|||||||
theme_preferences_stage.staged[token] = rgba;
|
theme_preferences_stage.staged[token] = rgba;
|
||||||
theme_preferences_stage.staged_valid[token] = TRUE;
|
theme_preferences_stage.staged_valid[token] = TRUE;
|
||||||
}
|
}
|
||||||
theme_get_widget_style_values_for_widget (GTK_WIDGET (dialog), &style_values);
|
|
||||||
theme_preferences_stage.staged[THEME_TOKEN_TEXT_FOREGROUND] = style_values.foreground;
|
|
||||||
theme_preferences_stage.staged_valid[THEME_TOKEN_TEXT_FOREGROUND] = TRUE;
|
|
||||||
theme_preferences_stage.staged[THEME_TOKEN_TEXT_BACKGROUND] = style_values.background;
|
|
||||||
theme_preferences_stage.staged_valid[THEME_TOKEN_TEXT_BACKGROUND] = TRUE;
|
|
||||||
theme_preferences_stage_sync_runtime_to_staged ();
|
|
||||||
theme_preferences_stage_recompute_changed ();
|
theme_preferences_stage_recompute_changed ();
|
||||||
if (ui->color_change_flag)
|
if (ui->color_change_flag)
|
||||||
*ui->color_change_flag = theme_preferences_stage.changed;
|
*ui->color_change_flag = theme_preferences_stage.changed;
|
||||||
|
|||||||
Reference in New Issue
Block a user