mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-19 08:36:49 +00:00
sculpt_manager: improve hover-seq coordination
When a single TOUCH and TOUCH_RELEASE event are submitted simultaneously, the input sequence number is incremented twice. In consequence, menu view will never generate a hover report for the intermediate sequence number. However, this is the report that the sculpt manager is waiting for to correlate it with the TOUCH event. Only incrementing the input sequence number when the state changed from not clicked to clicked exposes another corner case: When the last event unfocused a dialog (e.g. the popup dialog) and when the current event touches the dialog, the seq event is not delivered to the dialog because it is not focused. Therefore, the seq event should be submitted after submitting the TOUCH event. genodelabs/genode#5491
This commit is contained in:
parent
9fdffcaa81
commit
bdac10cb05
@ -93,15 +93,19 @@ struct Gui::Session_component : Rpc_object<Gui::Session>,
|
||||
if (click(ev)) _clicked = true;
|
||||
if (clack(ev)) _clicked = false;
|
||||
|
||||
if (orig_clicked != _clicked) {
|
||||
bool const new_seq = (!orig_clicked && _clicked);
|
||||
|
||||
if (new_seq)
|
||||
_global_input_seq_number.value++;
|
||||
_input_component.submit(_global_input_seq_number);
|
||||
}
|
||||
|
||||
/* handle event locally within the sculpt manager */
|
||||
_event_handler.handle_input_event(ev);
|
||||
|
||||
_input_component.submit(ev);
|
||||
|
||||
/* pass seq event after touch to pass it to the correct client */
|
||||
if (new_seq)
|
||||
_input_component.submit(_global_input_seq_number);
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user