mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-26 14:41:25 +00:00
client inputs: stop blinking keyboard when out of focus
We could introduce another boolean to prevent changes, or just reuse _active_modifiers_event = true to prevent further update. Additionaly this patch restore the keyboard state when focusing out, which is fine when dealing with full remote desktop, but should be reconsidered if/when SPICE supports remote windows managed by client window manager for instance, imho.
This commit is contained in:
parent
3c46335004
commit
d66c1904f9
@ -404,10 +404,14 @@ void InputsChannel::set_local_modifiers()
|
||||
|
||||
void InputsChannel::on_focus_in()
|
||||
{
|
||||
Lock lock(_update_modifiers_lock);
|
||||
_active_modifiers_event = false;
|
||||
_on_focus_modifiers = Platform::get_keyboard_lock_modifiers();
|
||||
|
||||
#ifdef SYNC_REMOTE_MODIFIERS
|
||||
Message* message = new Message(SPICE_MSGC_INPUTS_KEY_MODIFIERS);
|
||||
SpiceMsgcKeyModifiers modifiers;
|
||||
modifiers.modifiers = Platform::get_keyboard_lock_modifiers();
|
||||
modifiers.modifiers = _on_focus_modifiers;
|
||||
_marshallers->msgc_inputs_key_modifiers(message->marshaller(), &modifiers);
|
||||
post_message(message);
|
||||
#else
|
||||
@ -415,6 +419,14 @@ void InputsChannel::on_focus_in()
|
||||
#endif
|
||||
}
|
||||
|
||||
void InputsChannel::on_focus_out()
|
||||
{
|
||||
Lock lock(_update_modifiers_lock);
|
||||
_active_modifiers_event = true;
|
||||
_modifiers = _on_focus_modifiers;
|
||||
set_local_modifiers();
|
||||
}
|
||||
|
||||
void InputsChannel::init_scan_code(int index)
|
||||
{
|
||||
ASSERT((index & 0x80) == 0);
|
||||
|
||||
@ -34,6 +34,7 @@ public:
|
||||
virtual void on_key_down(RedKey key);
|
||||
virtual void on_key_up(RedKey key);
|
||||
virtual void on_focus_in();
|
||||
virtual void on_focus_out();
|
||||
|
||||
void on_mouse_position(int x, int y, int buttons_state, int display_id);
|
||||
|
||||
@ -72,6 +73,7 @@ private:
|
||||
bool _active_motion;
|
||||
int _motion_count;
|
||||
uint32_t _modifiers;
|
||||
uint32_t _on_focus_modifiers;
|
||||
Mutex _update_modifiers_lock;
|
||||
bool _active_modifiers_event;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user