inspector: Allow setting hidpi scale
This commit is contained in:
parent
c46b954dd0
commit
425d785de5
@ -55,7 +55,9 @@ struct _GtkInspectorGeneralPrivate
|
||||
GtkWidget *gtk_exe_prefix;
|
||||
GtkWidget *gtk_data_prefix;
|
||||
GtkWidget *gsettings_schema_dir;
|
||||
GtkWidget *hidpi_spin;
|
||||
GtkWidget *touchscreen_switch;
|
||||
GtkAdjustment *scale_adjustment;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorGeneral, gtk_inspector_general, GTK_TYPE_BOX)
|
||||
@ -156,9 +158,44 @@ update_touchscreen (GtkSwitch *sw, GParamSpec *pspec, GtkInspectorGeneral *gen)
|
||||
gtk_set_debug_flags (flags);
|
||||
}
|
||||
|
||||
#if defined (GDK_WINDOWING_X11) && defined (HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE)
|
||||
static void
|
||||
init_touch (GtkInspectorGeneral *gen)
|
||||
scale_changed (GtkAdjustment *adjustment, GtkInspectorGeneral *gen)
|
||||
{
|
||||
GdkDisplay *display;
|
||||
gint scale;
|
||||
|
||||
scale = gtk_adjustment_get_value (adjustment);
|
||||
display = gtk_widget_get_display (GTK_WIDGET (gen));
|
||||
gdk_x11_display_set_window_scale (display, scale);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
init_settings (GtkInspectorGeneral *gen)
|
||||
{
|
||||
#if defined (GDK_WINDOWING_X11) && defined (HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE)
|
||||
GdkScreen *screen;
|
||||
|
||||
screen = gtk_widget_get_screen (GTK_WIDGET (gen));
|
||||
if (GDK_IS_X11_SCREEN (screen))
|
||||
{
|
||||
gdouble scale;
|
||||
|
||||
scale = gdk_screen_get_monitor_scale_factor (screen, 0);
|
||||
gtk_adjustment_set_value (gen->priv->scale_adjustment, scale);
|
||||
g_signal_connect (gen->priv->scale_adjustment, "value-changed",
|
||||
G_CALLBACK (scale_changed), gen);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
gtk_adjustment_set_value (gen->priv->scale_adjustment, 1);
|
||||
gtk_widget_set_sensitive (gen->priv->hidpi_spin, FALSE);
|
||||
gtk_widget_set_tooltip_text (gen->priv->hidpi_spin,
|
||||
_("Backend does not support window scaling"));
|
||||
}
|
||||
|
||||
gtk_switch_set_active (GTK_SWITCH (gen->priv->touchscreen_switch), (gtk_get_debug_flags () & GTK_DEBUG_TOUCHSCREEN) != 0);
|
||||
g_signal_connect (gen->priv->touchscreen_switch, "notify::active",
|
||||
G_CALLBACK (update_touchscreen), gen);
|
||||
@ -179,7 +216,7 @@ gtk_inspector_general_init (GtkInspectorGeneral *gen)
|
||||
gtk_widget_init_template (GTK_WIDGET (gen));
|
||||
init_version (gen);
|
||||
init_env (gen);
|
||||
init_touch (gen);
|
||||
init_settings (gen);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -197,6 +234,8 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_exe_prefix);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gtk_data_prefix);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, gsettings_schema_dir);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, hidpi_spin);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, scale_adjustment);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorGeneral, touchscreen_switch);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface domain="gtk30">
|
||||
<object class="GtkAdjustment" id="scale_adjustment">
|
||||
<property name="lower">1</property>
|
||||
<property name="upper">2</property>
|
||||
<property name="step-increment">1</property>
|
||||
<property name="page-increment">1</property>
|
||||
</object>
|
||||
<template class="GtkInspectorGeneral" parent="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="margin">60</property>
|
||||
@ -279,13 +285,42 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="touch_frame">
|
||||
<object class="GtkFrame" id="settings_frame">
|
||||
<property name="visible">True</property>
|
||||
<property name="halign">center</property>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="margin">10</property>
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="hidpi_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Window scaling</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="hidpi_spin">
|
||||
<property name="visible">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="adjustment">scale_adjustment</property>
|
||||
<property name="snap-to-ticks">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
@ -338,7 +373,7 @@
|
||||
<widgets>
|
||||
<widget name="version_frame"/>
|
||||
<widget name="env_frame"/>
|
||||
<widget name="touch_frame"/>
|
||||
<widget name="settings_frame"/>
|
||||
</widgets>
|
||||
</object>
|
||||
</interface>
|
||||
|
Loading…
Reference in New Issue
Block a user