| 61 using namespace winrt::Windows::Foundation; |
61 using namespace winrt::Windows::Foundation; |
| 62 using namespace winrt::Windows::Storage::Pickers; |
62 using namespace winrt::Windows::Storage::Pickers; |
| 63 |
63 |
| 64 UiWindow::UiWindow(winrt::Microsoft::UI::Xaml::Window& win) : window(win) {} |
64 UiWindow::UiWindow(winrt::Microsoft::UI::Xaml::Window& win) : window(win) {} |
| 65 |
65 |
| |
66 extern "C" static void ui_window_widget_destroy(UiObject *obj) { |
| |
67 obj->ref = 1; |
| |
68 obj->wobj->window.Close(); |
| |
69 } |
| |
70 |
| 66 UiObject* ui_window(const char* title, void* window_data) { |
71 UiObject* ui_window(const char* title, void* window_data) { |
| 67 UiObject* obj = ui_simple_window(title, window_data); |
72 UiObject* obj = ui_simple_window(title, window_data); |
| 68 |
73 |
| 69 /* |
74 /* |
| 70 if (uic_get_menu_list()) { |
75 if (uic_get_menu_list()) { |
| 176 window.SetTitleBar(titleBar); |
181 window.SetTitleBar(titleBar); |
| 177 |
182 |
| 178 obj->wobj = new UiWindow(window); |
183 obj->wobj = new UiWindow(window); |
| 179 ui_context_add_window_destructor(obj->ctx, obj->wobj); |
184 ui_context_add_window_destructor(obj->ctx, obj->wobj); |
| 180 |
185 |
| 181 window.Closed([obj](IInspectable const& sender, WindowEventArgs) { |
186 window.Closed([obj](IInspectable const& sender, WindowEventArgs e) { |
| 182 if (obj->ctx->close_callback) { |
187 uic_context_prepare_close(obj->ctx); |
| 183 UiEvent evt; |
188 obj->ref--; |
| 184 evt.obj = obj; |
189 if (obj->ref > 0) { |
| 185 evt.document = obj->ctx->document; |
190 obj->wobj->window.AppWindow().Hide(); |
| 186 evt.window = obj->window; |
191 e.Handled(true); |
| 187 evt.eventdata = NULL; |
|
| 188 evt.intval = 0; |
|
| 189 obj->ctx->close_callback(&evt, obj->ctx->close_data); |
|
| 190 } else { |
192 } else { |
| 191 ui_context_destroy(obj->ctx); |
193 uic_object_destroy(obj); |
| 192 } |
194 } |
| 193 }); |
195 }); |
| 194 |
196 |
| 195 obj->container = new UiBoxContainer(grid, UI_BOX_CONTAINER_VBOX, 0, 0); |
197 obj->container = new UiBoxContainer(grid, UI_BOX_CONTAINER_VBOX, 0, 0); |
| 196 |
198 |