Revert "Scary experimental changes to the way focus is tracked to reduce"

This reverts commit 22900b2c83.
This commit is contained in:
casey langen 2019-03-05 22:46:29 -08:00
parent 22900b2c83
commit 2e1ea995cf
6 changed files with 19 additions and 14 deletions

View File

@ -306,6 +306,7 @@ IWindowPtr LibraryLayout::FocusNext() {
return this->transportView;
}
this->transportView->Blur();
return this->visibleLayout->FocusFirst();
}
@ -318,6 +319,7 @@ IWindowPtr LibraryLayout::FocusPrev() {
return this->transportView;
}
this->transportView->Blur();
return this->visibleLayout->FocusLast();
}
@ -450,10 +452,12 @@ bool LibraryLayout::KeyPress(const std::string& key) {
return true;
}
else if (this->GetFocus() == this->transportView && Hotkeys::Is(Hotkeys::Up, key)) {
this->transportView->Blur();
this->visibleLayout->FocusLast();
return true;
}
else if (this->GetFocus() == this->transportView && Hotkeys::Is(Hotkeys::Down, key)) {
this->transportView->Blur();
this->visibleLayout->FocusFirst();
return true;
}

View File

@ -360,6 +360,7 @@ void TransportWindow::SetFocus(FocusTarget target) {
if (this->focus == FocusNone) {
this->lastFocus = last;
this->Blur();
}
else {
this->Focus();

View File

@ -449,6 +449,10 @@ process:
void App::UpdateFocusedWindow(IWindowPtr window) {
if (this->state.focused != window) {
if (this->state.focused) {
this->state.focused->Blur();
}
this->state.focused = window;
this->state.input = dynamic_cast<IInput*>(window.get());
this->state.keyHandler = dynamic_cast<IKeyHandler*>(window.get());

View File

@ -203,6 +203,11 @@ void AppLayout::FocusShortcuts() {
if (this->layout) {
this->lastFocus = this->layout->GetFocus();
if (this->lastFocus) {
this->lastFocus->Blur();
}
this->layout->SetFocus(IWindowPtr());
}

View File

@ -67,9 +67,14 @@ bool sortByFocusOrder(IWindowPtr a, IWindowPtr b) {
}
static inline IWindowPtr adjustFocus(IWindowPtr oldFocus, IWindowPtr newFocus) {
if (oldFocus) {
oldFocus->Blur();
}
if (newFocus) {
newFocus->Focus();
}
return newFocus;
}

View File

@ -52,7 +52,6 @@ static int NEXT_ID = 0;
static bool drawPending = false;
static bool freeze = false;
static Window* top = nullptr;
static Window* focused = nullptr;
static MessageQueue messageQueue;
static std::shared_ptr<INavigationKeys> keys;
@ -148,12 +147,6 @@ Window::Window(IWindow *parent) {
Window::~Window() {
messageQueue.Remove(this);
if (::top == this) {
::top = nullptr;
}
if (::focused == this) {
::focused = nullptr;
}
this->Destroy();
}
@ -814,10 +807,6 @@ bool Window::IsParentVisible() {
void Window::Focus() {
if (!this->isFocused) {
if (::focused && ::focused != this) {
::focused->Blur();
}
::focused = this;
this->isFocused = true;
this->isDirty = true;
this->OnFocusChanged(true);
@ -828,9 +817,6 @@ void Window::Focus() {
void Window::Blur() {
if (this->isFocused) {
if (::focused == this) {
::focused = nullptr;
}
this->isFocused = false;
this->isDirty = true;
this->OnFocusChanged(false);