commit a8aa34ff9af91bf7fa173b9e3e91f09883e3c9c6
parent 6efdeae6c0adc6d6109a1deb8ee5b506b7b6d1da
Author: Oliver Lowe <o@olowe.co>
Date: Sat, 23 Aug 2025 19:29:38 +1000
Source font from GTK settings
Diffstat:
22 files changed, 40 insertions(+), 920 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -94,7 +94,6 @@ claws_mail_SOURCES = \
prefs_display_header.c \
prefs_ext_prog.c \
prefs_folder_item.c \
- prefs_fonts.c \
prefs_gtk.c \
prefs_logging.c \
prefs_matcher.c \
@@ -196,7 +195,6 @@ claws_mailinclude_HEADERS = \
prefs_display_header.h \
prefs_ext_prog.h \
prefs_folder_item.h \
- prefs_fonts.h \
prefs_gtk.h \
prefs_logging.h \
prefs_matcher.h \
diff --git a/src/action.c b/src/action.c
@@ -1313,17 +1313,6 @@ static void create_io_dialog(Children *children)
gtk_widget_hide(scrolledwin);
text = gtk_text_view_new();
-
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(text, font_desc);
- pango_font_description_free(font_desc);
- }
- }
-
gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD);
gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6);
diff --git a/src/common/defs.h b/src/common/defs.h
@@ -148,10 +148,6 @@
'BadAlloc (insufficient resources for operation)' */
#define MAX_MENU_LABEL_LENGTH 5453
-#define BOLD_FONT prefs_common.boldfont
-#define NORMAL_FONT prefs_common.normalfont
-#define SMALL_FONT prefs_common.smallfont
-
#define DEFAULT_PIXMAP_THEME "INTERNAL_DEFAULT"
#define PIXMAP_THEME_DIR "themes"
diff --git a/src/compose.c b/src/compose.c
@@ -7547,18 +7547,6 @@ static Compose *compose_create(PrefsAccount *account,
gtk_widget_show_all(paned);
-
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(text, font_desc);
- pango_font_description_free(font_desc);
- }
- }
-
gtk_action_group_add_actions(action_group, compose_popup_entries,
G_N_ELEMENTS(compose_popup_entries), (gpointer)compose);
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/", "Popup", NULL, GTK_UI_MANAGER_MENUBAR)
diff --git a/src/folderview.c b/src/folderview.c
@@ -635,38 +635,6 @@ FolderView *folderview_create(MainWindow *mainwin)
return folderview;
}
-static void folderview_set_fonts(FolderView *folderview)
-{
- PangoFontDescription *font_desc;
- GtkWidget *ctree = folderview->ctree;
-
- font_desc = pango_font_description_from_string(NORMAL_FONT);
- if (font_desc) {
- gtk_widget_override_font(ctree, font_desc);
- pango_font_description_free(font_desc);
- }
-
- if (!bold_style) {
- bold_style = gtk_style_copy(gtk_widget_get_style(ctree));
-
- if (prefs_common.derive_from_normal_font || !BOLD_FONT) {
- font_desc = pango_font_description_from_string(NORMAL_FONT);
- if (font_desc) {
- pango_font_description_free(bold_style->font_desc);
- bold_style->font_desc = font_desc;
- }
- pango_font_description_set_weight
- (bold_style->font_desc, PANGO_WEIGHT_BOLD);
- } else {
- font_desc = pango_font_description_from_string(BOLD_FONT);
- if (font_desc) {
- pango_font_description_free(bold_style->font_desc);
- bold_style->font_desc = font_desc;
- }
- }
- }
-}
-
void folderview_init(FolderView *folderview)
{
stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_CLOSE, &inboxxpm);
@@ -720,8 +688,6 @@ void folderview_init(FolderView *folderview)
stock_pixbuf_gdk(STOCK_PIXMAP_DRAFTS_OPEN_MARK, &m_draftsopenxpm);
stock_pixbuf_gdk(STOCK_PIXMAP_DIR_SUBS_CLOSE_MARK, &m_foldersubsxpm);
stock_pixbuf_gdk(STOCK_PIXMAP_DIR_NOSELECT_CLOSE_MARK, &m_foldernoselectxpm);
-
- folderview_set_fonts(folderview);
}
static gboolean folderview_defer_set(gpointer data)
@@ -2686,80 +2652,6 @@ void folderview_set_target_folder_color(GdkRGBA color_op)
}
}
-static gchar *last_smallfont = NULL;
-static gchar *last_normalfont = NULL;
-static gchar *last_boldfont = NULL;
-static gboolean last_derive = 0;
-
-void folderview_reinit_fonts(FolderView *folderview)
-{
- /* force reinit */
- g_free(last_smallfont);
- last_smallfont = NULL;
- g_free(last_normalfont);
- last_normalfont = NULL;
- g_free(last_boldfont);
- last_boldfont = NULL;
-}
-
-void folderview_reflect_prefs(void)
-{
- gboolean update_font = FALSE;
- FolderView *folderview = mainwindow_get_mainwindow()->folderview;
- FolderItem *item = folderview_get_selected_item(folderview);
- GtkAdjustment *pos = gtk_scrolled_window_get_vadjustment(
- GTK_SCROLLED_WINDOW(folderview->scrolledwin));
- gint height = gtk_adjustment_get_value(pos);
-
- folderview->color_new = prefs_common.color[COL_NEW];
- folderview->color_op = prefs_common.color[COL_TGT_FOLDER];
-
- if (!last_smallfont || strcmp(last_smallfont, SMALL_FONT) ||
- !last_normalfont || strcmp(last_normalfont, NORMAL_FONT) ||
- !last_boldfont || strcmp(last_boldfont, BOLD_FONT) ||
- last_derive != prefs_common.derive_from_normal_font)
- update_font = TRUE;
-
- if (!update_font)
- return;
-
- g_free(last_smallfont);
- last_smallfont = g_strdup(SMALL_FONT);
- g_free(last_normalfont);
- last_normalfont = g_strdup(NORMAL_FONT);
- g_free(last_boldfont);
- last_boldfont = g_strdup(BOLD_FONT);
- last_derive = prefs_common.derive_from_normal_font;
-
- folderview_set_fonts(folderview);
-
- gtk_cmclist_freeze(GTK_CMCLIST(folderview->ctree));
- folderview_column_set_titles(folderview);
- folderview_set_all();
-
- g_signal_handlers_block_by_func
- (G_OBJECT(folderview->ctree),
- G_CALLBACK(folderview_selected), folderview);
-
- if (item) {
- GtkCMCTreeNode *node = gtk_cmctree_find_by_row_data(
- GTK_CMCTREE(folderview->ctree), NULL, item);
-
- folderview_select(folderview, item);
- folderview->open_folder = FALSE;
- folderview->selected = node;
- }
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(folderview->ctree),
- G_CALLBACK(folderview_selected), folderview);
-
- pos = gtk_scrolled_window_get_vadjustment(
- GTK_SCROLLED_WINDOW(folderview->scrolledwin));
- gtk_adjustment_set_value(pos, height);
- gtk_cmclist_thaw(GTK_CMCLIST(folderview->ctree));
-}
-
static void drag_state_stop(FolderView *folderview)
{
if (folderview->drag_timer_id)
diff --git a/src/folderview.h b/src/folderview.h
@@ -14,7 +14,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
+ *
*/
#ifndef __FOLDERVIEW_H__
@@ -68,13 +68,13 @@ struct _FolderView
gint folder_update_callback_id;
gint folder_item_update_callback_id;
-
+
/* DND states */
GSList *nodes_to_recollapse;
guint drag_timer_id; /* timer id */
FolderItem *drag_item; /* dragged item */
GtkCMCTreeNode *drag_node; /* drag node */
-
+
GtkTargetList *target_list; /* DnD */
FolderColumnState col_state[N_FOLDER_COLS];
gint col_pos[N_FOLDER_COLS];
@@ -136,17 +136,14 @@ void folderview_move_folder (FolderView *folderview,
void folderview_set_target_folder_color (GdkRGBA color_op);
-void folderview_reinit_fonts (FolderView *folderview);
-
-void folderview_reflect_prefs (void);
void folderview_register_popup (FolderViewPopup *fpopup);
void folderview_unregister_popup (FolderViewPopup *fpopup);
-void folderview_update_search_icon (FolderItem *item,
+void folderview_update_search_icon (FolderItem *item,
gboolean matches);
void folderview_set_column_order (FolderView *folderview);
-void folderview_finish_dnd (const gchar *data,
+void folderview_finish_dnd (const gchar *data,
GdkDragContext *drag_context,
- guint time,
+ guint time,
FolderItem *item);
void folderview_close_opened (FolderView *folderview,
gboolean dirty);
diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c
@@ -70,25 +70,26 @@ gboolean gtkut_get_font_size(GtkWidget *widget,
return TRUE;
}
-void gtkut_widget_set_small_font_size(GtkWidget *widget)
+PangoFontDescription *default_font()
{
- PangoFontDescription *font_desc;
- gint size;
+ GtkSettings *settings = gtk_settings_get_default();
+ char *name;
+ g_object_get(settings, "gtk-font-name", &name, NULL);
+ PangoFontDescription *font = pango_font_description_from_string(name);
+ free(name);
+ return font;
+}
+void gtkut_widget_set_small_font_size(GtkWidget *widget)
+{
cm_return_if_fail(widget != NULL);
cm_return_if_fail(gtk_widget_get_style(widget) != NULL);
- if (prefs_common.derive_from_normal_font || !SMALL_FONT) {
- font_desc = pango_font_description_from_string(NORMAL_FONT);
- size = pango_font_description_get_size(font_desc);
- pango_font_description_set_size(font_desc, size * PANGO_SCALE_SMALL);
- gtk_widget_override_font(widget, font_desc);
- pango_font_description_free(font_desc);
- } else {
- font_desc = pango_font_description_from_string(SMALL_FONT);
- gtk_widget_override_font(widget, font_desc);
- pango_font_description_free(font_desc);
- }
+ PangoFontDescription *font = default_font();
+ int size = pango_font_description_get_size(font);
+ pango_font_description_set_size(font, size * PANGO_SCALE_SMALL);
+ gtk_widget_override_font(widget, font);
+ pango_font_description_free(font);
}
void gtkut_stock_button_add_help(GtkWidget *bbox, GtkWidget **help_btn)
diff --git a/src/gtk/gtkutils.h b/src/gtk/gtkutils.h
@@ -166,6 +166,7 @@ GtkWidget *gtkut_account_menu_new (GList *ac_list,
GCallback callback,
gpointer data);
+PangoFontDescription *default_font(void);
void gtkut_widget_set_small_font_size(GtkWidget *widget);
GtkWidget *gtkut_get_focused_child (GtkContainer *parent);
diff --git a/src/main.c b/src/main.c
@@ -59,7 +59,6 @@
#include "prefs_account.h"
#include "prefs_actions.h"
#include "prefs_ext_prog.h"
-#include "prefs_fonts.h"
#include "prefs_message.h"
#include "prefs_receive.h"
#include "prefs_quote.h"
@@ -404,7 +403,6 @@ int main(int argc, char *argv[])
gboolean mainwin_shown = FALSE;
gint ret;
-
sc_starting = TRUE;
if (!claws_init(&argc, &argv)) {
@@ -497,7 +495,6 @@ int main(int argc, char *argv[])
prefs_common_read_config();
prefs_themes_init();
- prefs_fonts_init();
prefs_ext_prog_init();
prefs_wrapping_init();
prefs_compose_writing_init();
@@ -807,7 +804,6 @@ static void exit_claws(MainWindow *mainwin)
addressbook_destroy();
prefs_themes_done();
- prefs_fonts_done();
prefs_ext_prog_done();
prefs_wrapping_done();
prefs_compose_writing_done();
diff --git a/src/mainwindow.c b/src/mainwindow.c
@@ -1700,7 +1700,6 @@ static gboolean reflect_prefs_timeout_cb(gpointer data)
toolbar_update(TOOLBAR_MAIN, mainwin);
messageview_reflect_prefs_pixmap_theme();
compose_reflect_prefs_pixmap_theme();
- folderview_reinit_fonts(mainwin->folderview);
folderview_init(mainwin->folderview);
summary_reflect_prefs_pixmap_theme(mainwin->summaryview);
foldersel_reflect_prefs_pixmap_theme();
@@ -1726,8 +1725,6 @@ static gboolean reflect_prefs_timeout_cb(gpointer data)
else
gtk_widget_hide(mainwin->messageview->headerview->hbox);
textview_reflect_prefs(mainwin->messageview->mimeview->textview);
- folderview_reflect_prefs();
- summary_reflect_prefs();
summary_redisplay_msg(mainwin->summaryview);
if (prefs_common.layout_mode == SMALL_LAYOUT) {
if (mainwin->in_folder) {
diff --git a/src/messageview.c b/src/messageview.c
@@ -1693,23 +1693,9 @@ static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gin
void messageview_print(MsgInfo *msginfo, gboolean all_headers,
gint sel_start, gint sel_end, gint partnum)
{
- PangoFontDescription *font_desc = NULL;
MessageView *tmpview = messageview_create_with_new_window_visible(
mainwindow_get_mainwindow(), FALSE);
- if (prefs_common.use_different_print_font) {
- font_desc = pango_font_description_from_string
- (prefs_common.printfont);
- } else {
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- }
- if (font_desc) {
- gtk_widget_override_font(tmpview->mimeview->textview->text,
- font_desc);
- pango_font_description_free(font_desc);
- }
-
tmpview->all_headers = all_headers;
if (msginfo && messageview_show(tmpview, msginfo,
tmpview->all_headers) >= 0) {
diff --git a/src/prefs_common.c b/src/prefs_common.c
@@ -220,23 +220,6 @@ static PrefParam param[] = {
{"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
NULL, NULL, NULL},
- /* Display */
- {"message_font_gtk2", "Monospace 9",
- &prefs_common.textfont, P_STRING, NULL, NULL, NULL},
- {"print_font_gtk2", "Monospace 9",
- &prefs_common.printfont, P_STRING, NULL, NULL, NULL},
- {"small_font_gtk2", "Sans 9",
- &prefs_common.smallfont, P_STRING, NULL, NULL, NULL},
- {"normal_font_gtk2", "Sans 9",
- &prefs_common.normalfont, P_STRING, NULL, NULL, NULL},
- {"bold_font_gtk2", "Sans Bold 9",
- &prefs_common.boldfont, P_STRING, NULL, NULL, NULL},
-
- {"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
- NULL, NULL, NULL},
- {"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
- NULL, NULL, NULL},
-
/* image viewer */
{"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
NULL, NULL, NULL},
diff --git a/src/prefs_common.h b/src/prefs_common.h
@@ -213,16 +213,6 @@ struct _PrefsCommon
gboolean redirect_keep_from;
gchar *quote_chars;
- /* fonts */
- gchar *textfont;
- gchar *printfont;
- gchar *boldfont;
- gchar *normalfont;
- gchar *smallfont;
- gchar *titlefont;
- gboolean use_different_print_font;
- gboolean derive_from_normal_font;
-
/* program colors */
GdkRGBA color[COL_LAST_COLOR_INDEX];
diff --git a/src/prefs_fonts.c b/src/prefs_fonts.c
@@ -1,269 +0,0 @@
-/*
- * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 2003-2019 the Claws Mail Team and Hiroyuki Yamamoto
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#include "claws-features.h"
-#endif
-
-#include "defs.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-
-#include "prefs_common.h"
-#include "prefs_gtk.h"
-
-#include "gtk/prefswindow.h"
-
-typedef struct _FontsPage
-{
- PrefsPage page;
-
- GtkWidget *window; /* do not modify */
-
- GtkWidget *entry_folderview_smallfont;
- GtkWidget *entry_folderview_normalfont;
- GtkWidget *entry_folderview_boldfont;
- GtkWidget *entry_messageviewfont;
- GtkWidget *derive_from_normalfont_checkbutton;
- GtkWidget *print_checkbutton;
- GtkWidget *entry_messageprintfont;
-} FontsPage;
-
-static void prefs_fonts_create_widget(PrefsPage *_page, GtkWindow *window,
- gpointer data)
-{
- FontsPage *prefs_fonts = (FontsPage *) _page;
-
- GtkWidget *table;
- GtkWidget *entry_folderview_smallfont;
- GtkWidget *entry_folderview_normalfont;
- GtkWidget *entry_folderview_boldfont;
- GtkWidget *entry_messageviewfont;
- GtkWidget *tmplabel;
- GtkWidget *entry_messageprintfont;
- GtkWidget *print_checkbutton;
- GtkWidget *derive_from_normalfont_checkbutton;
- GtkWidget *vbox;
- gint row = 0;
-
- table = gtk_grid_new();
- gtk_widget_show(table);
- gtk_container_set_border_width(GTK_CONTAINER(table), VBOX_BORDER);
- gtk_grid_set_row_spacing(GTK_GRID(table), 4);
- gtk_grid_set_column_spacing(GTK_GRID(table), 8);
-
- /* normal font label */
- tmplabel = gtk_label_new (_("Folder and Message Lists"));
- gtk_widget_show (tmplabel);
- gtk_label_set_justify(GTK_LABEL(tmplabel), GTK_JUSTIFY_RIGHT);
- gtk_label_set_xalign(GTK_LABEL(tmplabel), 1.0);
- gtk_grid_attach(GTK_GRID(table), tmplabel, 0, row, 1, 1);
-
- /* normal font button */
- entry_folderview_normalfont = gtk_font_button_new_with_font (prefs_common.normalfont);
- g_object_set(G_OBJECT(entry_folderview_normalfont),
- "use-font", TRUE,
- NULL);
- gtk_widget_show (entry_folderview_normalfont);
- gtk_grid_attach(GTK_GRID(table), entry_folderview_normalfont, 1, row, 1, 1);
- gtk_widget_set_hexpand(entry_folderview_normalfont, TRUE);
- gtk_widget_set_halign(entry_folderview_normalfont, GTK_ALIGN_FILL);
- row++;
-
- /* message font label */
- tmplabel = gtk_label_new (_("Message"));
- gtk_widget_show (tmplabel);
- gtk_label_set_justify(GTK_LABEL(tmplabel), GTK_JUSTIFY_RIGHT);
- gtk_label_set_xalign(GTK_LABEL(tmplabel), 1.0);
- gtk_grid_attach(GTK_GRID(table), tmplabel, 0, row, 1, 1);
-
- /* message font button */
- entry_messageviewfont = gtk_font_button_new_with_font (prefs_common.textfont);
- g_object_set(G_OBJECT(entry_messageviewfont),
- "use-font", TRUE,
- NULL);
- gtk_widget_show (entry_messageviewfont);
- gtk_grid_attach(GTK_GRID(table), entry_messageviewfont, 1, row, 1, 1);
- gtk_widget_set_hexpand(entry_messageviewfont, TRUE);
- gtk_widget_set_halign(entry_messageviewfont, GTK_ALIGN_FILL);
- row++;
-
- vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, VSPACING_NARROW);
- gtk_widget_show(vbox);
- gtk_grid_attach(GTK_GRID(table), vbox, 0, row, 1, 1);
- row++;
-
- /* derive from normal font check button */
- derive_from_normalfont_checkbutton = gtk_check_button_new_with_label(_("Derive small and bold fonts from Folder and Message Lists font"));
- gtk_widget_show(derive_from_normalfont_checkbutton);
- gtk_grid_attach(GTK_GRID(table), derive_from_normalfont_checkbutton, 0, row, 2, 1);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(derive_from_normalfont_checkbutton),
- prefs_common.derive_from_normal_font);
- row++;
-
- /* small font label */
- tmplabel = gtk_label_new (_("Small"));
- gtk_widget_show (tmplabel);
- gtk_grid_attach(GTK_GRID(table), tmplabel, 0, row, 1, 1);
- gtk_label_set_justify(GTK_LABEL(tmplabel), GTK_JUSTIFY_RIGHT);
- gtk_label_set_xalign(GTK_LABEL(tmplabel), 1.0);
- SET_TOGGLE_SENSITIVITY_REVERSE (derive_from_normalfont_checkbutton, tmplabel);
-
- /* small font button */
- entry_folderview_smallfont = gtk_font_button_new_with_font (prefs_common.smallfont);
- g_object_set(G_OBJECT(entry_folderview_smallfont),
- "use-font", TRUE,
- NULL);
- gtk_widget_show (entry_folderview_smallfont);
- gtk_grid_attach(GTK_GRID(table), entry_folderview_smallfont, 1, row, 1, 1);
- gtk_widget_set_hexpand(entry_folderview_smallfont, TRUE);
- gtk_widget_set_halign(entry_folderview_smallfont, GTK_ALIGN_FILL);
- SET_TOGGLE_SENSITIVITY_REVERSE (derive_from_normalfont_checkbutton, entry_folderview_smallfont);
- row++;
-
- /* bold font label */
- tmplabel = gtk_label_new (_("Bold"));
- gtk_widget_show (tmplabel);
- gtk_label_set_justify(GTK_LABEL(tmplabel), GTK_JUSTIFY_RIGHT);
- gtk_label_set_xalign(GTK_LABEL(tmplabel), 1.0);
- gtk_grid_attach(GTK_GRID(table), tmplabel, 0, row, 1, 1);
- SET_TOGGLE_SENSITIVITY_REVERSE (derive_from_normalfont_checkbutton, tmplabel);
-
- /* bold font button */
- entry_folderview_boldfont = gtk_font_button_new_with_font (prefs_common.boldfont);
- g_object_set(G_OBJECT(entry_folderview_boldfont),
- "use-font", TRUE,
- NULL);
- gtk_widget_show (entry_folderview_boldfont);
- gtk_grid_attach(GTK_GRID(table), entry_folderview_boldfont, 1, row, 1, 1);
- gtk_widget_set_hexpand(entry_folderview_boldfont, TRUE);
- gtk_widget_set_halign(entry_folderview_boldfont, GTK_ALIGN_FILL);
- SET_TOGGLE_SENSITIVITY_REVERSE (derive_from_normalfont_checkbutton, entry_folderview_boldfont);
- row++;
-
- /* print check button */
- print_checkbutton = gtk_check_button_new_with_label(_("Use different font for printing"));
- gtk_widget_show(print_checkbutton);
- gtk_grid_attach(GTK_GRID(table), print_checkbutton, 0, row, 2, 1);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(print_checkbutton),
- prefs_common.use_different_print_font);
- row++;
-
- /* print font label */
- tmplabel = gtk_label_new (_("Message Printing"));
- gtk_widget_show (tmplabel);
- gtk_label_set_justify(GTK_LABEL(tmplabel), GTK_JUSTIFY_RIGHT);
- gtk_label_set_xalign(GTK_LABEL(tmplabel), 1.0);
- gtk_grid_attach(GTK_GRID(table), tmplabel, 0, row, 1, 1);
- SET_TOGGLE_SENSITIVITY (print_checkbutton, tmplabel);
-
- /* print font button */
- entry_messageprintfont = gtk_font_button_new_with_font (prefs_common.printfont);
- g_object_set(G_OBJECT(entry_messageprintfont),
- "use-font", TRUE,
- NULL);
- gtk_widget_show (entry_messageprintfont);
- gtk_grid_attach(GTK_GRID(table), entry_messageprintfont, 1, row, 1, 1);
- gtk_widget_set_hexpand(entry_messageprintfont, TRUE);
- gtk_widget_set_halign(entry_messageprintfont, GTK_ALIGN_FILL);
- SET_TOGGLE_SENSITIVITY (print_checkbutton, entry_messageprintfont);
- row++;
-
- prefs_fonts->window = GTK_WIDGET(window);
- prefs_fonts->entry_folderview_smallfont = entry_folderview_smallfont;
- prefs_fonts->entry_folderview_normalfont = entry_folderview_normalfont;
- prefs_fonts->entry_folderview_boldfont = entry_folderview_boldfont;
- prefs_fonts->entry_messageviewfont = entry_messageviewfont;
- prefs_fonts->derive_from_normalfont_checkbutton = derive_from_normalfont_checkbutton;
- prefs_fonts->entry_messageprintfont = entry_messageprintfont;
- prefs_fonts->print_checkbutton = print_checkbutton;
-
- prefs_fonts->page.widget = table;
-}
-
-static void prefs_fonts_save(PrefsPage *_page)
-{
- FontsPage *fonts = (FontsPage *) _page;
-
- g_free(prefs_common.boldfont);
- prefs_common.boldfont = g_strdup(gtk_font_chooser_get_font
- (GTK_FONT_CHOOSER(fonts->entry_folderview_boldfont)));
-
- g_free(prefs_common.normalfont);
- prefs_common.normalfont = g_strdup(gtk_font_chooser_get_font
- (GTK_FONT_CHOOSER(fonts->entry_folderview_normalfont)));
-
- g_free(prefs_common.smallfont);
- prefs_common.smallfont = g_strdup(gtk_font_chooser_get_font
- (GTK_FONT_CHOOSER(fonts->entry_folderview_smallfont)));
-
- g_free(prefs_common.textfont);
- prefs_common.textfont = g_strdup(gtk_font_chooser_get_font
- (GTK_FONT_CHOOSER(fonts->entry_messageviewfont)));
-
- prefs_common.derive_from_normal_font = gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON(fonts->derive_from_normalfont_checkbutton));
-
- g_free(prefs_common.printfont);
- prefs_common.printfont = g_strdup(gtk_font_chooser_get_font
- (GTK_FONT_CHOOSER(fonts->entry_messageprintfont)));
- prefs_common.use_different_print_font = gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON(fonts->print_checkbutton));
-
- main_window_reflect_prefs_all();
-}
-
-static void prefs_fonts_destroy_widget(PrefsPage *_page)
-{
- /* FontsPage *fonts = (FontsPage *) _page; */
-
-}
-
-FontsPage *prefs_fonts;
-
-void prefs_fonts_init(void)
-{
- FontsPage *page;
- static gchar *path[3];
-
- path[0] = _("Display");
- path[1] = _("Fonts");
- path[2] = NULL;
-
- page = g_new0(FontsPage, 1);
- page->page.path = path;
- page->page.create_widget = prefs_fonts_create_widget;
- page->page.destroy_widget = prefs_fonts_destroy_widget;
- page->page.save_page = prefs_fonts_save;
- page->page.weight = 135.0;
- prefs_gtk_register_page((PrefsPage *) page);
- prefs_fonts = page;
-}
-
-void prefs_fonts_done(void)
-{
- prefs_gtk_unregister_page((PrefsPage *) prefs_fonts);
- g_free(prefs_fonts);
-}
diff --git a/src/prefs_fonts.h b/src/prefs_fonts.h
@@ -1,26 +0,0 @@
-/*
- * Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 2003-2012 Hiroyuki Yamamoto and the Claws Mail team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef PREFS_FONTS_H
-#define PREFS_FONTS_H
-
-void prefs_fonts_init (void);
-void prefs_fonts_done (void);
-
-#endif /* PREFS_FONTS_H */
diff --git a/src/printing.c b/src/printing.c
@@ -838,6 +838,9 @@ static void cb_preview_request_page_setup(GtkPrintOperation *op,
GTK_UNIT_INCH);
}
+/* GTK default is always available */
+#define PRINT_FONT "Sans 11"
+
static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintContext *context,
gpointer user_data)
{
@@ -846,7 +849,6 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
double page_height;
GList *page_breaks;
PrintData *print_data;
- PangoFontDescription *desc;
int start, ii;
PangoLayoutIter *iter;
gint header_end_pos;
@@ -867,14 +869,10 @@ static void printing_textview_cb_begin_print(GtkPrintOperation *op, GtkPrintCont
if (print_data->layout == NULL)
print_data->layout = gtk_print_context_create_pango_layout(context);
- if (prefs_common.use_different_print_font)
- desc = pango_font_description_from_string(prefs_common.printfont);
- else
- desc = pango_font_description_copy(
- pango_context_get_font_description(print_data->pango_context));
+ PangoFontDescription *font = pango_font_description_copy(pango_context_get_font_description(print_data->pango_context));
- pango_layout_set_font_description(print_data->layout, desc);
- pango_font_description_free(desc);
+ pango_layout_set_font_description(print_data->layout, font);
+ pango_font_description_free(font);
pango_layout_set_width(print_data->layout, width * PANGO_SCALE);
pango_layout_set_text(print_data->layout, (char *)print_data->to_print, -1);
diff --git a/src/quote_fmt.c b/src/quote_fmt.c
@@ -220,16 +220,6 @@ void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scrolledwin_format), 260);
text_format = gtk_text_view_new ();
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(text_format, font_desc);
- pango_font_description_free(font_desc);
- }
- }
gtk_widget_show(text_format);
gtk_container_add(GTK_CONTAINER(scrolledwin_format), text_format);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_format), TRUE);
@@ -334,16 +324,6 @@ void quotefmt_create_reply_fmt_widgets(GtkWindow *parent_window,
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scrolledwin_quotefmt), 260);
text_quotefmt = gtk_text_view_new ();
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(text_quotefmt, font_desc);
- pango_font_description_free(font_desc);
- }
- }
gtk_widget_show(text_quotefmt);
gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt), text_quotefmt);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_quotefmt), TRUE);
@@ -445,16 +425,6 @@ void quotefmt_create_forward_fmt_widgets(GtkWindow *parent_window,
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scrolledwin_quotefmt), 260);
text_fw_quotefmt = gtk_text_view_new ();
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(text_fw_quotefmt, font_desc);
- pango_font_description_free(font_desc);
- }
- }
gtk_widget_show(text_fw_quotefmt);
gtk_container_add(GTK_CONTAINER(scrolledwin_quotefmt),
text_fw_quotefmt);
diff --git a/src/sourcewindow.c b/src/sourcewindow.c
@@ -97,11 +97,6 @@ SourceWindow *source_window_create(void)
text = gtk_text_view_new();
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD_CHAR);
gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE);
- if (!font_desc && prefs_common.textfont)
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc)
- gtk_widget_override_font(text, font_desc);
gtk_container_add(GTK_CONTAINER(scrolledwin), text);
gtk_widget_show(text);
diff --git a/src/summaryview.c b/src/summaryview.c
@@ -799,55 +799,6 @@ void summary_relayout(SummaryView *summaryview)
quicksearch_hide(summaryview->quicksearch);
}
-static void summary_set_fonts(SummaryView *summaryview)
-{
- PangoFontDescription *font_desc;
- gint size;
-
- font_desc = pango_font_description_from_string(NORMAL_FONT);
- if (font_desc) {
- gtk_widget_override_font(summaryview->ctree, font_desc);
- pango_font_description_free(font_desc);
- }
-
- if (!bold_style) {
- bold_style = gtk_style_copy
- (gtk_widget_get_style(summaryview->ctree));
-
- if (prefs_common.derive_from_normal_font || !BOLD_FONT) {
- font_desc = pango_font_description_from_string(NORMAL_FONT);
- if (font_desc) {
- pango_font_description_free(bold_style->font_desc);
- bold_style->font_desc = font_desc;
- }
- pango_font_description_set_weight
- (bold_style->font_desc, PANGO_WEIGHT_BOLD);
- } else {
- font_desc = pango_font_description_from_string(BOLD_FONT);
- if (font_desc) {
- pango_font_description_free(bold_style->font_desc);
- bold_style->font_desc = font_desc;
- }
- }
- }
-
- if (prefs_common.derive_from_normal_font || !SMALL_FONT) {
- font_desc = pango_font_description_new();
- size = pango_font_description_get_size
- (gtk_widget_get_style(summaryview->ctree)->font_desc);
- pango_font_description_set_size(font_desc, size * PANGO_SCALE_SMALL);
- } else {
- font_desc = pango_font_description_from_string(SMALL_FONT);
- }
- if (font_desc) {
- gtk_widget_override_font(summaryview->statlabel_folder, font_desc);
- gtk_widget_override_font(summaryview->statlabel_select, font_desc);
- gtk_widget_override_font(summaryview->statlabel_msgs, font_desc);
- pango_font_description_free(font_desc);
- }
-
-}
-
static void summary_set_folder_pixmap(SummaryView *summaryview, StockPixmap icon)
{
GtkWidget *pixmap;
@@ -894,8 +845,6 @@ void summary_init(SummaryView *summaryview)
stock_pixbuf_gdk(STOCK_PIXMAP_MOVED, &movedxpm);
stock_pixbuf_gdk(STOCK_PIXMAP_COPIED, &copiedxpm);
- summary_set_fonts(summaryview);
-
summary_set_folder_pixmap(summaryview, STOCK_PIXMAP_DIR_OPEN);
pixmap = stock_pixmap_widget(STOCK_PIXMAP_QUICKSEARCH);
@@ -2771,54 +2720,6 @@ static void summary_set_column_titles(SummaryView *summaryview)
}
}
-void summary_reflect_prefs(void)
-{
- static gchar *last_smallfont = NULL;
- static gchar *last_normalfont = NULL;
- static gchar *last_boldfont = NULL;
- static gboolean last_derive = 0;
- gboolean update_font = FALSE;
- SummaryView *summaryview = NULL;
-
- if (!mainwindow_get_mainwindow())
- return;
- summaryview = mainwindow_get_mainwindow()->summaryview;
-
- if (!last_smallfont || strcmp(last_smallfont, SMALL_FONT) ||
- !last_normalfont || strcmp(last_normalfont, NORMAL_FONT) ||
- !last_boldfont || strcmp(last_boldfont, BOLD_FONT) ||
- last_derive != prefs_common.derive_from_normal_font)
- update_font = TRUE;
-
- g_free(last_smallfont);
- last_smallfont = g_strdup(SMALL_FONT);
- g_free(last_normalfont);
- last_normalfont = g_strdup(NORMAL_FONT);
- g_free(last_boldfont);
- last_boldfont = g_strdup(BOLD_FONT);
- last_derive = prefs_common.derive_from_normal_font;
-
-#define STYLE_FREE(s) \
- if (s != NULL) { \
- g_object_unref(s); \
- s = NULL; \
- }
-
- if (update_font) {
- STYLE_FREE(bold_style);
- STYLE_FREE(bold_style);
- summary_set_fonts(summaryview);
- }
-
-#undef STYLE_FREE
-
- summary_set_column_titles(summaryview);
- summary_relayout(summaryview);
-
- if (summaryview->folder_item)
- summary_show(summaryview, summaryview->folder_item, FALSE);
-}
-
void summary_sort(SummaryView *summaryview,
FolderSortKey sort_key, FolderSortType sort_type)
{
@@ -5911,7 +5812,6 @@ void summary_set_column_order(SummaryView *summaryview)
gtk_widget_destroy(summaryview->ctree);
summaryview->ctree = ctree = summary_ctree_create(summaryview);
- summary_set_fonts(summaryview);
summary_set_column_titles(summaryview);
gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW(scrolledwin),
GTK_CMCLIST(ctree)->hadjustment);
diff --git a/src/summaryview.h b/src/summaryview.h
@@ -314,7 +314,6 @@ void summary_set_prefs_from_folderitem
void summary_save_prefs_to_folderitem
(SummaryView *summaryview, FolderItem *item);
gint summaryview_export_mbox_list (SummaryView *summaryview);
-void summary_reflect_prefs(void);
void summaryview_activate_quicksearch(SummaryView *summaryview, gboolean show);
void summary_set_menu_sensitive (SummaryView *summaryview);
void summary_relayout(SummaryView *summaryview);
diff --git a/src/textview.c b/src/textview.c
@@ -111,21 +111,9 @@ static GdkCursor *hand_cursor = NULL;
static GdkCursor *text_cursor = NULL;
static GdkCursor *watch_cursor= NULL;
-#define TEXTVIEW_FONT_SIZE_STEP 15 /* pango font zoom level change granularity in % */
-#define TEXTVIEW_FONT_SIZE_MIN -75 /* this gives 5 zoom out steps at 15% */
-#define TEXTVIEW_FONT_SIZE_MAX 3100 /* this gives 200 zoom in steps at 15% */
-#define TEXTVIEW_FONT_SIZE_UNSET -666 /* default value when unset (must be lower than TEXTVIEW_FONT_SIZE_MIN */
-
#define WIDTH 48
#define HEIGHT 48
-/* font size in session (will apply to next message views we open */
-/* must be lower than TEXTVIEW_FONT_SIZE_MIN */
-static gint textview_font_size_percent = TEXTVIEW_FONT_SIZE_UNSET;
-static gint textview_font_size_default = TEXTVIEW_FONT_SIZE_UNSET;
-
-static void textview_set_font_zoom(TextView *textview);
-
#define TEXTVIEW_STATUSBAR_PUSH(textview, str) \
{ if (textview->messageview->statusbar) \
gtk_statusbar_push(GTK_STATUSBAR(textview->messageview->statusbar), \
@@ -162,20 +150,9 @@ static GPtrArray *textview_scan_header (TextView *textview,
static void textview_show_header (TextView *textview,
GPtrArray *headers);
-static void textview_zoom(GtkWidget *widget, gboolean zoom_in);
-static void textview_zoom_in(GtkWidget *widget, gpointer data);
-static void textview_zoom_out(GtkWidget *widget, gpointer data);
-static void textview_zoom_reset(GtkWidget *widget, gpointer data);
-
static gint textview_key_pressed (GtkWidget *widget,
GdkEventKey *event,
TextView *textview);
-static gboolean textview_scrolled(GtkWidget *widget,
- GdkEvent *_event,
- gpointer user_data);
-static void textview_populate_popup(GtkTextView *self,
- GtkMenu *menu,
- gpointer user_data);
static gboolean textview_motion_notify (GtkWidget *widget,
GdkEventMotion *motion,
TextView *textview);
@@ -298,11 +275,6 @@ TextView *textview_create(void)
g_signal_connect(G_OBJECT(text), "size_allocate",
G_CALLBACK(textview_size_allocate_cb),
textview);
- g_signal_connect(G_OBJECT(text), "scroll-event",
- G_CALLBACK(textview_scrolled), textview);
- g_signal_connect(G_OBJECT(text), "populate-popup",
- G_CALLBACK(textview_populate_popup), textview);
-
gtk_widget_show(scrolledwin);
@@ -312,7 +284,6 @@ TextView *textview_create(void)
gtk_widget_show(vbox);
-
textview->ui_manager = gtk_ui_manager_new();
textview->link_action_group = cm_menu_create_action_group_full(textview->ui_manager,
"TextviewPopupLink",
@@ -361,23 +332,10 @@ static void textview_create_tags(GtkTextView *text, TextView *textview)
{
GtkTextBuffer *buffer;
GtkTextTag *tag, *qtag;
- static PangoFontDescription *font_desc, *bold_font_desc;
-
- if (!font_desc)
- font_desc = pango_font_description_from_string
- (NORMAL_FONT);
-
- if (!bold_font_desc) {
- if (prefs_common.derive_from_normal_font || !BOLD_FONT) {
- bold_font_desc = pango_font_description_from_string
- (NORMAL_FONT);
- pango_font_description_set_weight
- (bold_font_desc, PANGO_WEIGHT_BOLD);
- } else {
- bold_font_desc = pango_font_description_from_string
- (BOLD_FONT);
- }
- }
+
+ PangoFontDescription *font_desc = default_font();
+ PangoFontDescription *bold_font_desc = default_font();
+ pango_font_description_set_weight(bold_font_desc, PANGO_WEIGHT_BOLD);
buffer = gtk_text_view_get_buffer(text);
@@ -469,10 +427,9 @@ static void textview_create_tags(GtkTextView *text, TextView *textview)
G_CALLBACK(textview_uri_button_pressed), textview);
g_signal_connect(G_OBJECT(tag), "event",
G_CALLBACK(textview_uri_button_pressed), textview);
-/* if (font_desc)
- pango_font_description_free(font_desc);
- if (bold_font_desc)
- pango_font_description_free(bold_font_desc);*/
+
+ pango_font_description_free(font_desc);
+ pango_font_description_free(bold_font_desc);
}
void textview_init(TextView *textview)
@@ -553,7 +510,6 @@ static void textview_update_message_colors(TextView *textview)
void textview_reflect_prefs(TextView *textview)
{
- textview_set_font(textview, NULL);
textview_update_message_colors(textview);
}
@@ -745,7 +701,6 @@ void textview_show_error(TextView *textview)
GtkTextBuffer *buffer;
GtkTextIter iter;
- textview_set_font(textview, NULL);
textview_clear(textview);
text = GTK_TEXT_VIEW(textview->text);
@@ -768,7 +723,6 @@ void textview_show_info(TextView *textview, const gchar *info_str)
GtkTextBuffer *buffer;
GtkTextIter iter;
- textview_set_font(textview, NULL);
textview_clear(textview);
text = GTK_TEXT_VIEW(textview->text);
@@ -797,7 +751,6 @@ void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
else
ui_manager = textview->messageview->mainwin->ui_manager;
- textview_set_font(textview, NULL);
textview_clear(textview);
text = GTK_TEXT_VIEW(textview->text);
@@ -894,9 +847,6 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo)
charset = CS_GB18030;
}
- textview_set_font(textview, charset);
- textview_set_font_zoom(textview);
-
conv = conv_code_converter_new(charset);
procmime_force_encoding(textview->messageview->forced_encoding);
@@ -1634,58 +1584,6 @@ void textview_destroy(TextView *textview)
g_free(textview);
}
-#define CHANGE_TAG_FONT(tagname, font) { \
- tag = gtk_text_tag_table_lookup(tags, tagname); \
- if (tag) \
- g_object_set(G_OBJECT(tag), "font-desc", font, NULL); \
-}
-
-void textview_set_font(TextView *textview, const gchar *codeset)
-{
- GtkTextTag *tag;
- GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview->text));
- GtkTextTagTable *tags = gtk_text_buffer_get_tag_table(buffer);
- PangoFontDescription *font_desc, *bold_font_desc;
-
- font_desc = pango_font_description_from_string
- (NORMAL_FONT);
- if (font_desc) {
- gtk_widget_override_font(textview->text, font_desc);
- CHANGE_TAG_FONT("header", font_desc);
- CHANGE_TAG_FONT("hlink", font_desc);
- pango_font_description_free(font_desc);
- }
- if (prefs_common.derive_from_normal_font || !BOLD_FONT) {
- bold_font_desc = pango_font_description_from_string
- (NORMAL_FONT);
- if (bold_font_desc)
- pango_font_description_set_weight
- (bold_font_desc, PANGO_WEIGHT_BOLD);
- } else {
- bold_font_desc = pango_font_description_from_string
- (BOLD_FONT);
- }
- if (bold_font_desc) {
- CHANGE_TAG_FONT("header_title", bold_font_desc);
- pango_font_description_free(bold_font_desc);
- }
-
- if (prefs_common.textfont) {
- PangoFontDescription *font_desc;
-
- font_desc = pango_font_description_from_string
- (prefs_common.textfont);
- if (font_desc) {
- gtk_widget_override_font(textview->text, font_desc);
- pango_font_description_free(font_desc);
- }
- }
- gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(textview->text),
- prefs_common.line_space / 2);
- gtk_text_view_set_pixels_below_lines(GTK_TEXT_VIEW(textview->text),
- prefs_common.line_space / 2);
-}
-
void textview_set_text(TextView *textview, const gchar *text)
{
GtkTextView *view;
@@ -2341,163 +2239,6 @@ static void textview_uri_update(TextView *textview, gint x, gint y)
}
}
-static void textview_set_font_zoom(TextView *textview)
-{
- PangoFontDescription *font;
- gint size;
-
- /* do nothing if no zoom level has been set */
- if (textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET)
- return;
-
- font = pango_font_description_from_string
- (prefs_common.textfont);
- cm_return_if_fail(font);
-
- if (textview_font_size_default == TEXTVIEW_FONT_SIZE_UNSET)
- textview_font_size_default = pango_font_description_get_size(font);
-
- size = textview_font_size_default + ( textview_font_size_default / 100 * textview_font_size_percent );
-
- pango_font_description_set_size(font, size);
- gtk_widget_override_font(textview->text, font);
- pango_font_description_free(font);
-}
-
-static void textview_zoom(GtkWidget *widget, gboolean zoom_in)
-{
- PangoContext *pctx;
- PangoFontDescription *font;
- gint size;
-
- pctx = gtk_widget_get_pango_context(widget);
- font = pango_context_get_font_description(pctx);
- size = pango_font_description_get_size(font);
-
- /* save the default font size first time before zooming */
- if (textview_font_size_default == TEXTVIEW_FONT_SIZE_UNSET)
- textview_font_size_default = size;
-
- if (textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET)
- textview_font_size_percent = 0;
-
- if (zoom_in) {
- if ((textview_font_size_percent + TEXTVIEW_FONT_SIZE_STEP ) <= TEXTVIEW_FONT_SIZE_MAX)
- textview_font_size_percent += TEXTVIEW_FONT_SIZE_STEP;
- } else {
- if ((textview_font_size_percent - TEXTVIEW_FONT_SIZE_STEP ) >= TEXTVIEW_FONT_SIZE_MIN)
- textview_font_size_percent -= TEXTVIEW_FONT_SIZE_STEP;
- }
- size = textview_font_size_default + ( textview_font_size_default / 100 * textview_font_size_percent );
-
- pango_font_description_set_size(font, size);
- gtk_widget_override_font(widget, font);
- gtk_widget_show(widget);
-}
-
-static void textview_zoom_in(GtkWidget *widget, gpointer data)
-{
- textview_zoom(GTK_WIDGET(data), TRUE);
-}
-
-static void textview_zoom_out(GtkWidget *widget, gpointer data)
-{
- textview_zoom(GTK_WIDGET(data), FALSE);
-}
-
-static void textview_zoom_reset(GtkWidget *widget, gpointer data)
-{
- PangoContext *pctx;
- PangoFontDescription *font;
- gint size;
-
- pctx = gtk_widget_get_pango_context(GTK_WIDGET(data));
- font = pango_context_get_font_description(pctx);
-
- /* reset and save the value for current session */
- if (textview_font_size_default == TEXTVIEW_FONT_SIZE_UNSET || textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET)
- return;
-
- textview_font_size_percent = 0;
- size = textview_font_size_default + ( textview_font_size_default / 100 * textview_font_size_percent );
-
- pango_font_description_set_size(font, size);
- gtk_widget_override_font(GTK_WIDGET(data), font);
- gtk_widget_show(GTK_WIDGET(data));
-}
-
-static void textview_populate_popup(GtkTextView* textview,
- GtkMenu *menu,
- gpointer user_data)
-{
- GtkWidget *menuitem;
-
- cm_return_if_fail(menu != NULL);
- cm_return_if_fail(GTK_IS_MENU_SHELL(menu));
-
- menuitem = gtk_separator_menu_item_new();
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- gtk_widget_show(menuitem);
-
- menuitem = gtk_menu_item_new_with_mnemonic(_("Zoom _In"));
- g_signal_connect(G_OBJECT(menuitem), "activate",
- G_CALLBACK(textview_zoom_in), textview);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- gtk_widget_set_sensitive(menuitem,
- textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET ||
- ((textview_font_size_percent + TEXTVIEW_FONT_SIZE_STEP ) <= TEXTVIEW_FONT_SIZE_MAX));
- gtk_widget_show(menuitem);
-
- menuitem = gtk_menu_item_new_with_mnemonic(_("Zoom _Out"));
- g_signal_connect(G_OBJECT(menuitem), "activate",
- G_CALLBACK(textview_zoom_out), textview);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- gtk_widget_set_sensitive(menuitem,
- textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET ||
- ((textview_font_size_percent - TEXTVIEW_FONT_SIZE_STEP ) >= TEXTVIEW_FONT_SIZE_MIN));
- gtk_widget_show(menuitem);
-
- menuitem = gtk_menu_item_new_with_mnemonic(_("Reset _zoom"));
- g_signal_connect(G_OBJECT(menuitem), "activate",
- G_CALLBACK(textview_zoom_reset), textview);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- gtk_widget_set_sensitive(menuitem,
- (textview_font_size_percent != TEXTVIEW_FONT_SIZE_UNSET && textview_font_size_percent != 0));
- gtk_widget_show(menuitem);
-}
-
-static gboolean textview_scrolled(GtkWidget *widget,
- GdkEvent *_event,
- gpointer user_data)
-{
- GdkEventScroll *event = (GdkEventScroll *)_event;
-
- /* Ctrl+mousewheel changes font size */
- if (event->state & GDK_CONTROL_MASK || event->state & GDK_SHIFT_MASK) {
-
- if (event->direction == GDK_SCROLL_UP) {
- textview_zoom(widget, TRUE);
- } else if (event->direction == GDK_SCROLL_DOWN) {
- textview_zoom(widget, FALSE);
- } else {
- gdouble x, y;
-
- if ((event->direction == GDK_SCROLL_SMOOTH) &&
- gdk_event_get_scroll_deltas((GdkEvent *)event, &x, &y)) {
- if (y < 0)
- textview_zoom(widget, TRUE);
- else
- if (y >0)
- textview_zoom(widget, FALSE);
- } else
- return FALSE; /* Scrolling left or right */
- }
- return TRUE;
- }
-
- return FALSE;
-}
-
static gboolean textview_get_uri_range(TextView *textview,
GtkTextIter *iter,
GtkTextTag *tag,
diff --git a/src/textview.h b/src/textview.h
@@ -38,7 +38,7 @@ struct _ClickableText
guint start;
guint end;
-
+
gboolean is_quote;
gint quote_level;
gboolean q_expanded;
@@ -99,8 +99,6 @@ void textview_show_mime_part (TextView *textview,
MimeInfo *partinfo);
void textview_clear (TextView *textview);
void textview_destroy (TextView *textview);
-void textview_set_font (TextView *textview,
- const gchar *codeset);
void textview_set_text (TextView *textview,
const gchar *text);
void textview_set_position (TextView *textview,
@@ -121,13 +119,13 @@ gboolean textview_search_string_backward (TextView *textview,
void textview_cursor_wait(TextView *textview);
void textview_cursor_normal(TextView *textview);
void textview_show_icon(TextView *textview, const gchar *stock_id);
-void textview_get_selection_offsets (TextView *textview,
- gint *sel_start,
+void textview_get_selection_offsets (TextView *textview,
+ gint *sel_start,
gint *sel_end);
-gboolean textview_uri_security_check (TextView *textview,
+gboolean textview_uri_security_check (TextView *textview,
ClickableText *uri,
gboolean copied);
-gchar *textview_get_visible_uri (TextView *textview,
+gchar *textview_get_visible_uri (TextView *textview,
ClickableText *uri);
#define TEXTVIEW_INSERT(str) \