chiark / gitweb /
Fix auto-selection of presets in GTK.
authorSimon Tatham <anakin@pobox.com>
Sat, 30 Sep 2017 20:18:52 +0000 (21:18 +0100)
committerSimon Tatham <anakin@pobox.com>
Sat, 30 Sep 2017 20:18:52 +0000 (21:18 +0100)
In commit a7dc17c42 I apparently introduced two bugs in
changed_preset(). Firstly, the Custom menu option was being written
into the 'found' variable in nearly all cases, because it has a NULL
user-data pointer which caused it to take the wrong branch of an if
statement due to an erroneous complex condition. Secondly, having
written _something_ into 'found', I had set it to inactive rather than
active due to forgetting to change a FALSE into a TRUE.

Now when I start up Net with my usual nonstandard default parameters
(I like the 13x11 wrapping, so I set NET_DEFAULT=13x11w in my
environment), the right menu entry comes up ticked.

gtk.c

diff --git a/gtk.c b/gtk.c
index c2125229570927925773a12cf592e17350e9a19f..2556550b9f83de5c3658f433c2d27954d461dbbe 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -1881,8 +1881,7 @@ static void changed_preset(frontend *fe)
             struct preset_menu_entry *entry =
                 (struct preset_menu_entry *)g_object_get_data(
                     G_OBJECT(gs->data), "user-data");
-
-            if (entry && entry->id != n)
+            if (!entry || entry->id != n)
                 gtk_check_menu_item_set_active(
                     GTK_CHECK_MENU_ITEM(gs->data), FALSE);
             else
@@ -1890,7 +1889,7 @@ static void changed_preset(frontend *fe)
         }
         if (found)
             gtk_check_menu_item_set_active(
-                GTK_CHECK_MENU_ITEM(found->data), FALSE);
+                GTK_CHECK_MENU_ITEM(found->data), TRUE);
     }
     fe->preset_threaded = FALSE;