Project

General

Profile

SpinBox that Spin too much

Added by Kim Forest over 11 years ago

Hi there,

i've compiled(linux) Wt from github and strange thing have happen.

when i use the up or down button it increase to the max or min.

it's normal ( i mean some one else have this issue ) or it's just on my side ?

Thanks in advance

Kim


Replies (8)

RE: SpinBox that Spin too much - Added by Стойчо Стефанов Stoycho Stefanov over 11 years ago

Hey,

I don't think, it is normal. I have this problem as well. Not always, but in a spacial case, although I cannot find what cause this behaviour. Do you use some of the event signals of the spin box widget itself or of its parent widget? It seems to me something like this could cause the problem, but as I said, I'm just guessing.

Regards,

Stoycho

RE: SpinBox that Spin too much - Added by Kim Forest over 11 years ago

Hi Stoycho,

no I have no slot connected to these spinbox.

and for it's parent, i have many added to an WTable and WTabWidget.

I've just tried on the root() parent and it does the same .

It's giving me the idea that the mouse pressed event is never cleared.

because once you've clicked on the "up" button and you tried to enter a lower value, it goes to the maximal value again.

Kim

RE: SpinBox that Spin too much - Added by Стойчо Стефанов Stoycho Stefanov over 11 years ago

Hey Kim,

yes, you're right, I commented out all my connections and it still behave in the same way. I suppose there is a bug in the javascript. I hope a developer sees this discussion soon and helps us.

Regards,

Stoycho

RE: SpinBox that Spin too much - Added by Wim Dumon over 11 years ago

Try reverting this patch:

@@ -949,8 +949,27 @@ void WWebWidget::addJavaScriptStatement(JavaScriptStatement
     otherImpl_->jsStatements_
       = new std::vector<OtherImpl::JavaScriptStatement>();

-  otherImpl_->jsStatements_->push_back
-    (OtherImpl::JavaScriptStatement(type, data));
+  std::vector<OtherImpl::JavaScriptStatement>& v = *otherImpl_->jsStatements_;
+
+  /*
+   * a SetMember is idempotent, if one is already scheduled we do not need
+   * to add another statement.
+   */
+  if (type == SetMember) {
+    for (unsigned i = 0; i < v.size(); ++i) {
+      if (v[i].type == SetMember && v[i].data == data)
+       return;
+    }
+  }
+
+  /*
+   * If the last statement is exactly the same, then it's a dupe, discard it
+   * too.
+   */
+  if (v.empty() ||
+      v.back().type != type ||
+      v.back().data != data)
+    v.push_back(OtherImpl::JavaScriptStatement(type, data));
 }

 void WWebWidget::setToolTip(const WString& text, TextFormat textFormat)

Wim.

RE: SpinBox that Spin too much - Added by Kim Forest over 11 years ago

Hi Wim,

just rebuild the library with this "fix", and it work perfectly :)

Thanks for all !

Kim

RE: SpinBox that Spin too much - Added by Wim Dumon over 11 years ago

This patch breaks different things; a proper fix will be in public git soon.

Wim.

RE: SpinBox that Spin too much - Added by Стойчо Стефанов Stoycho Stefanov over 11 years ago

Hey Wim,

let us know please when the fix is there.

Regards,

Stoycho

RE: SpinBox that Spin too much - Added by Wim Dumon over 11 years ago

Fix should be in public git now.

BR,

Wim.

    (1-8/8)