diff options
| author | nathan <nathansmith@disroot.org> | 2025-11-17 06:33:27 +0000 |
|---|---|---|
| committer | nathan <nathansmith@disroot.org> | 2025-11-17 06:33:27 +0000 |
| commit | bbfc3fffc0e5f28681ebfb9fc0fd47777fded191 (patch) | |
| tree | 0dfb57799c2cf5a1ecfcc857e884b44a383c5299 /src | |
| parent | f6922dc12deb981cf95498afeb939f24171a5fc4 (diff) | |
| download | FindThings-bbfc3fffc0e5f28681ebfb9fc0fd47777fded191.tar.gz FindThings-bbfc3fffc0e5f28681ebfb9fc0fd47777fded191.tar.bz2 FindThings-bbfc3fffc0e5f28681ebfb9fc0fd47777fded191.zip | |
Scrolling focus thingy
Diffstat (limited to 'src')
| -rw-r--r-- | src/game.c | 23 | ||||
| -rw-r--r-- | src/ui.c | 35 |
2 files changed, 42 insertions, 16 deletions
@@ -47,14 +47,23 @@ void resetScreenScale(Game* game) FocusCommand testFloatingWindowCallback(FloatingWindow* window, Game* game) { - DrawText("test", window->rect.x + 10, - window->rect.y + 10 + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, 15, BLUE); + float x = window->rect.x + window->scroll.x; + float y = window->rect.y + window->scroll.y; + + DrawText("test", x + 10, y + 10 + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, 15, + BLUE); + + // Content size test. + if (window->contentSize.x != 0.0) + { + DrawText("content size test", x + 150.0, y + 150.0, 20, RED); + } - if (GuiButton((Rectangle){window->rect.x + 10.0, window->rect.y + 50.0, - 40.0, 20.0}, "A")) + // Button test. + if (GuiButton((Rectangle){x + 10.0, y + 50.0, 40.0, 20.0}, "A") + && window->hasFocus) { puts("hi"); - return DEMAND_FOCUS; } return NO_FOCUS_ACTION; @@ -111,10 +120,14 @@ void initGame(Game* game) window = createFloatingWindow("test3", (Rectangle){300.0, 300.0, 100.0, 100.0}); + window.callback = testFloatingWindowCallback; + window.contentSize = (Vector2){500.0, 500.0}; addWindowToWindowManager(&game->wm, window); window = createFloatingWindow("test4", (Rectangle){400.0, 400.0, 100.0, 100.0}); + window.callback = testFloatingWindowCallback; + window.contentSize = (Vector2){500.0, 500.0}; addWindowToWindowManager(&game->wm, window); disableGameCursor(game); @@ -158,18 +158,31 @@ FocusCommand updateFloatingWindowNotMinimized(FloatingWindow* window, if (window->callback != NULL) { Rectangle scissor; - - GuiScrollPanel( - (Rectangle){ - window->rect.x, window->rect.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, + + // Handle scrolling. + if (window->hasFocus) + { + GuiScrollPanel( + (Rectangle){ + window->rect.x, window->rect.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, + window->rect.width, + window->rect.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT}, + NULL, + (Rectangle){ + window->rect.x, window->rect.y, + window->contentSize.x, window->contentSize.y}, + &window->scroll, + &scissor); + } + else + { + scissor = (Rectangle){ + window->rect.x, + window->rect.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT, window->rect.width, - window->rect.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT}, - NULL, - (Rectangle){ - window->rect.x, window->rect.y, - window->contentSize.x, window->contentSize.y}, - &window->scroll, - &scissor); + window->rect.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + }; + } bool requireScissor = window->rect.width < window->contentSize.x || window->rect.height < window->contentSize.x; |
