implement splitview window for gtk3

Sat, 06 Dec 2025 18:04:06 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 06 Dec 2025 18:04:06 +0100
changeset 951
13cf4c932f21
parent 950
39641cf150eb
child 952
f55630d3006f

implement splitview window for gtk3

ui/gtk/window.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/window.c	Sat Dec 06 15:24:13 2025 +0100
+++ b/ui/gtk/window.c	Sat Dec 06 18:04:06 2025 +0100
@@ -337,14 +337,31 @@
     
     GtkWidget *content_box = ui_gtk_vbox_new(0);
     WINDOW_SET_CONTENT(obj->widget, vbox);
-    if(sidebar) {
+    if(sidebar || splitview) {
         GtkWidget *paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
-        GtkWidget *sidebar_vbox = ui_gtk_vbox_new(0);
-        gtk_paned_add1(GTK_PANED(paned), sidebar_vbox);
-        gtk_paned_add2(GTK_PANED(paned), content_box);
+        if(sidebar) {
+            GtkWidget *sidebar_vbox = ui_gtk_vbox_new(0);
+            gtk_paned_add1(GTK_PANED(paned), sidebar_vbox);
+            g_object_set_data(G_OBJECT(obj->widget), "ui_sidebar", sidebar_vbox);
+            gtk_paned_set_position(GTK_PANED(paned), 200);
+        }
+        
+        if(splitview) {
+            GtkWidget *content_paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+            gtk_paned_add2(GTK_PANED(paned), content_paned);
+            
+            GtkWidget *right_content_box = ui_gtk_vbox_new(0);
+            gtk_paned_add1(GTK_PANED(content_paned), content_box);
+            gtk_paned_add1(GTK_PANED(content_paned), right_content_box);
+            
+            g_object_set_data(G_OBJECT(obj->widget), "ui_window_splitview", content_paned);
+            g_object_set_data(G_OBJECT(obj->widget), "ui_left_panel", content_box);
+            g_object_set_data(G_OBJECT(obj->widget), "ui_right_panel", right_content_box);
+        } else {
+            gtk_paned_add2(GTK_PANED(paned), content_box);
+        }
+        
         BOX_ADD_EXPAND(GTK_BOX(vbox), paned);
-        g_object_set_data(G_OBJECT(obj->widget), "ui_sidebar", sidebar_vbox);
-        gtk_paned_set_position (GTK_PANED(paned), 200);
     } else {
         BOX_ADD_EXPAND(GTK_BOX(vbox), content_box);
     }

mercurial