From: Olaf Wintermann Date: Thu, 20 Nov 2025 19:16:09 +0000 (+0100) Subject: correctly hide the sidebar when disabled X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=32449c855425440fcf458d22c299b1c7f1cb02fb;p=uwplayer.git correctly hide the sidebar when disabled --- diff --git a/application/window.c b/application/window.c index 7a5a5e7..f36298d 100644 --- a/application/window.c +++ b/application/window.c @@ -264,6 +264,8 @@ static UIWIDGET create_motif_listview(UiObject *obj, UiWidgetArgs *args, void *u static UIWIDGET create_motif_player(UiObject *obj, UiWidgetArgs *args, void *userdata, Widget parent, Arg *a, int n) { MainWindow *window = userdata; XtSetArg(a[n], XmNbackground, BlackPixelOfScreen(XtScreen(parent))); n++; + XtSetArg(a[n], XmNwidth, 100); n++; + XtSetArg(a[n], XmNheight, 60); n++; Widget player_widget = XmCreateDrawingArea(parent, "player", a, n); XtAddCallback(player_widget, XmNinputCallback, playerWidgetInputCB, window); XmProcessTraversal(player_widget, XmTRAVERSE_CURRENT); diff --git a/ui/common/context.c b/ui/common/context.c index 0079ff0..40c1544 100644 --- a/ui/common/context.c +++ b/ui/common/context.c @@ -464,7 +464,7 @@ void uic_reg_var(UiContext *ctx, const char *name, UiVarType type, void *value) } else { // override var with new value if(var->type != type) { - fprintf(stderr, "Error: var %s type mismatch: %s - %s\n", name, uic_type2str(var->type), type); + fprintf(stderr, "Error: var %s type mismatch: %s - %s\n", name, uic_type2str(var->type), uic_type2str(type)); return; } if(var->bound) { diff --git a/ui/motif/Grid.c b/ui/motif/Grid.c index 0b14370..da74124 100644 --- a/ui/motif/Grid.c +++ b/ui/motif/Grid.c @@ -60,7 +60,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.columnspacing), + grid.columnspacing), XmRImmediate, (XtPointer) 0 }, @@ -70,7 +70,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.rowspacing), + grid.rowspacing), XmRImmediate, (XtPointer) 0 }, @@ -80,7 +80,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.padding_left), + grid.padding_left), XmRImmediate, (XtPointer) 0 }, @@ -90,7 +90,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.padding_right), + grid.padding_right), XmRImmediate, (XtPointer) 0 }, @@ -100,7 +100,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.padding_top), + grid.padding_top), XmRImmediate, (XtPointer) 0 }, @@ -110,7 +110,7 @@ static XtResource resources[] = XmRDimension, sizeof (Dimension), XtOffsetOf( GridRec, - mywidget.padding_bottom), + grid.padding_bottom), XmRImmediate, (XtPointer) 0 } @@ -335,8 +335,8 @@ void grid_class_initialize(void) { void grid_initialize(Widget request, Widget new, ArgList args, Cardinal num_args) { Grid mn = (Grid)new; - mn->mywidget.max_col = 0; - mn->mywidget.max_row = 0; + mn->grid.max_col = 0; + mn->grid.max_row = 0; } void grid_realize(Widget w,XtValueMask *valueMask,XSetWindowAttributes *attributes) { @@ -394,17 +394,17 @@ XtGeometryResult GridGeometryManager(Widget widget, XtWidgetGeometry *request, X } void GridChangeManaged(Widget widget) { - + grid_place_children((Grid)widget); } Boolean ConstraintSetValues(Widget old, Widget request, Widget neww, ArgList args, Cardinal *num_args) { GridConstraintRec *constraints = neww->core.constraints; Grid grid = (Grid)XtParent(neww); - if(constraints->grid.x > grid->mywidget.max_col) { - grid->mywidget.max_col = constraints->grid.x; + if(constraints->grid.x > grid->grid.max_col) { + grid->grid.max_col = constraints->grid.x; } - if(constraints->grid.y > grid->mywidget.max_row) { - grid->mywidget.max_row = constraints->grid.y; + if(constraints->grid.y > grid->grid.max_row) { + grid->grid.max_row = constraints->grid.y; } } @@ -419,25 +419,29 @@ void grid_constraint_init( GridConstraintRec *constraints = neww->core.constraints; Grid grid = (Grid)XtParent(neww); - if(constraints->grid.x > grid->mywidget.max_col) { - grid->mywidget.max_col = constraints->grid.x; + if(constraints->grid.x > grid->grid.max_col) { + grid->grid.max_col = constraints->grid.x; } - if(constraints->grid.y > grid->mywidget.max_row) { - grid->mywidget.max_row = constraints->grid.y; + if(constraints->grid.y > grid->grid.max_row) { + grid->grid.max_row = constraints->grid.y; } constraints->grid.pref_width = neww->core.width; constraints->grid.pref_height = neww->core.height; } void grid_place_children(Grid w) { - int ncols = w->mywidget.max_col+1; - int nrows = w->mywidget.max_row+1; + if(!XtIsRealized((Widget)w)) { + return; + } + + int ncols = w->grid.max_col+1; + int nrows = w->grid.max_row+1; GridDef *cols = calloc(ncols, sizeof(GridDef)); GridDef *rows = calloc(nrows, sizeof(GridDef)); int num_cols_expanding = 0; int num_rows_expanding = 0; - int req_width = w->mywidget.padding_left + w->mywidget.padding_right; - int req_height = w->mywidget.padding_top + w->mywidget.padding_bottom; + int req_width = w->grid.padding_left + w->grid.padding_right; + int req_height = w->grid.padding_top + w->grid.padding_bottom; int width = w->core.width; int height = w->core.height; @@ -462,6 +466,10 @@ void grid_place_children(Grid w) { } int elm_width = constraints->grid.pref_width + constraints->grid.margin_left + constraints->grid.margin_right; int elm_height = constraints->grid.pref_height + constraints->grid.margin_top + constraints->grid.margin_bottom; + if(!XtIsManaged(child)) { + elm_width = 0; + elm_height = 0; + } if(constraints->grid.colspan > span_max || constraints->grid.rowspan > span_max) { continue; @@ -564,10 +572,23 @@ void grid_place_children(Grid w) { req_height += rows[i].size; } + int total_colspacing = 0; + int total_rowspacing = 0; + for(int i=0;i+1 0) { + total_colspacing += w->grid.columnspacing; + } + } + for(int i=0;i+1 0) { + total_rowspacing += w->grid.rowspacing; + } + } + if(req_width > 0 && req_height > 0) { // add col/row spacing - req_width += (ncols-1)*w->mywidget.columnspacing; - req_height += (nrows-1)*w->mywidget.rowspacing; + req_width += total_colspacing; //(ncols-1)*w->grid.columnspacing; + req_height += total_rowspacing; //(nrows-1)*w->grid.rowspacing; Widget parent = w->core.parent; Dimension rwidth = req_width; @@ -579,9 +600,9 @@ void grid_place_children(Grid w) { //rheight = w->core.height; } - if(!w->mywidget.sizerequest) { + if(!w->grid.sizerequest) { Dimension actual_width, actual_height; - w->mywidget.sizerequest = TRUE; + w->grid.sizerequest = TRUE; //printf("sizerequest: %d x %d\n", (int)req_width, (int)req_height); @@ -592,7 +613,7 @@ void grid_place_children(Grid w) { //XtGeometryResult result = XtMakeGeometryRequest((Widget)w, &request, &reply); XtMakeResizeRequest((Widget)w, req_width, req_height, &actual_width, &actual_height); - w->mywidget.sizerequest = FALSE; + w->grid.sizerequest = FALSE; //printf("size request: %d %d\n", (int)actual_width, (int)actual_height); } @@ -608,13 +629,15 @@ void grid_place_children(Grid w) { hexpand = width_diff / num_cols_expanding; hexpand2 = width_diff-hexpand*num_cols_expanding; } - int x = w->mywidget.padding_left; + int x = w->grid.padding_left; for(int i=0;imywidget.columnspacing; + if(cols[i].size > 0) { + x += cols[i].size + w->grid.columnspacing; + } hexpand2 = 0; } @@ -626,13 +649,15 @@ void grid_place_children(Grid w) { vexpand = height_diff / num_rows_expanding; vexpand2 = height_diff-vexpand*num_rows_expanding; } - int y = w->mywidget.padding_bottom; + int y = w->grid.padding_bottom; for(int i=0;imywidget.rowspacing; + if(rows[i].size > 0) { + y += rows[i].size += w->grid.rowspacing; + } vexpand2 = 0; } @@ -651,12 +676,12 @@ void grid_place_children(Grid w) { Dimension cwidth = 0; for(int j=0;jgrid.colspan;j++) { if(constraints->grid.x+j < ncols) { - cwidth += cols[constraints->grid.x+j].size + (j > 0 ? w->mywidget.columnspacing : 0); + cwidth += cols[constraints->grid.x+j].size + (j > 0 ? w->grid.columnspacing : 0); } } width = cwidth; } else { - width = c.size - w->mywidget.columnspacing - constraints->grid.margin_left - constraints->grid.margin_right; + width = c.size - w->grid.columnspacing - constraints->grid.margin_left - constraints->grid.margin_right; } } if(constraints->grid.vfill) { @@ -664,12 +689,12 @@ void grid_place_children(Grid w) { Dimension cheight = 0; for(int j=0;jgrid.rowspan;j++) { if(constraints->grid.y+j < nrows) { - cheight += rows[constraints->grid.y+j].size + (j > 0 ? w->mywidget.rowspacing : 0); + cheight += rows[constraints->grid.y+j].size + (j > 0 ? w->grid.rowspacing : 0); } } height = cheight; } else { - height = r.size - w->mywidget.rowspacing - constraints->grid.margin_top - constraints->grid.margin_bottom; + height = r.size - w->grid.rowspacing - constraints->grid.margin_top - constraints->grid.margin_bottom; } } diff --git a/ui/motif/Grid.h b/ui/motif/Grid.h index b6f22de..af75b41 100644 --- a/ui/motif/Grid.h +++ b/ui/motif/Grid.h @@ -78,8 +78,8 @@ typedef struct GridClassRec { CoreClassPart core_class; CompositeClassPart composite_class; ConstraintClassPart constraint_class; - XmManagerClassPart manager_class; - GridClassPart mywidgetclass; + XmManagerClassPart manager_class; + GridClassPart gridwidgetclass; } GridClassRec; @@ -101,7 +101,7 @@ typedef struct GridRec { CompositePart composite; ConstraintPart constraint; XmManagerPart manager; - GridPart mywidget; + GridPart grid; } GridRec; typedef struct GridContraintPart { diff --git a/ui/motif/container.c b/ui/motif/container.c index 7213ed3..a1ac8f1 100644 --- a/ui/motif/container.c +++ b/ui/motif/container.c @@ -78,9 +78,9 @@ static UIWIDGET box_create(UiObject *obj, UiContainerArgs *args, UiBoxOrientatio int n = 0; if(orientation == UI_BOX_VERTICAL) { - //XtSetArg(xargs[n], gridRowSpacing, args->spacing); n++; + XtSetArg(xargs[n], gridRowSpacing, args->spacing); n++; } else { - //XtSetArg(xargs[n], gridColumnSpacing, args->spacing); n++; + XtSetArg(xargs[n], gridColumnSpacing, args->spacing); n++; } Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); diff --git a/ui/ui/tree.h b/ui/ui/tree.h index 33a903c..a71092b 100644 --- a/ui/ui/tree.h +++ b/ui/ui/tree.h @@ -132,9 +132,9 @@ struct UiListArgs { const char *name; const char *style_class; - UiList* list; + UiList *list; const char* varname; - UiModel* model; + UiModel *model; char **static_elements; size_t static_nelm; ui_getvaluefunc getvalue; @@ -143,15 +143,15 @@ struct UiListArgs { ui_getstylefunc getstyle; void *getstyledata; ui_callback onactivate; - void* onactivatedata; + void *onactivatedata; ui_callback onselection; - void* onselectiondata; + void *onselectiondata; ui_callback ondragstart; - void* ondragstartdata; + void *ondragstartdata; ui_callback ondragcomplete; - void* ondragcompletedata; + void *ondragcompletedata; ui_callback ondrop; - void* ondropdata; + void *ondropdata; UiBool multiselection; UiMenuBuilder *contextmenu; ui_list_savefunc onsave; @@ -300,10 +300,10 @@ UIEXPORT void ui_model_free(UiContext *ctx, UiModel *mi); #define ui_breadcrumbbar(obj, ...) ui_breadcrumbbar_create(obj, &(UiListArgs) { __VA_ARGS__ } ) #define ui_sourcelist(obj, ...) ui_sourcelist_create(obj, &(UiSourceListArgs) { __VA_ARGS__ } ) -UIEXPORT UIWIDGET ui_listview_create(UiObject* obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_table_create(UiObject* obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_combobox_create(UiObject* obj, UiListArgs *args); -UIEXPORT UIWIDGET ui_breadcrumbbar_create(UiObject* obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_listview_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_table_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_combobox_create(UiObject *obj, UiListArgs *args); +UIEXPORT UIWIDGET ui_breadcrumbbar_create(UiObject *obj, UiListArgs *args); UIEXPORT void ui_listview_select(UIWIDGET listview, int index); UIEXPORT void ui_combobox_select(UIWIDGET dropdown, int index);