aboutsummaryrefslogtreecommitdiff
path: root/src/ui/workspace.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/workspace.h')
-rw-r--r--src/ui/workspace.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/ui/workspace.h b/src/ui/workspace.h
index 134d517..804d5a8 100644
--- a/src/ui/workspace.h
+++ b/src/ui/workspace.h
@@ -7,12 +7,26 @@ namespace Donut
{
class Scene;
+ // App-level actions a workspace can request (window/device changes it can't do
+ // itself). The Application implements this — it owns the window and device.
+ struct AppActions
+ {
+ virtual ~AppActions() = default;
+ virtual auto set_resolution(int w, int h) -> void = 0;
+ virtual auto set_fullscreen(bool on) -> void = 0;
+ virtual auto set_vsync(bool on) -> void = 0;
+ virtual auto set_ui_scale(float scale) -> void = 0;
+ virtual auto get_window_size(int& w, int& h) const -> void = 0;
+ virtual auto is_fullscreen() const -> bool = 0;
+ };
+
// What a workspace gets each frame to build its panels. `scene` is mutable —
- // workspaces edit the document through it.
+ // workspaces edit the document through it; `actions` performs app-level changes.
struct UIContext
{
Scene& scene;
std::string device_name;
+ AppActions& actions;
};
// A Dorico-style workspace: one tab that owns its side panels and declares