aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-05-07 17:17:35 +0200
committerThomas White <taw@physics.org>2021-05-07 17:17:35 +0200
commite693445ac62fdd54eacf56b8436f55fa579cc50f (patch)
tree95a2941ee58571f258f1e1fd69b672c0d067a9d4 /src
parent86995ac65ed3fd0ec20799a0e5a08a111c72b8a8 (diff)
Add deselect_when_active()
Diffstat (limited to 'src')
-rw-r--r--src/gtk-util-routines.c18
-rw-r--r--src/gtk-util-routines.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/src/gtk-util-routines.c b/src/gtk-util-routines.c
index a19027b6..4117dfda 100644
--- a/src/gtk-util-routines.c
+++ b/src/gtk-util-routines.c
@@ -105,6 +105,24 @@ int i_maybe_disable_and_deselect(GtkWidget *toggle, GtkWidget *widget)
}
+static int inv_maybe_disable(GtkWidget *toggle, GtkWidget *victim)
+{
+ if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)) ) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(victim), FALSE);
+ }
+ return FALSE;
+}
+
+
+void deselect_when_active(GtkWidget *toggle, GtkWidget *victim)
+{
+ g_signal_connect(G_OBJECT(toggle), "toggled",
+ G_CALLBACK(inv_maybe_disable),
+ victim);
+ inv_maybe_disable(toggle, victim);
+}
+
+
void set_active(GtkWidget *tb, int active)
{
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tb), active);
diff --git a/src/gtk-util-routines.h b/src/gtk-util-routines.h
index 08b8537e..e378a49f 100644
--- a/src/gtk-util-routines.h
+++ b/src/gtk-util-routines.h
@@ -37,6 +37,7 @@ extern unsigned int get_uint(GtkWidget *entry);
extern float get_float(GtkWidget *entry);
extern int i_maybe_disable(GtkWidget *toggle, GtkWidget *widget);
extern int i_maybe_disable_and_deselect(GtkWidget *toggle, GtkWidget *widget);
+extern void deselect_when_active(GtkWidget *toggle, GtkWidget *widget);
extern void set_active(GtkWidget *tb, int active);
extern void redraw_widget(GtkWidget *wid);
extern const char *get_text_or_null(GtkEntry *entry);