diff -r a4f4123ca12a -r 9aff1dc3990d ui/gtk/container.c --- a/ui/gtk/container.c Sat Jan 23 20:47:07 2016 +0100 +++ b/ui/gtk/container.c Sat Jan 23 23:44:41 2016 +0100 @@ -33,19 +33,19 @@ #include "../common/context.h" #include "../common/object.h" -GtkWidget* ui_gtk_vbox_new() { +GtkWidget* ui_gtk_vbox_new(int spacing) { #ifdef UI_GTK3 - return gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + return gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing); #else - return gtk_vbox_new(FALSE, 0); + return gtk_vbox_new(FALSE, spacing); #endif } -GtkWidget* ui_gtk_hbox_new() { +GtkWidget* ui_gtk_hbox_new(int spacing) { #ifdef UI_GTK3 - return gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + return gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing); #else - return gtk_hbox_new(FALSE, 0); + return gtk_hbox_new(FALSE, spacing); #endif } @@ -203,29 +203,60 @@ UIWIDGET ui_vbox(UiObject *obj) { + return ui_vbox_sp(obj, 0, 0); +} + +UIWIDGET ui_hbox(UiObject *obj) { + return ui_hbox_sp(obj, 0, 0); +} + +static GtkWidget* box_set_margin(GtkWidget *box, int margin) { + GtkWidget *ret = box; +#ifdef UI_GTK3 +#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 12 + gtk_widget_set_margin_start(box, margin); + gtk_widget_set_margin_end(box, margin); +#else + gtk_widget_set_margin_left(box, margin); + gtk_widget_set_margin_right(box, margin); +#endif + gtk_widget_set_margin_top(box, margin); + gtk_widget_set_margin_bottom(box, margin); +#elif defined(UI_GTK2) + GtkWidget *a = gtk_alignment_new(0.5, 0.5, 1, 1); + gtk_alignment_set_padding(GTK_ALIGNMENT(a), margin, margin, margin, margin); + gtk_container_add(GTK_CONTAINER(a), box); + ret = a; +#endif + return ret; +} + +UIWIDGET ui_vbox_sp(UiObject *obj, int margin, int spacing) { UiContainer *ct = uic_get_current_container(obj); - GtkWidget *vbox = ui_gtk_vbox_new(); - ct->add(ct, vbox, TRUE); + GtkWidget *vbox = ui_gtk_vbox_new(spacing); + GtkWidget *widget = margin > 0 ? box_set_margin(vbox, margin) : vbox; + ct->add(ct, widget, TRUE); UiObject *newobj = uic_object_new(obj, vbox); newobj->container = ui_box_container(obj, vbox); uic_obj_add(obj, newobj); - return vbox; + return widget; } -UIWIDGET ui_hbox(UiObject *obj) { +UIWIDGET ui_hbox_sp(UiObject *obj, int margin, int spacing) { UiContainer *ct = uic_get_current_container(obj); - GtkWidget *hbox = ui_gtk_hbox_new(); - ct->add(ct, hbox, TRUE); + GtkWidget *hbox = ui_gtk_hbox_new(spacing); + GtkWidget *widget = margin > 0 ? box_set_margin(hbox, margin) : hbox; + ct->add(ct, widget, TRUE); UiObject *newobj = uic_object_new(obj, hbox); newobj->container = ui_box_container(obj, hbox); uic_obj_add(obj, newobj); - return hbox; + return widget; } UIWIDGET ui_grid(UiObject *obj) { @@ -310,7 +341,7 @@ #endif gtk_paned_set_position(GTK_PANED(paned), 200); - GtkWidget *sidebar = ui_gtk_vbox_new(); + GtkWidget *sidebar = ui_gtk_vbox_new(0); gtk_paned_pack1(GTK_PANED(paned), sidebar, TRUE, FALSE); UiObject *left = uic_object_new(obj, sidebar);