diff --git a/build_file.cpp b/build_file.cpp index 88cb376..b160964 100644 --- a/build_file.cpp +++ b/build_file.cpp @@ -253,6 +253,9 @@ void GenerateConfig() { colors.add({"TitleBarActiveBackground", "0xfefefefe"}); colors.add({"TitleBarSelection", "GruvboxLight3"}); + colors.add({"ResizerBackground", "GruvboxLight0Soft"}); + colors.add({"ResizerOutline", "GruvboxLight3"}); + Array style = {}; style.add({"WaitForEvents", "1"}); style.add({"DrawLineNumbers", "1"}); diff --git a/src/text_editor/generated.cpp b/src/text_editor/generated.cpp index 55b716f..3f4eaea 100644 --- a/src/text_editor/generated.cpp +++ b/src/text_editor/generated.cpp @@ -57,6 +57,8 @@ Color.TitleBarText = GruvboxDark2 Color.TitleBarBackground = GruvboxLight1 Color.TitleBarActiveBackground = 0xfefefefe Color.TitleBarSelection = GruvboxLight3 +Color.ResizerBackground = GruvboxLight0Soft +Color.ResizerOutline = GruvboxLight3 Style = {} Style.WaitForEvents = 1 Style.DrawLineNumbers = 1 @@ -391,6 +393,8 @@ void ReloadStyle() { ColorTitleBarBackground = GetColor("TitleBarBackground", ColorTitleBarBackground); ColorTitleBarActiveBackground = GetColor("TitleBarActiveBackground", ColorTitleBarActiveBackground); ColorTitleBarSelection = GetColor("TitleBarSelection", ColorTitleBarSelection); + ColorResizerBackground = GetColor("ResizerBackground", ColorResizerBackground); + ColorResizerOutline = GetColor("ResizerOutline", ColorResizerOutline); StyleWaitForEvents = GetStyleInt("WaitForEvents", StyleWaitForEvents); StyleDrawLineNumbers = GetStyleInt("DrawLineNumbers", StyleDrawLineNumbers); StyleDrawScrollbar = GetStyleInt("DrawScrollbar", StyleDrawScrollbar); diff --git a/src/text_editor/generated_variables.cpp b/src/text_editor/generated_variables.cpp index 6fd29b9..633b7d8 100644 --- a/src/text_editor/generated_variables.cpp +++ b/src/text_editor/generated_variables.cpp @@ -55,6 +55,8 @@ Color ColorTitleBarText = GruvboxDark2; Color ColorTitleBarBackground = GruvboxLight1; Color ColorTitleBarActiveBackground = {0xfe, 0xfe, 0xfe, 0xfe}; Color ColorTitleBarSelection = GruvboxLight3; +Color ColorResizerBackground = GruvboxLight0Soft; +Color ColorResizerOutline = GruvboxLight3; Int StyleWaitForEvents = 1; Int StyleDrawLineNumbers = 1; Int StyleDrawScrollbar = 1; diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index 560858a..82096e8 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -243,8 +243,6 @@ void Update(Event event) { UpdateDebugBuffer(); GarbageCollect(); - - SetMouseCursor(event); For(IterateInReverse(&order)) { if (!it->visible) continue; @@ -467,8 +465,11 @@ int main(int argc, char **argv) } Event *event = GetLast(frame_events); + SetMouseCursor(*event); LayoutWindows(event->xwindow, event->ywindow); // This is here to render changes in title bar size without a frame of delay BeginFrameRender(event->xwindow, event->ywindow); + DrawSplits(&WindowSplits); + Array order = GetWindowZOrder(scratch); For(IterateInReverse(&order)) { if (!it->visible) continue; diff --git a/src/text_editor/window.cpp b/src/text_editor/window.cpp index ab1b3fd..8d76f14 100644 --- a/src/text_editor/window.cpp +++ b/src/text_editor/window.cpp @@ -173,7 +173,7 @@ void InitWindows() { WindowSplit *split = &WindowSplits; split->kind = WindowSplitKind_Horizontal; - split->value = (double)1.0 - 0.1; + split->value = (double)0.9; { Window *window = CreateWindow(); @@ -182,7 +182,7 @@ void InitWindows() { CreateTitlebar(window->id); CreateSearchBar(window->id); - split->left = CreateSplitForWindow(split, window); + split->right = CreateSplitForWindow(split, window); } { @@ -194,7 +194,7 @@ void InitWindows() { CreateSearchBar(window->id); ActiveWindow = window->id; - split->right = CreateSplitForWindow(split, window); + split->left = CreateSplitForWindow(split, window); } { @@ -258,8 +258,8 @@ void LayoutWindowSplit(WindowSplit *split, Rect2I rect) { rect2 = CutTop(&rect, (Int)round((double)GetSize(rect).y * split->value)); split->resizer_rect = CutTop(&rect, (Int)resizer_size); - LayoutWindowSplit(split->left, rect); - LayoutWindowSplit(split->right, rect2); + LayoutWindowSplit(split->left, rect2); + LayoutWindowSplit(split->right, rect); } else { Assert(!"Invalid codepath"); } diff --git a/src/text_editor/window_draw.cpp b/src/text_editor/window_draw.cpp index bdf0a9e..17cf3dc 100644 --- a/src/text_editor/window_draw.cpp +++ b/src/text_editor/window_draw.cpp @@ -274,3 +274,21 @@ void DrawWindow(Window *window, Event &event) { DrawRect(window->total_rect, ColorInactiveWindow); } } + +void DrawSplits(WindowSplit *split) { + if (split == NULL) { + return; + } + Rect2I rect = split->resizer_rect; + DrawRect(split->resizer_rect, ColorResizerBackground); + if (split->kind == WindowSplitKind_Vertical) { + Rect2I s = CutRight(&rect, 1); + DrawRect(s, ColorResizerOutline); + } else if (split->kind == WindowSplitKind_Horizontal) { + Rect2I s = CutBottom(&rect, 1); + DrawRect(s, ColorResizerOutline); + } + + DrawSplits(split->left); + DrawSplits(split->right); +}