mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-31 20:04:09 +00:00
Handle Application::set_hotkeys failure
Application::set_hotkeys can throw an exception if it fails parsing the string describing the hotkeys to set. Currently this exception is uncaught which causes spicec to terminate when the controller tries to set invalid hotkeys. Fall back to using the default hotkeys when the controller sends an invalid hotkeys string.
This commit is contained in:
parent
e3fb720cd1
commit
67178944d2
@ -393,21 +393,7 @@ Application::Application()
|
||||
Platform::get_app_data_dir(_host_auth_opt.CA_file, app_name);
|
||||
Platform::path_append(_host_auth_opt.CA_file, CA_FILE_NAME);
|
||||
|
||||
std::auto_ptr<HotKeysParser> parser(new HotKeysParser("toggle-fullscreen=shift+f11"
|
||||
",release-cursor=shift+f12"
|
||||
#ifdef RED_DEBUG
|
||||
",connect=shift+f5"
|
||||
",disconnect=shift+f6"
|
||||
#endif
|
||||
#ifdef USE_GUI
|
||||
",show-gui=shift+f7"
|
||||
#endif // USE_GUI
|
||||
#ifdef USE_SMARTCARD
|
||||
",smartcard-insert=shift+f8"
|
||||
",smartcard-remove=shift+f9"
|
||||
#endif
|
||||
, _commands_map));
|
||||
_hot_keys = parser->get();
|
||||
this->set_default_hotkeys();
|
||||
|
||||
_sticky_info.trace_is_on = false;
|
||||
_sticky_info.sticky_mode = false;
|
||||
@ -1867,10 +1853,36 @@ void Application::hide_me()
|
||||
hide();
|
||||
}
|
||||
|
||||
void Application::set_default_hotkeys(void)
|
||||
{
|
||||
const std::string default_hotkeys = "toggle-fullscreen=shift+f11"
|
||||
",release-cursor=shift+f12"
|
||||
#ifdef RED_DEBUG
|
||||
",connect=shift+f5"
|
||||
",disconnect=shift+f6"
|
||||
#endif
|
||||
#ifdef USE_GUI
|
||||
",show-gui=shift+f7"
|
||||
#endif // USE_GUI
|
||||
#ifdef USE_SMARTCARD
|
||||
",smartcard-insert=shift+f8"
|
||||
",smartcard-remove=shift+f9"
|
||||
#endif
|
||||
"";
|
||||
|
||||
this->set_hotkeys(default_hotkeys);
|
||||
}
|
||||
|
||||
void Application::set_hotkeys(const std::string& hotkeys)
|
||||
{
|
||||
std::auto_ptr<HotKeysParser> parser(new HotKeysParser(hotkeys, _commands_map));
|
||||
_hot_keys = parser->get();
|
||||
|
||||
try {
|
||||
std::auto_ptr<HotKeysParser> parser(new HotKeysParser(hotkeys, _commands_map));
|
||||
_hot_keys = parser->get();
|
||||
} catch (Exception &e) {
|
||||
LOG_WARN("%s", e.what());
|
||||
this->set_default_hotkeys();
|
||||
}
|
||||
}
|
||||
|
||||
int Application::get_controller_menu_item_id(int32_t opaque_conn_ref, uint32_t msg_id)
|
||||
|
||||
@ -250,6 +250,7 @@ public:
|
||||
void show_me(bool full_screen);
|
||||
void hide_me();
|
||||
void set_hotkeys(const std::string& hotkeys);
|
||||
void set_default_hotkeys(void);
|
||||
int get_controller_menu_item_id(int32_t opaque_conn_ref, uint32_t msg_id);
|
||||
void set_menu(Menu* menu);
|
||||
void delete_menu();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user