fixed bug with clicked text area gadgets marking level as changed
authorHolger Schemel <info@artsoft.org>
Thu, 22 Oct 2020 16:37:29 +0000 (18:37 +0200)
committerHolger Schemel <info@artsoft.org>
Thu, 22 Oct 2020 16:37:29 +0000 (18:37 +0200)
This bugs happens when clicking into a text area gadgets, then
deactivating it again by clicking somewhere else. This marks the level
as changed, even though nothing was changed at all.

src/libgame/gadgets.c

index c961021a3e2a56e855ed93d9096f270a5823ba63..6c394d7ab2a6993ad080bc7a2b51de61aebd95ba 100644 (file)
@@ -1711,7 +1711,7 @@ boolean HandleGadgets(int mx, int my, int button)
     struct GadgetInfo *gi = last_gi;
     boolean gadget_changed = ((gi->event_mask & GD_EVENT_TEXT_LEAVING) != 0);
 
-    // check if text gadget has changed its value
+    // check if text input gadget has changed its value
     if (gi->type & GD_TYPE_TEXT_INPUT)
     {
       CheckRangeOfNumericInputGadget(gi);
@@ -1722,6 +1722,15 @@ boolean HandleGadgets(int mx, int my, int button)
        gadget_changed = FALSE;
     }
 
+    // check if text area gadget has changed its value
+    if (gi->type & GD_TYPE_TEXT_AREA)
+    {
+      if (!strEqual(gi->textarea.last_value, gi->textarea.value))
+       strcpy(gi->textarea.last_value, gi->textarea.value);
+      else
+       gadget_changed = FALSE;
+    }
+
     // selectbox does not change its value when closed by clicking outside
     if (gi->type & GD_TYPE_SELECTBOX)
       gadget_changed = FALSE;