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 |