mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
Clicking and releasing on the query toolbar icon is meant to select the land-info tool. This did not work as during closing a window, OnFocusLost() is called, which then closes the window again. These two calls toggled the land-info tool one and off in the same action. Resolve by not calling Window::Close in OnFocusLost() if the window is already closing.
This commit is contained in:
parent
613ad80581
commit
ebc451b071
@ -336,7 +336,7 @@ struct IConsoleWindow : Window
|
||||
VideoDriver::GetInstance()->EditBoxGainedFocus();
|
||||
}
|
||||
|
||||
void OnFocusLost() override
|
||||
void OnFocusLost(bool closing) override
|
||||
{
|
||||
VideoDriver::GetInstance()->EditBoxLostFocus();
|
||||
}
|
||||
|
@ -197,10 +197,10 @@ struct OskWindow : public Window {
|
||||
this->parent->SetWidgetDirty(this->text_btn);
|
||||
}
|
||||
|
||||
void OnFocusLost() override
|
||||
void OnFocusLost(bool closing) override
|
||||
{
|
||||
VideoDriver::GetInstance()->EditBoxLostFocus();
|
||||
this->Close();
|
||||
if (!closing) this->Close();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -197,9 +197,9 @@ struct DropdownWindow : Window {
|
||||
if (nwc != nullptr) SetBit(nwc->disp_flags, NDB_DROPDOWN_CLOSED);
|
||||
}
|
||||
|
||||
void OnFocusLost() override
|
||||
void OnFocusLost(bool closing) override
|
||||
{
|
||||
this->Close();
|
||||
if (!closing) this->Close();
|
||||
}
|
||||
|
||||
Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number) override
|
||||
|
@ -469,7 +469,7 @@ void SetFocusedWindow(Window *w)
|
||||
_focused_window = w;
|
||||
|
||||
/* So we can inform it that it lost focus */
|
||||
if (old_focused != nullptr) old_focused->OnFocusLost();
|
||||
if (old_focused != nullptr) old_focused->OnFocusLost(false);
|
||||
if (_focused_window != nullptr) _focused_window->OnFocus();
|
||||
}
|
||||
|
||||
@ -545,7 +545,7 @@ void Window::OnFocus()
|
||||
/**
|
||||
* Called when window loses focus
|
||||
*/
|
||||
void Window::OnFocusLost()
|
||||
void Window::OnFocusLost(bool closing)
|
||||
{
|
||||
if (this->nested_focus != nullptr && this->nested_focus->type == WWT_EDITBOX) VideoDriver::GetInstance()->EditBoxLostFocus();
|
||||
}
|
||||
@ -1132,7 +1132,7 @@ void Window::Close()
|
||||
|
||||
/* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */
|
||||
if (_focused_window == this) {
|
||||
this->OnFocusLost();
|
||||
this->OnFocusLost(true);
|
||||
_focused_window = nullptr;
|
||||
}
|
||||
|
||||
|
@ -515,9 +515,16 @@ public:
|
||||
*/
|
||||
virtual void SetStringParameters(int widget) const {}
|
||||
|
||||
/**
|
||||
* The window has gained focus.
|
||||
*/
|
||||
virtual void OnFocus();
|
||||
|
||||
virtual void OnFocusLost();
|
||||
/**
|
||||
* The window has lost focus.
|
||||
* @param closing True iff the window has lost focus in the process of closing.
|
||||
*/
|
||||
virtual void OnFocusLost(bool closing);
|
||||
|
||||
/**
|
||||
* A key has been pressed.
|
||||
|
Loading…
Reference in New Issue
Block a user