X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/f44417cf9d3d5ddea2f0dfb2e238a2826eb6691d..a2c4ad5fad89f91d11811288c7781fb75712b9a3:/disobedience/misc.c diff --git a/disobedience/misc.c b/disobedience/misc.c index 7a6ba71..1e5ee22 100644 --- a/disobedience/misc.c +++ b/disobedience/misc.c @@ -51,7 +51,8 @@ GtkWidget *scroll_widget(GtkWidget *child) { gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroller), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - if(GTK_IS_LAYOUT(child)) { + if(GTK_IS_LAYOUT(child) + || GTK_IS_TREE_VIEW(child)) { /* Child widget has native scroll support */ gtk_container_add(GTK_CONTAINER(scroller), child); /* Fix up the step increments if they are 0 (seems like an odd default?) */ @@ -72,6 +73,24 @@ GtkWidget *scroll_widget(GtkWidget *child) { return scroller; } +/** @brief Put a frame round a widget + * @param w Widget + * @param label Label or NULL + * @return Frame widget + */ +GtkWidget *frame_widget(GtkWidget *w, const char *label) { + GtkWidget *const frame = gtk_frame_new(label); + GtkWidget *const hbox = gtk_hbox_new(FALSE, 0); + GtkWidget *const vbox = gtk_vbox_new(FALSE, 0); + /* We want 4 pixels outside the frame boundary... */ + gtk_container_set_border_width(GTK_CONTAINER(frame), 4); + /* ...and 4 pixels inside */ + gtk_box_pack_start(GTK_BOX(hbox), w, TRUE/*expand*/, TRUE/*fill*/, 4); + gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE/*expand*/, TRUE/*fill*/, 4); + gtk_container_add(GTK_CONTAINER(frame), vbox); + return frame; +} + /** @brief Find an image * @param name Relative path to image * @return pixbuf containing image @@ -112,9 +131,13 @@ GdkPixbuf *find_image(const char *name) { /** @brief Pop up a message */ void popup_msg(GtkMessageType mt, const char *msg) { + popup_submsg(toplevel, mt, msg); +} + +void popup_submsg(GtkWidget *parent, GtkMessageType mt, const char *msg) { GtkWidget *w; - w = gtk_message_dialog_new(GTK_WINDOW(toplevel), + w = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, mt, GTK_BUTTONS_CLOSE,