> Assuming that we have a widget like a combobox. If I want to select
> an
> entry, the popup of the combobox opens. I click on an ListItem. The
> combobox
> disappears.
> But the click event is not eaten. In my case it changes the active
> Row in a
> table, which is below the combobox.
> If you want to see this in action please have a look at here:
> http://www.fitnesswelt.com/shopajx.html - In the first field type in
> something, the table should be filled. Then you can try to change
> the
> listboxes. If you have your browser configured to allow open
> popups, you
> will se what I mean.
It happens on the first click, when there is nothing selected in the
table. And then it only happens if you have just clicked on the selected
row (for example, select the second row and then click on it again).
Also it only happens when the mouse is being released. If you do mouse
down, and hold it, the combo-box disappears and the table is reloaded but
nothing is selected in it. Then release the mouse and the first row is
selected.
*BUG 1* The main issue would appear to be that qooxdoo should handle the
selection process in mouse up in the combo box, rather than mouse down.
Then the mouse up wouldn't be sent to the table that's underneath.
Analysing the reason for the mouse up behaviour, we can see it by looking
at qx.ui.table.selection.Manager.js. handleMouseUp has this code:
if (evt.isLeftButtonPressed() && !this._lastMouseDownHandled) {
this._handleSelectEvent(index, evt);
}
But this._lastMouseDownHandled is only created when there has been a
mouse down event on the table. So it is "undefined" when the first
mouseUp event occurs. *BUG 2* - prevent this happening perhaps with
another flag to indicate that no mouse event has come through yet.
Then in handleMouseDown there is code that affects
this._lastMouseDownHandled - setting it to false if a click is made on
the current selection (which is why the problem you see occurs when you
click on a row that is already selected). *BUG 3* - reset the flag in
mouseUp if you have clicked on a row that is already selected.
There are some options to fix this:
1. rename this._lastMouseDownHandled to this._handleClickOnMouseUp which
also inverts the sense of it, so the test in handleMouseUp tests for
"true" rather than false. If it's true, then on MouseUp it's reset to
false. Then when it is undefined, or a mouseUp is made on the same table
entry (with no mouseDown), the flag is false and it doesn't result in a
select event.
2. Another way, which would fix the combo box problem as well, is to only
handle click events on mouse up anyway. That way the combo box would eat
the mouse up event.
Option 2 is probably the best way of handling it as otherwise the
drag/drop functionality is probably going to be affected.
I see another problem with your combo box - sometimes after dropping it,
and then using the up and down arrows to select an entry, then click on
another entry, it doesn't change to the clicked entry but uses the entry
selected on scrolling. There are lots of errors like this in the firebug
log:
2509500 ERROR: qx.event.handler.EventHandler[55]: Failed to dispatch key
event: TypeError - this.getComputedValue is not a function at
http://www.fitnesswelt.com/shopajx/script/shopajx.js:95 <snip>
I suggest you look into all this a bit further, or if it's beyond you,
raise a bug report using my analysis.
By the way, I think it's a bit poor that you have to enable popups on
your site for the text from the selected table entry to show up, and then
that also means that your pop-under when the page is loaded is also
enabled.
Hugh
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel