Fixing ActiveWindow switching, actual happens switch after event is handled
This commit is contained in:
@@ -18,6 +18,7 @@ WindowID ConsoleWindowID;
|
|||||||
|
|
||||||
Array<WindowID> WindowSwitchHistory; // @todo: probably better as a circular buffer
|
Array<WindowID> WindowSwitchHistory; // @todo: probably better as a circular buffer
|
||||||
WindowID ActiveWindow;
|
WindowID ActiveWindow;
|
||||||
|
WindowID NextActiveWindow;
|
||||||
Int CaretChangeID;
|
Int CaretChangeID;
|
||||||
|
|
||||||
inline ViewID AllocViewID() { return {ViewIDs.id++}; }
|
inline ViewID AllocViewID() { return {ViewIDs.id++}; }
|
||||||
@@ -101,11 +102,7 @@ WindowID GetLastActiveWindow() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SetActiveWindow(WindowID window) {
|
void SetActiveWindow(WindowID window) {
|
||||||
ActiveWindow = window;
|
NextActiveWindow = window;
|
||||||
Window *w = GetWindow(window);
|
|
||||||
if (!w->dont_save_in_active_window_history) {
|
|
||||||
Add(&WindowSwitchHistory, window);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetActiveView(Window *window, ViewID view_id) {
|
void SetActiveView(Window *window, ViewID view_id) {
|
||||||
|
|||||||
@@ -163,6 +163,21 @@ void Update(const Event &event) {
|
|||||||
For(Windows) if (it.is_title_bar) ReplaceTitleBarData(&it);
|
For(Windows) if (it.is_title_bar) ReplaceTitleBarData(&it);
|
||||||
ReplaceDebugData();
|
ReplaceDebugData();
|
||||||
|
|
||||||
|
{
|
||||||
|
if (ActiveWindow.id != NextActiveWindow.id) {
|
||||||
|
Window *window = GetWindow(ActiveWindow);
|
||||||
|
window->mouse_selecting = false;
|
||||||
|
window->mouse_selecting_scrollbar = false;
|
||||||
|
View *view = GetView(window->active_view);
|
||||||
|
view->underline_count = 0;
|
||||||
|
}
|
||||||
|
ActiveWindow = NextActiveWindow;
|
||||||
|
Window *w = GetWindow(ActiveWindow);
|
||||||
|
if (!w->dont_save_in_active_window_history) {
|
||||||
|
Add(&WindowSwitchHistory, ActiveWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
For(IterateInReverse(&order)) {
|
For(IterateInReverse(&order)) {
|
||||||
Window *window = &Windows[it];
|
Window *window = &Windows[it];
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user