From df4e9e322dc8c64af1fc8aabc26c8d4ddab32574 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 11 Apr 2015 15:20:52 +0100 Subject: Add widget alignment gtk compatability interface. --- gtk/compat.c | 40 ++++++++++++++++++++++++++++++++++++++++ gtk/compat.h | 25 +++++++++++++++++++++++++ gtk/tabs.c | 19 +++++++++---------- resources/FatMessages | 2 +- 4 files changed, 75 insertions(+), 11 deletions(-) diff --git a/gtk/compat.c b/gtk/compat.c index 14284fc57..8484c02fd 100644 --- a/gtk/compat.c +++ b/gtk/compat.c @@ -543,3 +543,43 @@ gboolean nsgtk_icon_size_lookup_for_settings(GtkSettings *settings, return gtk_icon_size_lookup_for_settings(settings, size, width, height); #endif } + +/* exported interface documented in gtk/compat.h */ +void nsgtk_widget_set_alignment(GtkWidget *widget, GtkAlign halign, GtkAlign valign) +{ +#if GTK_CHECK_VERSION(3,0,0) + gtk_widget_set_halign(widget, halign); + gtk_widget_set_valign(widget, valign); +#else + gfloat x, y; + switch(halign) { + case GTK_ALIGN_START: + x = 0.0; + break; + + case GTK_ALIGN_END: + x = 1.0; + break; + + default: + x = 0.5; + break; + } + + switch(valign) { + case GTK_ALIGN_START: + y = 0.0; + break; + + case GTK_ALIGN_END: + y = 1.0; + break; + + default: + y = 0.5; + break; + } + + gtk_misc_set_alignment(GTK_MISC(widget), x, y); +#endif +} diff --git a/gtk/compat.h b/gtk/compat.h index 52d10f35e..d35c5d75f 100644 --- a/gtk/compat.h +++ b/gtk/compat.h @@ -69,6 +69,31 @@ #define NSGTK_STOCK_OPEN GTK_STOCK_OPEN #endif +/* widget alignment only available since 3.0 */ +#if !GTK_CHECK_VERSION(3,0,0) +typedef enum { + GTK_ALIGN_FILL, + GTK_ALIGN_START, + GTK_ALIGN_END, + GTK_ALIGN_CENTER, + GTK_ALIGN_BASELINE +} GtkAlign; +#endif + +/** + * Set the alignment of a widget. + * + * sets both the horizontal and vertical alignement of a widget + * + * @note this type of alignemnt was not available prior to GTK 3.0 so + * we emulate it using gtk_misc_set_alignment. + * + * \param widget The widget to set alignent on. + * \param halign The horizontal alignment to set. + * \param valign The vertical alignment to set + */ +void nsgtk_widget_set_alignment(GtkWidget *widget, GtkAlign halign, GtkAlign valign); + void nsgtk_widget_set_can_focus(GtkWidget *widget, gboolean can_focus); gboolean nsgtk_widget_has_focus(GtkWidget *widget); gboolean nsgtk_widget_get_visible(GtkWidget *widget); diff --git a/gtk/tabs.c b/gtk/tabs.c index f69966c8d..cf2941d8e 100644 --- a/gtk/tabs.c +++ b/gtk/tabs.c @@ -19,14 +19,16 @@ #include #include -#include "gtk/compat.h" -#include "gtk/window.h" -#include "gtk/gui.h" +#include "utils/nsoption.h" +#include "utils/utils.h" +#include "utils/messages.h" #include "desktop/browser.h" #include "content/content.h" -#include "utils/nsoption.h" #include "desktop/search.h" -#include "utils/utils.h" + +#include "gtk/compat.h" +#include "gtk/window.h" +#include "gtk/gui.h" #include "gtk/search.h" #include "gtk/tabs.h" @@ -70,13 +72,10 @@ static GtkWidget *nsgtk_tab_label_setup(struct gui_window *window) hbox = nsgtk_hbox_new(FALSE, 2); - if (nsoption_bool(new_blank) == true) - label = gtk_label_new("New Tab"); - else - label = gtk_label_new("Loading..."); + label = gtk_label_new(messages_get("NewTab")); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); gtk_label_set_single_line_mode(GTK_LABEL(label), TRUE); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); + nsgtk_widget_set_alignment(label, GTK_ALIGN_START, GTK_ALIGN_CENTER); gtk_misc_set_padding(GTK_MISC(label), 0, 0); gtk_widget_show(label); diff --git a/resources/FatMessages b/resources/FatMessages index 50bc7df4e..8a795fb56 100644 --- a/resources/FatMessages +++ b/resources/FatMessages @@ -709,7 +709,7 @@ de.all.NewWindowNS:Neues Fenster fr.all.NewWindowNS:Nouvelle fenĂȘtre it.all.NewWindowNS:Nuova finestra nl.all.NewWindowNS:Nieuw venster -en.all.NewTab:New tab +en.all.NewTab:New Tab de.all.NewTab:Neuer Tab fr.all.NewTab:Nouvel onglet it.all.NewTab:Nuova scheda -- cgit v1.2.3