Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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?

share|improve this question
1  
what do you mean by drag and drop? Am I missing something? Also, I assume that ContinuousAction->True does not work too, does it"? –  Kuba Sep 9 '13 at 11:52
    
What OS or mma version allows you to drag and drop these fields? –  Mr.Wizard Sep 9 '13 at 12:00
2  
@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. –  Simon Woods Sep 9 '13 at 12:09
1  
@SimonWoods oh, +1, I wasn't aware of the drag&drop built-in functionality :) each day something new :) –  Kuba Sep 9 '13 at 12:14
1  
@Mr.Wizard. I too tried it awhile back, but Mathematica's inept undo facility made it too risky. –  m_goldberg Sep 9 '13 at 12:23

1 Answer 1

up vote 5 down vote accepted

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]
      }]
share|improve this answer
1  
Please consider editing your answer to show where in Simon Woods' code the option should be applied. –  m_goldberg Sep 9 '13 at 12:18
1  
@m_goldberg both InputField expressions. –  Mr.Wizard Sep 9 '13 at 12:19
    
@m_goldberg You're right. –  Kuba Sep 9 '13 at 12:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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