Hi > I think that once we get the GTK3 stuff working properly [1], we should just > get rid of the GTK2 support.
ok > Oh, yeah, that's an ABI break. Do we need the new members anywhere outside of > girara? If not, I'd say we introduce a girara_session_private_s struct and add > a pointer to it at the end of girara_session_s. This wouldn't break the ABI. It's just a couple of container widgets for the overlay and the floating stuff. I had them in session.gtk, but they don't need to be public. I attach a patch on top of the previous one doing as you suggest. Plus some other minor tweaks. Abdó.
>From 6b1cad1c76a21c2193f3e288eb959b69af1b9c4e Mon Sep 17 00:00:00 2001 From: Abdo Roig-Maranges <abdo.r...@gmail.com> Date: Mon, 8 Jul 2013 16:07:21 +0200 Subject: [PATCH 1/3] fix css style --- session.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/session.c b/session.c index dde197b..9f095d4 100644 --- a/session.c +++ b/session.c @@ -236,7 +236,7 @@ girara_session_init(girara_session_t* session, const char* sessionname) /* gtk_entry_set_inner_border is deprecated since gtk 3.4 and does nothing. */ GtkCssProvider* provider = gtk_css_provider_new(); char css[256]; - const char* css_pattern = "#bottom_box { padding:%dpx 0px %dpx %dpx; }"; + const char* css_pattern = "#bottom_box { border-style: none; margin: 0px 0px 0px 0px; padding:%dpx 0px %dpx %dpx; }"; sprintf(css, css_pattern, ypadding - ypadding/2, ypadding/2, leftpadding); gtk_css_provider_load_from_data(provider, css, strlen(css), NULL); @@ -250,7 +250,6 @@ girara_session_init(girara_session_t* session, const char* sessionname) gtk_widget_set_name(session->gtk.inputbar_entry, "bottom_box"); gtk_widget_set_name(session->gtk.notification_text, "bottom_box"); #else - // TODO: test this GTK2 block GtkBorder inner_border = { .left = leftpadding, .right = 0, -- 1.8.3.2 >From f914ac4fcfe5846e542428be32117a8a23f3db14 Mon Sep 17 00:00:00 2001 From: Abdo Roig-Maranges <abdo.r...@gmail.com> Date: Tue, 9 Jul 2013 18:55:21 +0200 Subject: [PATCH 2/3] add private member to girara_session And move there the new members introduced in commits cc858bcb172aa963b and b90f8b0c572a4e251 so we do not break the ABI. --- completion.c | 2 +- session.c | 30 ++++++++++++++++-------------- session.h | 12 ++++++++++-- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/completion.c b/completion.c index caa975f..e91b9da 100644 --- a/completion.c +++ b/completion.c @@ -380,7 +380,7 @@ girara_isc_completion(girara_session_t* session, girara_argument_t* argument, gi if (entries != NULL) { entries_current = (argument->n == GIRARA_NEXT) ? g_list_last(entries) : entries; - gtk_box_pack_start(session->gtk.bottom_box, GTK_WIDGET(session->gtk.results), FALSE, FALSE, 0); + gtk_box_pack_start(session->private->bottom_box, GTK_WIDGET(session->gtk.results), FALSE, FALSE, 0); gtk_widget_show(GTK_WIDGET(session->gtk.results)); } } diff --git a/session.c b/session.c index 9f095d4..2f0962b 100644 --- a/session.c +++ b/session.c @@ -41,6 +41,7 @@ girara_session_create() ensure_gettext_initialized(); girara_session_t* session = g_slice_alloc0(sizeof(girara_session_t)); + session->private = g_slice_alloc0(sizeof(girara_session_private_t)); /* init values */ session->bindings.mouse_events = girara_list_new2( @@ -88,15 +89,15 @@ girara_session_create() /* create widgets */ #if GTK_MAJOR_VERSION == 2 session->gtk.box = GTK_BOX(gtk_vbox_new(FALSE, 0)); - session->gtk.overlay = NULL; - session->gtk.bottom_box = GTK_BOX(gtk_vbox_new(FALSE, 0)); + session->private->overlay = NULL; + session->private->bottom_box = GTK_BOX(gtk_vbox_new(FALSE, 0)); session->gtk.statusbar_entries = GTK_BOX(gtk_hbox_new(FALSE, 0)); session->gtk.tabbar = gtk_hbox_new(TRUE, 0); session->gtk.inputbar_box = GTK_BOX(gtk_hbox_new(TRUE, 0)); #else session->gtk.box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0)); - session->gtk.overlay = gtk_overlay_new(); - session->gtk.bottom_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0)); + session->private->overlay = gtk_overlay_new(); + session->private->bottom_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0)); session->gtk.statusbar_entries = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0)); session->gtk.tabbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); session->gtk.inputbar_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0)); @@ -306,11 +307,11 @@ girara_session_init(girara_session_t* session, const char* sessionname) gtk_container_add(GTK_CONTAINER(session->gtk.inputbar), GTK_WIDGET(session->gtk.inputbar_box)); /* bottom box */ - gtk_box_set_spacing(session->gtk.bottom_box, 0); + gtk_box_set_spacing(session->private->bottom_box, 0); - gtk_box_pack_end(GTK_BOX(session->gtk.bottom_box), GTK_WIDGET(session->gtk.inputbar), TRUE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(session->gtk.bottom_box), GTK_WIDGET(session->gtk.notification_area), TRUE, TRUE, 0); - gtk_box_pack_end(GTK_BOX(session->gtk.bottom_box), GTK_WIDGET(session->gtk.statusbar), TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(session->private->bottom_box), GTK_WIDGET(session->gtk.inputbar), TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(session->private->bottom_box), GTK_WIDGET(session->gtk.notification_area), TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(session->private->bottom_box), GTK_WIDGET(session->gtk.statusbar), TRUE, TRUE, 0); /* tabs */ gtk_notebook_set_show_border(session->gtk.tabs, FALSE); @@ -323,20 +324,20 @@ girara_session_init(girara_session_t* session, const char* sessionname) gtk_box_pack_start(session->gtk.box, GTK_WIDGET(session->gtk.view), TRUE, TRUE, 0); /* box */ - gtk_container_add(GTK_CONTAINER(session->gtk.overlay), GTK_WIDGET(session->gtk.box)); + gtk_container_add(GTK_CONTAINER(session->private->overlay), GTK_WIDGET(session->gtk.box)); /* overlay */ - g_object_set(session->gtk.bottom_box, "halign", GTK_ALIGN_FILL, NULL); - g_object_set(session->gtk.bottom_box, "valign", GTK_ALIGN_END, NULL); + g_object_set(session->private->bottom_box, "halign", GTK_ALIGN_FILL, NULL); + g_object_set(session->private->bottom_box, "valign", GTK_ALIGN_END, NULL); - gtk_overlay_add_overlay(GTK_OVERLAY(session->gtk.overlay), GTK_WIDGET(session->gtk.bottom_box)); - gtk_container_add(GTK_CONTAINER(session->gtk.window), GTK_WIDGET(session->gtk.overlay)); + gtk_overlay_add_overlay(GTK_OVERLAY(session->private->overlay), GTK_WIDGET(session->private->bottom_box)); + gtk_container_add(GTK_CONTAINER(session->gtk.window), GTK_WIDGET(session->private->overlay)); #else /* packing */ gtk_box_set_spacing(session->gtk.box, 0); gtk_box_pack_start(session->gtk.box, GTK_WIDGET(session->gtk.tabbar), FALSE, FALSE, 0); gtk_box_pack_start(session->gtk.box, GTK_WIDGET(session->gtk.view), TRUE, TRUE, 0); - gtk_box_pack_end(session->gtk.box, GTK_WIDGET(session->gtk.bottom_box), FALSE, FALSE, 0); + gtk_box_pack_end(session->gtk.box, GTK_WIDGET(session->private->bottom_box), FALSE, FALSE, 0); /* box */ gtk_container_add(GTK_CONTAINER(session->gtk.window), GTK_WIDGET(session->gtk.box)); @@ -539,6 +540,7 @@ girara_session_destroy(girara_session_t* session) session->global.buffer = NULL; /* clean up session */ + g_slice_free(girara_session_private_t, session->private); g_slice_free(girara_session_t, session); return TRUE; diff --git a/session.h b/session.h index a50d04d..9861c12 100644 --- a/session.h +++ b/session.h @@ -19,6 +19,13 @@ /** * Structure of a girara session */ + +typedef struct girara_session_private_s +{ + GtkWidget *overlay; /**< So we can overlay bottom_box on top of view */ + GtkBox *bottom_box; /**< Box grouping input, status and notification */ +} girara_session_private_t; + struct girara_session_s { struct @@ -27,8 +34,6 @@ struct girara_session_s GtkBox *box; /**< A box that contains all widgets */ GtkWidget *view; /**< The view area of the applications widgets */ GtkWidget *viewport; /**< The viewport of view */ - GtkWidget *overlay; /**< So we can overlay bottom_box on top of view */ - GtkBox *bottom_box; /**< Box grouping input, status and notification */ GtkWidget *statusbar; /**< The statusbar */ GtkBox *statusbar_entries; /**< Statusbar entry box */ GtkWidget *notification_area; /**< The notification area */ @@ -46,6 +51,7 @@ struct girara_session_s #else GdkNativeWindow embed; /**< Embedded window */ #endif // (GTK_MAJOR_VERSION == 3) + } gtk; struct @@ -146,6 +152,8 @@ struct girara_session_s } config; GiraraInputHistory* command_history; /**< Command history */ + + girara_session_private_t* private; }; /** -- 1.8.3.2 >From 533c9a34842625143790d5dc47fe78b7a966c0de Mon Sep 17 00:00:00 2001 From: Abdo Roig-Maranges <abdo.r...@gmail.com> Date: Tue, 9 Jul 2013 19:23:56 +0200 Subject: [PATCH 3/3] added explicit type casts --- session.c | 4 ++-- statusbar.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/session.c b/session.c index 2f0962b..944714a 100644 --- a/session.c +++ b/session.c @@ -248,8 +248,8 @@ girara_session_init(girara_session_t* session, const char* sessionname) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (provider); - gtk_widget_set_name(session->gtk.inputbar_entry, "bottom_box"); - gtk_widget_set_name(session->gtk.notification_text, "bottom_box"); + gtk_widget_set_name(GTK_WIDGET(session->gtk.inputbar_entry), "bottom_box"); + gtk_widget_set_name(GTK_WIDGET(session->gtk.notification_text), "bottom_box"); #else GtkBorder inner_border = { .left = leftpadding, diff --git a/statusbar.c b/statusbar.c index 1b8cc2d..8cfa8d7 100644 --- a/statusbar.c +++ b/statusbar.c @@ -30,7 +30,7 @@ girara_statusbar_item_add(girara_session_t* session, bool expand, bool fill, boo #if (GTK_MAJOR_VERSION == 3) /* add name so it uses a custom style */ - gtk_widget_set_name(item->text, "bottom_box"); + gtk_widget_set_name(GTK_WIDGET(item->text), "bottom_box"); #else /* set padding */ gtk_misc_set_padding(GTK_MISC(item->text), 4, 0); -- 1.8.3.2
_______________________________________________ zathura mailing list zathura@lists.pwmt.org http://lists.pwmt.org/mailman/listinfo/zathura