From: Olaf Wintermann Date: Thu, 30 Jan 2025 20:40:13 +0000 (+0100) Subject: update toolkit X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=179597fccfd1bb0b9a7dd978c390f1c06d90129f;p=mizunara.git update toolkit --- diff --git a/ui/common/types.c b/ui/common/types.c index 7a7a722..4138c60 100644 --- a/ui/common/types.c +++ b/ui/common/types.c @@ -231,6 +231,8 @@ UiModel* ui_model_copy(UiContext *ctx, UiModel* model) { for (int i = 0; i < model->columns; i++) { newmodel->titles[i] = model->titles[i] ? cx_strdup_a(a, cx_str(model->titles[i])).ptr : NULL; } + newmodel->columnsize = cxCalloc(a, model->columns, sizeof(int)); + memcpy(newmodel->columnsize, model->columnsize, model->columns*sizeof(int)); return newmodel; } @@ -239,6 +241,7 @@ void ui_model_free(UiContext *ctx, UiModel *mi) { const CxAllocator* a = ctx ? ctx->allocator : cxDefaultAllocator; cxFree(a, mi->types); cxFree(a, mi->titles); + cxFree(a, mi->columnsize); cxFree(a, mi); } diff --git a/ui/gtk/list.c b/ui/gtk/list.c index 50eb6e5..eb411cf 100644 --- a/ui/gtk/list.c +++ b/ui/gtk/list.c @@ -388,6 +388,13 @@ UIWIDGET ui_table_create(UiObject *obj, UiListArgs args) { GtkColumnViewColumn *column = gtk_column_view_column_new(model->titles[i], factory); gtk_column_view_column_set_resizable(column, true); gtk_column_view_append_column(GTK_COLUMN_VIEW(view), column); + + int size = model->columnsize[i]; + if(size > 0) { + gtk_column_view_column_set_fixed_width(column, size); + } else if(size < 0) { + gtk_column_view_column_set_expand(column, TRUE); + } } // bind listview to list @@ -614,8 +621,8 @@ static GtkListStore* create_list_store(UiList *list, UiModel *model) { } case UI_INTEGER: { g_value_init(&value, G_TYPE_INT); - int *intptr = data; - g_value_set_int(&value, *intptr); + intptr_t intptr = (intptr_t)data; + g_value_set_int(&value, (int)intptr); break; } case UI_ICON: { diff --git a/ui/gtk/window.c b/ui/gtk/window.c index 0928ee1..0120ea5 100644 --- a/ui/gtk/window.c +++ b/ui/gtk/window.c @@ -168,13 +168,14 @@ static UiObject* create_window(const char *title, void *window_data, UiBool side GtkWidget *content_box = ui_gtk_vbox_new(0); BOX_ADD_EXPAND(GTK_BOX(vbox), content_box); + GtkWidget *sidebar_headerbar = NULL; if(sidebar) { GtkWidget *splitview = adw_overlay_split_view_new(); adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), splitview); GtkWidget *sidebar_toolbar_view = adw_toolbar_view_new(); adw_overlay_split_view_set_sidebar(ADW_OVERLAY_SPLIT_VIEW(splitview), sidebar_toolbar_view); - GtkWidget *sidebar_headerbar = adw_header_bar_new(); + sidebar_headerbar = adw_header_bar_new(); adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), sidebar_headerbar); adw_overlay_split_view_set_content(ADW_OVERLAY_SPLIT_VIEW(splitview), toolbar_view); @@ -184,8 +185,25 @@ static UiObject* create_window(const char *title, void *window_data, UiBool side adw_application_window_set_content(ADW_APPLICATION_WINDOW(obj->widget), toolbar_view); } - GtkWidget *headerbar = adw_header_bar_new(); + + const char *show_title = ui_get_property("ui.gtk.window.showtitle"); + if(show_title) { + if(!strcmp(show_title, "main") && sidebar) { + adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); + } else if(!strcmp(show_title, "sidebar")) { + adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); + } else if(!strcmp(show_title, "false")) { + adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); + adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); + } else { + fprintf(stderr, "Unknown value '%s' for property ui.gtk.window.showtitle\n", show_title); + adw_header_bar_set_show_title(ADW_HEADER_BAR(sidebar_headerbar), FALSE); + } + } else { + adw_header_bar_set_show_title(ADW_HEADER_BAR(headerbar), FALSE); + } + adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), headerbar); g_object_set_data(G_OBJECT(obj->widget), "ui_headerbar", headerbar); diff --git a/ui/ui/container.h b/ui/ui/container.h index 3d194bb..dda4867 100644 --- a/ui/ui/container.h +++ b/ui/ui/container.h @@ -289,7 +289,13 @@ UIEXPORT UiTabbedPane* ui_tabbed_document_view(UiObject *obj); UIEXPORT UiObject* ui_document_tab(UiTabbedPane *view); +#ifdef UI_GTK typedef UIWIDGET (*ui_createwidget_func)(UiObject *obj, UiWidgetArgs args, void *userdata); +#elif defined(UI_MOTIF) +typedef UIWIDGET (*ui_createwidget_func)(UiObject *obj, UiWidgetArgs args, void *userdata, Widget parent, Arg *a, int n); +#elif defined(UI_COCOA) +typedef UIWIDGET (*ui_createwidget_func)(UiObject *obj, UiWidgetArgs args, void *userdata); +#endif UIEXPORT UIWIDGET ui_customwidget_create(UiObject *obj, ui_createwidget_func create_widget, void *userdata, UiWidgetArgs args); #define ui_customwidget(obj, create_widget, userdata, ...) ui_customwidget_create(obj, create_widget, userdata, (UiWidgetArgs) { __VA_ARGS__ }) diff --git a/ui/ui/toolkit.h b/ui/ui/toolkit.h index d723909..66973c3 100644 --- a/ui/ui/toolkit.h +++ b/ui/ui/toolkit.h @@ -42,6 +42,7 @@ typedef void* UIWINDOW; // NSWindow* typedef void* UIMENU; // NSMenu* #elif UI_GTK2 || UI_GTK3 || UI_GTK4 +#define UI_GTK #include #define UIWIDGET GtkWidget*