1
0
forked from aniani/vim

patch 8.1.0249: GTK: when screen DPI changes Vim does not handle it

Problem:    GTK: when screen DPI changes Vim does not handle it.
Solution:   Handle the gtk-xft-dpi signal. (Roel van de Kraats,
            closes #2357)
This commit is contained in:
Bram Moolenaar
2018-08-07 20:01:40 +02:00
parent 8d8a65e389
commit 7ebf4e1c34
2 changed files with 34 additions and 0 deletions

View File

@@ -788,6 +788,29 @@ property_event(GtkWidget *widget,
} }
#endif /* defined(FEAT_CLIENTSERVER) */ #endif /* defined(FEAT_CLIENTSERVER) */
/*
* Handle changes to the "Xft/DPI" setting
*/
static void
gtk_settings_xft_dpi_changed_cb(GtkSettings *gtk_settings UNUSED,
GParamSpec *pspec UNUSED,
gpointer data UNUSED)
{
// Create a new PangoContext for this screen, and initialize it
// with the current font if necessary.
if (gui.text_context != NULL)
g_object_unref(gui.text_context);
gui.text_context = gtk_widget_create_pango_context(gui.mainwin);
pango_context_set_base_dir(gui.text_context, PANGO_DIRECTION_LTR);
if (gui.norm_font != NULL)
{
// force default font
gui_mch_init_font(*p_guifont == NUL ? NULL : p_guifont, FALSE);
gui_set_shellsize(TRUE, FALSE, RESIZE_BOTH);
}
}
#if GTK_CHECK_VERSION(3,0,0) #if GTK_CHECK_VERSION(3,0,0)
typedef gboolean timeout_cb_type; typedef gboolean timeout_cb_type;
@@ -4383,6 +4406,15 @@ gui_mch_init(void)
/* Pretend we don't have input focus, we will get an event if we do. */ /* Pretend we don't have input focus, we will get an event if we do. */
gui.in_focus = FALSE; gui.in_focus = FALSE;
// Handle changes to the "Xft/DPI" setting.
{
GtkSettings *gtk_settings =
gtk_settings_get_for_screen(gdk_screen_get_default());
g_signal_connect(gtk_settings, "notify::gtk-xft-dpi",
G_CALLBACK(gtk_settings_xft_dpi_changed_cb), NULL);
}
return OK; return OK;
} }

View File

@@ -794,6 +794,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
249,
/**/ /**/
248, 248,
/**/ /**/