| 198 GtkWidget *vbox = ui_gtk_vbox_new(0); |
198 GtkWidget *vbox = ui_gtk_vbox_new(0); |
| 199 #ifdef UI_LIBADWAITA |
199 #ifdef UI_LIBADWAITA |
| 200 GtkWidget *toolbar_view = adw_toolbar_view_new(); |
200 GtkWidget *toolbar_view = adw_toolbar_view_new(); |
| 201 adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(toolbar_view), vbox); |
201 adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(toolbar_view), vbox); |
| 202 |
202 |
| |
203 GtkWidget *headerbar_sidebar = NULL; |
| |
204 GtkWidget *headerbar_main = adw_header_bar_new(); |
| |
205 GtkWidget *headerbar_right = NULL; |
| |
206 |
| |
207 GtkWidget *content = toolbar_view; |
| |
208 if(splitview) { |
| |
209 content = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); |
| |
210 |
| |
211 GtkWidget *right_panel = adw_toolbar_view_new(); |
| |
212 GtkWidget *right_vbox = ui_gtk_vbox_new(0); |
| |
213 adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(right_panel), right_vbox); |
| |
214 |
| |
215 headerbar_right = adw_header_bar_new(); |
| |
216 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_right), FALSE); |
| |
217 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(right_panel), headerbar_right); |
| |
218 |
| |
219 adw_header_bar_set_show_end_title_buttons(ADW_HEADER_BAR(headerbar_main), FALSE); |
| |
220 |
| |
221 gtk_paned_set_start_child(GTK_PANED(content), toolbar_view); |
| |
222 gtk_paned_set_end_child(GTK_PANED(content), right_panel); |
| |
223 |
| |
224 g_object_set_data(G_OBJECT(obj->widget), "ui_window_splitview", content); |
| |
225 g_object_set_data(G_OBJECT(obj->widget), "ui_left_panel", vbox); |
| |
226 g_object_set_data(G_OBJECT(obj->widget), "ui_right_panel", right_vbox); |
| |
227 } |
| |
228 |
| 203 GtkWidget *content_box = ui_gtk_vbox_new(0); |
229 GtkWidget *content_box = ui_gtk_vbox_new(0); |
| 204 BOX_ADD_EXPAND(GTK_BOX(vbox), content_box); |
230 BOX_ADD_EXPAND(GTK_BOX(vbox), content_box); |
| 205 |
231 |
| 206 GtkWidget *sidebar_headerbar = NULL; |
|
| 207 if(sidebar) { |
232 if(sidebar) { |
| 208 GtkWidget *splitview = adw_overlay_split_view_new(); |
233 GtkWidget *splitview = adw_overlay_split_view_new(); |
| 209 adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), splitview); |
234 adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), splitview); |
| 210 |
235 |
| 211 GtkWidget *sidebar_toolbar_view = adw_toolbar_view_new(); |
236 GtkWidget *sidebar_toolbar_view = adw_toolbar_view_new(); |
| 212 adw_overlay_split_view_set_sidebar(ADW_OVERLAY_SPLIT_VIEW(splitview), sidebar_toolbar_view); |
237 adw_overlay_split_view_set_sidebar(ADW_OVERLAY_SPLIT_VIEW(splitview), sidebar_toolbar_view); |
| 213 sidebar_headerbar = adw_header_bar_new(); |
238 headerbar_sidebar = adw_header_bar_new(); |
| 214 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), sidebar_headerbar); |
239 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), headerbar_sidebar); |
| 215 |
240 |
| 216 adw_overlay_split_view_set_content(ADW_OVERLAY_SPLIT_VIEW(splitview), toolbar_view); |
241 adw_overlay_split_view_set_content(ADW_OVERLAY_SPLIT_VIEW(splitview), content); |
| 217 |
242 |
| 218 g_object_set_data(G_OBJECT(obj->widget), "ui_sidebar", sidebar_toolbar_view); |
243 g_object_set_data(G_OBJECT(obj->widget), "ui_sidebar", sidebar_toolbar_view); |
| 219 } else { |
244 } else { |
| 220 adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), toolbar_view); |
245 adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), content); |
| 221 } |
246 } |
| 222 |
|
| 223 GtkWidget *headerbar = adw_header_bar_new(); |
|
| 224 |
247 |
| 225 const char *show_title = ui_get_property("ui.gtk.window.showtitle"); |
248 const char *show_title = ui_get_property("ui.gtk.window.showtitle"); |
| 226 if(show_title) { |
249 if(show_title) { |
| 227 if(!strcmp(show_title, "main") && sidebar) { |
250 if(!strcmp(show_title, "main") && sidebar) { |
| 228 adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); |
251 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); |
| 229 } else if(!strcmp(show_title, "sidebar")) { |
252 } else if(!strcmp(show_title, "sidebar")) { |
| 230 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); |
253 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); |
| 231 } else if(!strcmp(show_title, "false")) { |
254 } else if(!strcmp(show_title, "false")) { |
| 232 adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); |
255 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); |
| 233 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); |
256 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); |
| 234 } else { |
257 } else { |
| 235 fprintf(stderr, "Unknown value '%s' for property ui.gtk.window.showtitle\n", show_title); |
258 fprintf(stderr, "Unknown value '%s' for property ui.gtk.window.showtitle\n", show_title); |
| 236 adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); |
259 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_sidebar), FALSE); |
| 237 } |
260 } |
| 238 } else { |
261 } else { |
| 239 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); |
262 adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar_main), FALSE); |
| 240 } |
263 } |
| 241 |
264 |
| 242 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), headerbar); |
265 adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), headerbar_main); |
| 243 g_object_set_data(G_OBJECT(obj->widget), "ui_headerbar", headerbar); |
266 g_object_set_data(G_OBJECT(obj->widget), "ui_headerbar", headerbar_main); |
| 244 |
267 |
| 245 if(!simple) { |
268 if(!simple) { |
| 246 ui_fill_headerbar(obj, headerbar); |
269 ui_fill_headerbar(obj, headerbar_main); |
| 247 } |
270 } |
| 248 #elif GTK_MAJOR_VERSION >= 4 |
271 #elif GTK_MAJOR_VERSION >= 4 |
| 249 GtkWidget *content_box = ui_gtk_vbox_new(0); |
272 GtkWidget *content_box = ui_gtk_vbox_new(0); |
| 250 WINDOW_SET_CONTENT(obj->widget, vbox); |
273 WINDOW_SET_CONTENT(obj->widget, vbox); |
| 251 if(!simple) { |
274 if(!simple) { |
| 323 return obj; |
346 return obj; |
| 324 } |
347 } |
| 325 |
348 |
| 326 |
349 |
| 327 UiObject* ui_window(const char *title, void *window_data) { |
350 UiObject* ui_window(const char *title, void *window_data) { |
| 328 return create_window(title, window_data, FALSE, FALSE); |
351 return create_window(title, window_data, FALSE, FALSE, FALSE); |
| 329 } |
352 } |
| 330 |
353 |
| 331 UiObject *ui_sidebar_window(const char *title, void *window_data) { |
354 UiObject *ui_sidebar_window(const char *title, void *window_data) { |
| 332 return create_window(title, window_data, TRUE, FALSE); |
355 return create_window(title, window_data, TRUE, FALSE, FALSE); |
| |
356 } |
| |
357 |
| |
358 UIEXPORT UiObject *ui_splitview_window(const char *title, UiBool sidebar) { |
| |
359 return create_window(title, NULL, sidebar, TRUE, FALSE); |
| 333 } |
360 } |
| 334 |
361 |
| 335 UiObject* ui_simple_window(const char *title, void *window_data) { |
362 UiObject* ui_simple_window(const char *title, void *window_data) { |
| 336 return create_window(title, window_data, FALSE, TRUE); |
363 return create_window(title, window_data, FALSE, FALSE, TRUE); |
| 337 } |
364 } |
| 338 |
365 |
| 339 void ui_window_size(UiObject *obj, int width, int height) { |
366 void ui_window_size(UiObject *obj, int width, int height) { |
| 340 gtk_window_set_default_size( |
367 gtk_window_set_default_size( |
| 341 GTK_WINDOW(obj->widget), |
368 GTK_WINDOW(obj->widget), |