7
$\begingroup$

I have an application using InputField to allow a user to dynamically update a data structure. In some cases the user will want to remove a string from one field and paste it into another. If this is done using cut and paste everything works okay, and the underlying data updates to reflect what is seen in the GUI. However, if the string is moved using drag and drop, the Dynamic in the source field does not appear to register the change of contents, although the destination field works as expected.

Here's an example:

test = {"string", ""};
Column[{
  InputField[Dynamic[test[[1]]], String],
  InputField[Dynamic[test[[2]]], String],
  Dynamic[test]
  }]

enter image description here

If I now drag and drop the string from the upper field into the lower field I get this:

enter image description here

The upper input field is now empty but test[[1]] still contains "string". This is a problem, because normally the Dynamic[test] line won't be there so the user relies on the input fields to correctly show the actual contents of test.

How can I fix this?

$\endgroup$
9
  • 1
    $\begingroup$ what do you mean by drag and drop? Am I missing something? Also, I assume that ContinuousAction->True does not work too, does it"? $\endgroup$
    – Kuba
    Sep 9, 2013 at 11:52
  • $\begingroup$ What OS or mma version allows you to drag and drop these fields? $\endgroup$
    – Mr.Wizard
    Sep 9, 2013 at 12:00
  • 2
    $\begingroup$ @Mr.Wizard, version 9 on windows 7. Pretty sure it worked with version 7 on XP too. You do have to have drag and drop editing enabled in preferences. $\endgroup$ Sep 9, 2013 at 12:09
  • 1
    $\begingroup$ @SimonWoods oh, +1, I wasn't aware of the drag&drop built-in functionality :) each day something new :) $\endgroup$
    – Kuba
    Sep 9, 2013 at 12:14
  • 1
    $\begingroup$ @Mr.Wizard. I too tried it awhile back, but Mathematica's inept undo facility made it too risky. $\endgroup$
    – m_goldberg
    Sep 9, 2013 at 12:23

1 Answer 1

5
$\begingroup$

The descriprion of the problem seemed to me similar to other issues I've faced in the past.

ContinuousAction->True

option for InputField helped me then and OP confirms that it helps in his case too.

So at the end, MWE introduced by Simon Woods should be expanded to:

Column[{
        InputField[Dynamic[test[[1]]], String, ContinuousAction -> True], 
        InputField[Dynamic[test[[2]]], String, ContinuousAction -> True], 
        Dynamic[test]
      }]
$\endgroup$
3
  • 1
    $\begingroup$ Please consider editing your answer to show where in Simon Woods' code the option should be applied. $\endgroup$
    – m_goldberg
    Sep 9, 2013 at 12:18
  • 1
    $\begingroup$ @m_goldberg both InputField expressions. $\endgroup$
    – Mr.Wizard
    Sep 9, 2013 at 12:19
  • $\begingroup$ @m_goldberg You're right. $\endgroup$
    – Kuba
    Sep 9, 2013 at 12:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.