summaryrefslogtreecommitdiffstats
path: root/src/widgets/font-selector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/font-selector.cpp')
-rw-r--r--src/widgets/font-selector.cpp62
1 files changed, 32 insertions, 30 deletions
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index eeb80ab28..e9cf66621 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -16,31 +16,49 @@
*/
#ifdef HAVE_CONFIG_H
-# include "config.h"
+#include <config.h>
#endif
#include <2geom/transforms.h>
#include <gtk/gtk.h>
+#include <libnrtype/font-lister.h>
+#include <libnrtype/font-instance.h>
+
#include <glibmm/i18n.h>
#include "desktop.h"
#include "widgets/font-selector.h"
-#include "preferences.h"
/* SPFontSelector */
+struct SPFontSelector
+{
+ GtkBox hbox;
+
+ unsigned int block_emit : 1;
+
+ GtkWidget *family;
+ GtkWidget *style;
+ GtkWidget *size;
+
+ GtkWidget *family_treeview;
+ GtkWidget *style_treeview;
+
+ NRNameList families;
+ NRStyleList styles;
+ gfloat fontsize;
+ bool fontsize_dirty;
+ Glib::ustring *fontspec;
+};
+
struct SPFontSelectorClass
{
-#if GTK_CHECK_VERSION(3,0,0)
GtkBoxClass parent_class;
-#else
- GtkHBoxClass parent_class;
-#endif
void (* font_set) (SPFontSelector *fsel, gchar *fontspec);
};
@@ -66,11 +84,7 @@ static void sp_font_selector_set_sizes( SPFontSelector *fsel );
static guint fs_signals[LAST_SIGNAL] = { 0 };
-#if GTK_CHECK_VERSION(3,0,0)
G_DEFINE_TYPE(SPFontSelector, sp_font_selector, GTK_TYPE_BOX);
-#else
-G_DEFINE_TYPE(SPFontSelector, sp_font_selector, GTK_TYPE_HBOX);
-#endif
static void sp_font_selector_class_init(SPFontSelectorClass *c)
{
@@ -102,8 +116,8 @@ static void sp_font_selector_set_size_tooltip(SPFontSelector *fsel)
*/
static void sp_font_selector_init(SPFontSelector *fsel)
{
- gtk_box_set_homogeneous(GTK_BOX(fsel), TRUE);
- gtk_box_set_spacing(GTK_BOX(fsel), 4);
+ //gtk_box_set_homogeneous(GTK_BOX(fsel), TRUE);
+ //gtk_box_set_spacing(GTK_BOX(fsel), 4);
/* Family frame */
GtkWidget *f = gtk_frame_new(_("Font family"));
@@ -125,6 +139,7 @@ static void sp_font_selector_init(SPFontSelector *fsel)
GtkTreeViewColumn *column = gtk_tree_view_column_new ();
GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_set_fixed_width (column, 200);
gtk_tree_view_column_set_attributes (column, cell, "text", 0, NULL);
gtk_tree_view_column_set_cell_data_func (column, cell,
GtkTreeCellDataFunc (font_lister_cell_data_func),
@@ -135,8 +150,7 @@ static void sp_font_selector_init(SPFontSelector *fsel)
/* Muck with style, see text-toolbar.cpp */
gtk_widget_set_name( GTK_WIDGET(fsel->family_treeview), "font_selector_family" );
-#if GTK_CHECK_VERSION(3,0,0)
- GtkCssProvider *css_provider = gtk_css_provider_new();
+ auto css_provider = gtk_css_provider_new();
gtk_css_provider_load_from_data(css_provider,
"#font_selector_family {\n"
" -GtkWidget-wide-separators: true;\n"
@@ -144,14 +158,10 @@ static void sp_font_selector_init(SPFontSelector *fsel)
"}\n",
-1, NULL);
- GdkScreen *screen = gdk_screen_get_default();
+ auto screen = gdk_screen_get_default();
gtk_style_context_add_provider_for_screen(screen,
GTK_STYLE_PROVIDER(css_provider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
-#else
- gtk_rc_parse_string (
- "widget \"*font_selector_family\" style \"fontfamily-separator-style\"");
-#endif
Inkscape::FontLister* fontlister = Inkscape::FontLister::get_instance();
Glib::RefPtr<Gtk::ListStore> store = fontlister->get_font_list();
@@ -168,14 +178,10 @@ static void sp_font_selector_init(SPFontSelector *fsel)
/* Style frame */
f = gtk_frame_new(C_("Font selector", "Style"));
gtk_widget_show(f);
- gtk_box_pack_start(GTK_BOX (fsel), f, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX (fsel), f, FALSE, TRUE, 0);
-#if GTK_CHECK_VERSION(3,0,0)
- GtkWidget *vb = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
+ auto vb = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
gtk_box_set_homogeneous(GTK_BOX(vb), FALSE);
-#else
- GtkWidget *vb = gtk_vbox_new(FALSE, 4);
-#endif
gtk_widget_show(vb);
gtk_container_set_border_width(GTK_CONTAINER (vb), 4);
gtk_container_add(GTK_CONTAINER(f), vb);
@@ -210,12 +216,8 @@ static void sp_font_selector_init(SPFontSelector *fsel)
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(fsel->style_treeview));
g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK (sp_font_selector_style_select_row), fsel);
-#if GTK_CHECK_VERSION(3,0,0)
- GtkWidget *hb = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
+ auto hb = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
gtk_box_set_homogeneous(GTK_BOX(hb), FALSE);
-#else
- GtkWidget *hb = gtk_hbox_new(FALSE, 4);
-#endif
gtk_widget_show(hb);
gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0);