From 654796c221f7163c29d28d4e182c1bd21a73c123 Mon Sep 17 00:00:00 2001 From: deepend-tildeclub Date: Mon, 30 Mar 2026 18:35:32 -0600 Subject: [PATCH] Add pref to toggle tab close buttons --- src/common/cfgfiles.c | 2 ++ src/common/zoitechat.h | 1 + src/fe-gtk/chanview-tabs.c | 8 +++++--- src/fe-gtk/setup.c | 3 +++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c index d6cbf891..299e7caf 100644 --- a/src/common/cfgfiles.c +++ b/src/common/cfgfiles.c @@ -445,6 +445,7 @@ const struct prefs vars[] = {"gui_dark_mode", P_OFFINT (hex_gui_dark_mode), TYPE_INT}, {"gui_gtk3_variant", P_OFFINT (hex_gui_gtk3_variant), TYPE_INT}, {"gui_tab_layout", P_OFFINT (hex_gui_tab_layout), TYPE_INT}, + {"gui_tab_closebuttons", P_OFFINT (hex_gui_tab_closebuttons), TYPE_BOOL}, {"gui_tab_middleclose", P_OFFINT (hex_gui_tab_middleclose), TYPE_BOOL}, {"gui_tab_newtofront", P_OFFINT (hex_gui_tab_newtofront), TYPE_INT}, {"gui_tab_pos", P_OFFINT (hex_gui_tab_pos), TYPE_INT}, @@ -777,6 +778,7 @@ load_default_config(void) prefs.hex_gui_tab_chans = 1; prefs.hex_gui_tab_dialogs = 1; prefs.hex_gui_tab_icons = 1; + prefs.hex_gui_tab_closebuttons = 1; prefs.hex_gui_tab_middleclose = 1; prefs.hex_gui_tab_server = 1; prefs.hex_gui_tab_sort = 1; diff --git a/src/common/zoitechat.h b/src/common/zoitechat.h index 50ffd8ea..adf8ca30 100644 --- a/src/common/zoitechat.h +++ b/src/common/zoitechat.h @@ -265,6 +265,7 @@ struct zoitechatprefs int hex_gui_search_pos; int hex_gui_slist_select; int hex_gui_tab_layout; + int hex_gui_tab_closebuttons; int hex_gui_tab_middleclose; int hex_gui_tab_newtofront; int hex_gui_tab_pos; diff --git a/src/fe-gtk/chanview-tabs.c b/src/fe-gtk/chanview-tabs.c index b610b88b..41b74739 100644 --- a/src/fe-gtk/chanview-tabs.c +++ b/src/fe-gtk/chanview-tabs.c @@ -653,7 +653,7 @@ tab_click_cb (GtkWidget *wid, GdkEventButton *event, chan *ch) if (event->button == 1 && event->type == GDK_BUTTON_PRESS) { close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button"); - if (close_button && + if (prefs.hex_gui_tab_closebuttons && close_button && gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y)) { gtk_widget_get_allocation (close_button, &close_alloc); @@ -679,7 +679,7 @@ tab_close_motion_cb (GtkWidget *wid, GdkEventMotion *event, chan *ch) gboolean hover = FALSE; close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button"); - if (close_button && + if (prefs.hex_gui_tab_closebuttons && close_button && gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y)) { gtk_widget_get_allocation (close_button, &close_alloc); @@ -714,7 +714,7 @@ tab_close_leave_cb (GtkWidget *wid, GdkEventCrossing *event, chan *ch) GtkWidget *close_button; close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button"); - if (close_button) + if (prefs.hex_gui_tab_closebuttons && close_button) gtk_widget_unset_state_flags (close_button, GTK_STATE_FLAG_PRELIGHT); if (gtk_widget_get_window (wid)) gdk_window_set_cursor (gtk_widget_get_window (wid), NULL); @@ -780,6 +780,8 @@ cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent) G_CALLBACK (tab_toggled_cb), ch); g_object_set_data (G_OBJECT (but), "u", ch->userdata); gtk_widget_show_all (hbox); + if (!prefs.hex_gui_tab_closebuttons) + gtk_widget_hide (close_button); tab_add_real (cv, but, ch); diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index af32e719..f4250c67 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -330,6 +330,7 @@ static const setting tabs_settings[] = {ST_TOGGLE, N_("Show icons in the channel tree"), P_OFFINTNL(hex_gui_tab_icons), 0, 0, 0}, {ST_TOGGLE, N_("Show dotted lines in the channel tree"), P_OFFINTNL(hex_gui_tab_dots), 0, 0, 0}, {ST_TOGGLE, N_("Scroll mouse-wheel to change tabs"), P_OFFINTNL (hex_gui_tab_scrollchans), 0, 0, 0}, + {ST_TOGGLE, N_("Show close button on tabs"), P_OFFINTNL(hex_gui_tab_closebuttons), 0, 0, 0}, {ST_TOGGLE, N_("Middle click to close tab"), P_OFFINTNL(hex_gui_tab_middleclose), 0, 0, 0}, {ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(hex_gui_tab_small), 0, 0, 0}, {ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(hex_gui_tab_newtofront), 0, focusnewtabsmenu, 0}, @@ -2186,6 +2187,8 @@ setup_apply (struct zoitechatprefs *pr) noapply = TRUE; if (DIFF (hex_gui_tab_icons)) noapply = TRUE; + if (DIFF (hex_gui_tab_closebuttons)) + noapply = TRUE; if (DIFF (hex_gui_tab_server)) noapply = TRUE; if (DIFF (hex_gui_tab_small))