diff --git a/src/gui/auxiliary/event/handler.cpp b/src/gui/auxiliary/event/handler.cpp index ec6a2b90e66..8c6dceb42c2 100644 --- a/src/gui/auxiliary/event/handler.cpp +++ b/src/gui/auxiliary/event/handler.cpp @@ -320,10 +320,12 @@ void thandler::connect(tdispatcher* dispatcher) void thandler::disconnect(tdispatcher* dispatcher) { + /***** Validate pre conditions. *****/ std::vector::iterator itor = std::find(dispatchers_.begin(), dispatchers_.end(), dispatcher); assert(itor != dispatchers_.end()); + /***** Remove dispatcher. *****/ dispatchers_.erase(itor); if(dispatcher == mouse_focus) { @@ -333,6 +335,12 @@ void thandler::disconnect(tdispatcher* dispatcher) keyboard_focus_ = NULL; } + /***** Set proper state for the other dispatchers. *****/ + foreach(tdispatcher* dispatcher, dispatchers_) { + dynamic_cast(*dispatcher).set_dirty(); + } + + /***** Validate post conditions. *****/ assert(std::find(dispatchers_.begin(), dispatchers_.end(), dispatcher) == dispatchers_.end()); #ifndef GUI2_OLD_EVENT_HANDLING diff --git a/src/gui/dialogs/mp_connect.cpp b/src/gui/dialogs/mp_connect.cpp index 82c2397cf7d..607f883f36b 100644 --- a/src/gui/dialogs/mp_connect.cpp +++ b/src/gui/dialogs/mp_connect.cpp @@ -191,9 +191,6 @@ void tmp_connect::show_server_list(twindow& window) if(dlg.get_retval() == twindow::OK) { host_name_->set_widget_value(window, dlg.host_name()); } - - /** @todo FIXME hack to force redraw. */ - window.invalidate_layout(); } /*WIKI