|
@@ -118,7 +118,10 @@
|
|
|
|
|
|
TODO
|
|
|
====
|
|
|
- - Linux clipboard support
|
|
|
+ - Linux:
|
|
|
+ - clipboard support
|
|
|
+ - fullscreen support
|
|
|
+ - show/hide mouse cursor
|
|
|
- sapp_consume_event() on non-web platforms?
|
|
|
|
|
|
STEP BY STEP
|
|
@@ -1092,8 +1095,8 @@ typedef struct {
|
|
|
bool quit_requested;
|
|
|
bool quit_ordered;
|
|
|
bool event_consumed;
|
|
|
- const char* html5_canvas_name;
|
|
|
bool html5_ask_leave_site;
|
|
|
+ char html5_canvas_name[_SAPP_MAX_TITLE_LENGTH];
|
|
|
char window_title[_SAPP_MAX_TITLE_LENGTH]; /* UTF-8 */
|
|
|
wchar_t window_title_wide[_SAPP_MAX_TITLE_LENGTH]; /* UTF-32 or UCS-2 */
|
|
|
uint64_t frame_count;
|
|
@@ -1191,29 +1194,38 @@ _SOKOL_PRIVATE void _sapp_strcpy(const char* src, char* dst, int max_len) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+_SOKOL_PRIVATE sapp_desc _sapp_desc_defaults(const sapp_desc* in_desc) {
|
|
|
+ sapp_desc desc = *in_desc;
|
|
|
+ desc.width = _sapp_def(desc.width, 640);
|
|
|
+ desc.height = _sapp_def(desc.height, 480);
|
|
|
+ desc.sample_count = _sapp_def(desc.sample_count, 1);
|
|
|
+ desc.swap_interval = _sapp_def(desc.swap_interval, 1);
|
|
|
+ desc.html5_canvas_name = _sapp_def(desc.html5_canvas_name, "canvas");
|
|
|
+ desc.clipboard_size = _sapp_def(desc.clipboard_size, 8192);
|
|
|
+ desc.window_title = _sapp_def(desc.window_title, "sokol_app");
|
|
|
+ return desc;
|
|
|
+}
|
|
|
+
|
|
|
_SOKOL_PRIVATE void _sapp_init_state(const sapp_desc* desc) {
|
|
|
memset(&_sapp, 0, sizeof(_sapp));
|
|
|
- _sapp.desc = *desc;
|
|
|
+ _sapp.desc = _sapp_desc_defaults(desc);
|
|
|
_sapp.first_frame = true;
|
|
|
- _sapp.window_width = _sapp_def(_sapp.desc.width, 640);
|
|
|
- _sapp.window_height = _sapp_def(_sapp.desc.height, 480);
|
|
|
+ _sapp.window_width = _sapp.desc.width;
|
|
|
+ _sapp.window_height = _sapp.desc.height;
|
|
|
_sapp.framebuffer_width = _sapp.window_width;
|
|
|
_sapp.framebuffer_height = _sapp.window_height;
|
|
|
- _sapp.sample_count = _sapp_def(_sapp.desc.sample_count, 1);
|
|
|
- _sapp.swap_interval = _sapp_def(_sapp.desc.swap_interval, 1);
|
|
|
- _sapp.html5_canvas_name = _sapp_def(_sapp.desc.html5_canvas_name, "canvas");
|
|
|
+ _sapp.sample_count = _sapp.desc.sample_count;
|
|
|
+ _sapp.swap_interval = _sapp.desc.swap_interval;
|
|
|
+ _sapp_strcpy(_sapp.desc.html5_canvas_name, _sapp.html5_canvas_name, sizeof(_sapp.html5_canvas_name));
|
|
|
+ _sapp.desc.html5_canvas_name = _sapp.html5_canvas_name;
|
|
|
_sapp.html5_ask_leave_site = _sapp.desc.html5_ask_leave_site;
|
|
|
_sapp.clipboard_enabled = _sapp.desc.enable_clipboard;
|
|
|
if (_sapp.clipboard_enabled) {
|
|
|
- _sapp.clipboard_size = _sapp_def(_sapp.desc.clipboard_size, 8192);
|
|
|
+ _sapp.clipboard_size = _sapp.desc.clipboard_size;
|
|
|
_sapp.clipboard = (char*) SOKOL_CALLOC(1, _sapp.clipboard_size);
|
|
|
}
|
|
|
- if (_sapp.desc.window_title) {
|
|
|
- _sapp_strcpy(_sapp.desc.window_title, _sapp.window_title, sizeof(_sapp.window_title));
|
|
|
- }
|
|
|
- else {
|
|
|
- _sapp_strcpy("sokol_app", _sapp.window_title, sizeof(_sapp.window_title));
|
|
|
- }
|
|
|
+ _sapp_strcpy(_sapp.desc.window_title, _sapp.window_title, sizeof(_sapp.window_title));
|
|
|
+ _sapp.desc.window_title = _sapp.window_title;
|
|
|
_sapp.dpi_scale = 1.0f;
|
|
|
_sapp.fullscreen = _sapp.desc.fullscreen;
|
|
|
}
|
|
@@ -4456,8 +4468,8 @@ _SOKOL_PRIVATE void _sapp_win32_toggle_fullscreen(void) {
|
|
|
_sapp.fullscreen = !_sapp.fullscreen;
|
|
|
if (!_sapp.fullscreen) {
|
|
|
win_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX;
|
|
|
- rect.right = (int) ((float)_sapp_def(_sapp.desc.width, 640) * _sapp_win32_window_scale);
|
|
|
- rect.bottom = (int) ((float)_sapp_def(_sapp.desc.height, 480) * _sapp_win32_window_scale);
|
|
|
+ rect.right = (int) ((float)_sapp.desc.width * _sapp_win32_window_scale);
|
|
|
+ rect.bottom = (int) ((float)_sapp.desc.height * _sapp_win32_window_scale);
|
|
|
}
|
|
|
else {
|
|
|
win_style = WS_POPUP | WS_SYSMENU | WS_VISIBLE;
|