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;
}
const CxAllocator* a = ctx ? ctx->allocator : cxDefaultAllocator;
cxFree(a, mi->types);
cxFree(a, mi->titles);
+ cxFree(a, mi->columnsize);
cxFree(a, mi);
}
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
}
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: {
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);
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);
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__ })
typedef void* UIMENU; // NSMenu*
#elif UI_GTK2 || UI_GTK3 || UI_GTK4
+#define UI_GTK
#include <gtk/gtk.h>
#define UIWIDGET GtkWidget*