]> uap-core.de Git - uwplayer.git/commitdiff
implement alternative window layout without splitpane
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 31 Oct 2025 11:00:42 +0000 (12:00 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 31 Oct 2025 11:00:42 +0000 (12:00 +0100)
application/application.h
application/window.c

index fb2dd5e34b7fdf3f4de7f8c6c760df38e0ba2179..41591c7a09e3c422dea0edbcd9bfe70dbd786c97 100644 (file)
@@ -80,6 +80,10 @@ typedef struct MainWindow {
     Widget player_widget;
     Widget sidebar_scrolledwindow;
     Widget sidebar;
+    
+    UIWIDGET listview; // TODO: maybe this can be removed
+    UIWIDGET listview_scrolledwindow;
+    
     char *file;
     Player *player;
     bool fullscreen;
index 6acafeb4a1a68df725f94b88e7788b4228208c68..4fb66ef69018c351f059abfecb46edb73cd92b45 100644 (file)
@@ -257,7 +257,16 @@ void WindowHandlePlayerEvent(MainWindow *win, XEvent *event) {
     }
 }
 
-
+#ifdef UI_MOTIF
+static UIWIDGET create_motif_listview(UiObject *obj, UiWidgetArgs *args, void *userdata, Widget parent, Arg *a, int n) {
+    MainWindow *window = userdata;
+    
+    Widget w = CreateSidebar(parent, "sidebar", a, n);
+    SidebarSetWindow(w, window);
+    
+    return w;
+}
+#endif
 
 MainWindow* WindowCreate(Display *display) {
     Arg args[32];
@@ -283,13 +292,24 @@ MainWindow* WindowCreate(Display *display) {
     
     // TODO: enable when the motif splitpane is implemented in the toolkit
     /*
-    ui_vsplitpane(obj, .value = window->splitview) {
+    ui_vsplitpane(obj, .value = window->splitview, .fill = TRUE) {
         window->player_widget = ui_drawingarea(obj, .width = 400, .height = 200);
         
         UIWIDGET listview = ui_listview(obj, .varname = "playlist");
         ui_widget_set_visibility_states(obj->ctx, listview, UI_GROUPS(APP_STATES_SHOW_SIDEBAR), 1);
     }
     */
+    ui_hbox(obj, .fill = TRUE) {
+        window->player_widget = ui_drawingarea(obj, .width = 400, .height = 200);
+        
+#ifndef UI_MOTIF
+        window->listview = ui_listview(obj, .varname = "playlist", .width = 300);
+#else
+        ui_scrolledwindow_w(obj, window->listview_scrolledwindow, 0) {
+            window->listview = ui_customwidget(obj, create_motif_listview, window);
+        }
+#endif
+    }
       
     // toplevel window
     n = 0;