7#include "gui_window_size.hpp"
8#include "mouse_cursor.hpp"
11#include "keyboard_focus_direction.hpp"
12#include "keyboard_focus_group.hpp"
14#include "../GFX/module.hpp"
15#include "../geometry/module.hpp"
16#include "../chrono.hpp"
18#include "../animator.hpp"
19#include <unordered_set>
23namespace hi::inline
v1 {
28class keyboard_bindings;
95 virtual ~gui_window();
97 gui_window(gui_window
const&) =
delete;
98 gui_window& operator=(gui_window
const&) =
delete;
99 gui_window(gui_window&&) =
delete;
100 gui_window& operator=(gui_window&&) =
delete;
111 virtual
void render(utc_nanoseconds displayTimePoint);
136 virtual
hi::subpixel_orientation subpixel_orientation() const noexcept = 0;
155 void update_mouse_target(widget_id new_target_widget, point2 position = {})
noexcept;
200 [[nodiscard]] translate2 window_to_screen() const noexcept
205 [[nodiscard]] translate2 screen_to_window() const noexcept
207 return ~window_to_screen();
223 box_constraints _widget_constraints = {};
232 gui_window_size _size_state = gui_window_size::normal;
236 aarectangle _restore_rectangle;
245 utc_nanoseconds last_forced_redraw = {};
249 animator<float> _animated_active = _animation_duration;
252 notifier<>::callback_token _setting_change_token;
253 observer<std::string>::callback_token _selected_theme_token;
259 widget_id _mouse_target_id;
264 widget_id _keyboard_target_id;
274 bool send_events_to_widget(widget_id target_widget, std::vector<gui_event>
const& events)
noexcept;
Functionality for labels, text and icons.
Definition of GUI event types.
DOXYGEN BUG.
Definition algorithm.hpp:13
keyboard_focus_direction
The keyboard focus group used for finding a widget that will accept a particular focus.
Definition keyboard_focus_direction.hpp:11
keyboard_focus_group
The keyboard focus group used for finding a widget that will accept a particular focus.
Definition keyboard_focus_group.hpp:11
@ normal
A normal widget.
Definition keyboard_focus_group.hpp:15
geometry/margins.hpp
Definition cache.hpp:11
Definition gfx_device.hpp:20
Graphics system.
Definition gui_system.hpp:27
hi::keyboard_bindings const & keyboard_bindings() const noexcept
Get the keyboard binding.
bool resizing
Definition gui_window.hpp:71
std::unique_ptr< widget > widget
The widget covering the complete window.
Definition gui_window.hpp:41
float dpi
Definition gui_window.hpp:82
virtual void set_cursor(mouse_cursor cursor)=0
Set the mouse cursor icon.
virtual void open_system_menu()=0
Open the system menu of the window.
void update_keyboard_target(keyboard_focus_group group, keyboard_focus_direction direction) noexcept
Change the keyboard focus to the given, previous or next widget.
void update_keyboard_target(widget_id widget, keyboard_focus_group group=keyboard_focus_group::normal) noexcept
Change the keyboard focus to the given widget.
mouse_cursor current_mouse_cursor
The current cursor.
Definition gui_window.hpp:65
void update_keyboard_target(widget_id widget, keyboard_focus_group group, keyboard_focus_direction direction) noexcept
Change the keyboard focus to the previous or next widget from the given widget.
virtual void set_size_state(gui_window_size state) noexcept=0
Set the size-state of the window.
virtual aarectangle fullscreen_rectangle() const noexcept=0
The rectangle of the screen where the window is currently located.
aarectangle rectangle
The current rectangle of the window relative to the screen.
Definition gui_window.hpp:56
extent2 widget_size
The size of the widget.
Definition gui_window.hpp:86
virtual void render(utc_nanoseconds displayTimePoint)
Update window.
notifier< void()> closing
Notifier used when the window is closing.
Definition gui_window.hpp:91
virtual void close_window()=0
Ask the operating system to close this window.
virtual void put_text_on_clipboard(hi::text text) const noexcept=0
Put text on the clipboard.
virtual void set_window_size(extent2 extent)=0
Ask the operating system to set the size of this window.
gui_window_size size_state() const noexcept
Get the size-state of the window.
Definition gui_window.hpp:140
virtual aarectangle workspace_rectangle() const noexcept=0
The rectangle of the workspace of the screen where the window is currently located.
bool active
Definition gui_window.hpp:76
bool process_event(gui_event const &event) noexcept
Process the event.
virtual std::optional< hi::text > get_text_from_clipboard() const noexcept=0
Get text from the clipboard.
A label consisting of localizable text and an icon.
Definition label.hpp:114
A notifier which can be used to call a set of registered callbacks.
Definition notifier.hpp:25