unminimize on exception hit

This commit is contained in:
Ryan Fleury
2024-10-07 17:33:10 -07:00
parent 32ce2e110b
commit 534a727b7c
6 changed files with 70 additions and 83 deletions
+7 -1
View File
@@ -181,8 +181,14 @@ os_window_set_maximized(OS_Handle handle, B32 maximized)
if(os_handle_match(handle, os_handle_zero())) {return;} if(os_handle_match(handle, os_handle_zero())) {return;}
} }
internal B32
os_window_is_minimized(OS_Handle window)
{
if(os_handle_match(handle, os_handle_zero())) {return 0;}
}
internal void internal void
os_window_minimize(OS_Handle handle) os_window_set_minimized(OS_Handle window, B32 minimized)
{ {
if(os_handle_match(handle, os_handle_zero())) {return;} if(os_handle_match(handle, os_handle_zero())) {return;}
} }
+2 -1
View File
@@ -148,7 +148,8 @@ internal B32 os_window_is_fullscreen(OS_Handle window);
internal void os_window_set_fullscreen(OS_Handle window, B32 fullscreen); internal void os_window_set_fullscreen(OS_Handle window, B32 fullscreen);
internal B32 os_window_is_maximized(OS_Handle window); internal B32 os_window_is_maximized(OS_Handle window);
internal void os_window_set_maximized(OS_Handle window, B32 maximized); internal void os_window_set_maximized(OS_Handle window, B32 maximized);
internal void os_window_minimize(OS_Handle window); internal B32 os_window_is_minimized(OS_Handle window);
internal void os_window_set_minimized(OS_Handle window, B32 minimized);
internal void os_window_bring_to_front(OS_Handle window); internal void os_window_bring_to_front(OS_Handle window);
internal void os_window_set_monitor(OS_Handle window, OS_Handle monitor); internal void os_window_set_monitor(OS_Handle window, OS_Handle monitor);
internal void os_window_clear_custom_border_data(OS_Handle handle); internal void os_window_clear_custom_border_data(OS_Handle handle);
+7 -1
View File
@@ -83,8 +83,14 @@ os_window_set_maximized(OS_Handle window, B32 maximized)
{ {
} }
internal B32
os_window_is_minimized(OS_Handle window)
{
return 0;
}
internal void internal void
os_window_minimize(OS_Handle window) os_window_set_minimized(OS_Handle window, B32 minimized)
{ {
} }
+19 -2
View File
@@ -1177,13 +1177,30 @@ os_window_set_maximized(OS_Handle handle, B32 maximized)
} }
} }
internal B32
os_window_is_minimized(OS_Handle handle)
{
B32 result = 0;
OS_W32_Window *window = os_w32_window_from_handle(handle);
if(window)
{
result = !!(IsIconic(window->hwnd));
}
return result;
}
internal void internal void
os_window_minimize(OS_Handle handle) os_window_set_minimized(OS_Handle handle, B32 minimized)
{ {
OS_W32_Window *window = os_w32_window_from_handle(handle); OS_W32_Window *window = os_w32_window_from_handle(handle);
if(window != 0) if(window != 0)
{ {
ShowWindow(window->hwnd, SW_MINIMIZE); switch(minimized)
{
default:
case 0:{ShowWindow(window->hwnd, SW_RESTORE);}break;
case 1:{ShowWindow(window->hwnd, SW_MINIMIZE);}break;
}
} }
} }
+2 -1
View File
@@ -5549,7 +5549,7 @@ rd_window_frame(RD_Window *ws)
} }
if(ui_clicked(min_sig)) if(ui_clicked(min_sig))
{ {
os_window_minimize(ws->os); os_window_set_minimized(ws->os, 1);
} }
if(ui_clicked(max_sig)) if(ui_clicked(max_sig))
{ {
@@ -15311,6 +15311,7 @@ rd_frame(void)
} }
if(window != 0) if(window != 0)
{ {
os_window_set_minimized(window->os, 0);
os_window_bring_to_front(window->os); os_window_bring_to_front(window->os);
os_window_focus(window->os); os_window_focus(window->os);
} }
+33 -77
View File
@@ -5,7 +5,7 @@
//~ rjf: Build Options //~ rjf: Build Options
#define BUILD_TITLE "ryan_scratch" #define BUILD_TITLE "ryan_scratch"
// #define OS_FEATURE_GRAPHICAL 1 #define OS_FEATURE_GRAPHICAL 1
//////////////////////////////// ////////////////////////////////
//~ rjf: Includes //~ rjf: Includes
@@ -41,88 +41,44 @@
#include "pdb/pdb_stringize.c" #include "pdb/pdb_stringize.c"
//////////////////////////////// ////////////////////////////////
//~ rjf: Entry Point //~ rjf: Entry Points
typedef struct FooBar FooBar; internal B32
struct FooBar frame(void)
{ {
U64 x; B32 quit = 0;
U64 y; Temp scratch = scratch_begin(0, 0);
U64 z; OS_EventList events = os_get_events(scratch.arena, 0);
String8 name; for(OS_Event *ev = events.first; ev != 0; ev = ev->next)
}; {
if(ev->kind != OS_EventKind_MouseMove)
Member FooBar__members[] = {
{ String8 string = push_str8f(scratch.arena, "%S (%S)\n", os_string_from_event_kind(ev->kind), os_g_key_display_string_table[ev->key]);
{str8_lit_comp("x"), type(U64), OffsetOf(FooBar, x)}, printf("%.*s", str8_varg(string));
{str8_lit_comp("y"), type(U64), OffsetOf(FooBar, y)}, OutputDebugStringA((char *)string.str);
{str8_lit_comp("z"), type(U64), OffsetOf(FooBar, z)}, fflush(stdout);
{str8_lit_comp("name"), type(String8), OffsetOf(FooBar, name)}, }
}; if(ev->kind == OS_EventKind_Press && ev->key == OS_Key_X)
{
Type FooBar__type = *(int *)0 = 0;
{ }
TypeKind_Struct, }
sizeof(FooBar), for(OS_Event *ev = events.first; ev != 0; ev = ev->next)
&type_nil, {
str8_lit_comp("FooBar"), if(ev->kind == OS_EventKind_WindowClose)
{0}, {
ArrayCount(FooBar__members), quit = 1;
FooBar__members, break;
}; }
}
scratch_end(scratch);
return quit;
}
internal void internal void
entry_point(CmdLine *cmdline) entry_point(CmdLine *cmdline)
{ {
Arena *arena = arena_alloc();
FooBar foobar_in = {1, 2, 3, str8_lit("foobar 123 hello world")};
String8 foobar_srlz = serialized_from_struct(arena, FooBar, &foobar_in);
FooBar foobar_out = *struct_from_serialized(arena, FooBar, foobar_srlz);
String8List strs_in = {0};
str8_list_pushf(arena, &strs_in, "foobar: %i", 123);
str8_list_pushf(arena, &strs_in, "xyzxyzxyz");
str8_list_pushf(arena, &strs_in, "abc abc abc");
str8_list_pushf(arena, &strs_in, "123");
str8_list_pushf(arena, &strs_in, "456");
str8_list_pushf(arena, &strs_in, "789");
str8_list_pushf(arena, &strs_in, "111");
str8_list_pushf(arena, &strs_in, "222");
str8_list_pushf(arena, &strs_in, "333");
String8 strs_serialized = serialized_from_struct(arena, String8List, &strs_in);
String8List strs_out = *struct_from_serialized(arena, String8List, strs_serialized);
String8 test_name_in = str8_lit("foobar 123");
String8 test_name_srlz = serialized_from_struct(arena, String8, &test_name_in);
String8 test_name_out = *struct_from_serialized(arena, String8, test_name_srlz);
int x = 0;
#if 0
OS_Handle window = os_window_open(v2f32(1280, 720), 0, str8_lit("Window")); OS_Handle window = os_window_open(v2f32(1280, 720), 0, str8_lit("Window"));
os_window_first_paint(window); os_window_first_paint(window);
for(B32 quit = 0; !quit;) for(;!update(););
{
Temp scratch = scratch_begin(0, 0);
OS_EventList events = os_get_events(scratch.arena, 0);
for(OS_Event *ev = events.first; ev != 0; ev = ev->next)
{
if(ev->kind != OS_EventKind_MouseMove)
{
printf("%.*s (%.*s)\n", str8_varg(os_string_from_event_kind(ev->kind)), str8_varg(os_g_key_display_string_table[ev->key]));
fflush(stdout);
}
}
for(OS_Event *ev = events.first; ev != 0; ev = ev->next)
{
if(ev->kind == OS_EventKind_WindowClose)
{
quit = 1;
break;
}
}
scratch_end(scratch);
}
#endif
} }