[gtk+/gtk-3-22] widget: propagate scale factor upon reparenting a widget
- From: Lionel Landwerlin <llandwerlin src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-22] widget: propagate scale factor upon reparenting a widget
- Date: Thu, 16 Feb 2017 12:33:26 +0000 (UTC)
commit 977b26dcf5d23913c7c9598bb003fdbf4290cfbf
Author: Lionel Landwerlin <lionel g landwerlin intel com>
Date: Mon Jan 9 00:11:29 2017 +0000
widget: propagate scale factor upon reparenting a widget
When a widget is created, its default scale is the scale of the
primary screen (for instance 2). But once parented to another widget
its scale factor should be the one of its parent (if parented to a
widget on a screen at scale factor 1, it should be 1).
The problem is that we don't emit the notify::scale-factor signal when
reparenting happens.
https://bugzilla.gnome.org/show_bug.cgi?id=776821
gtk/gtkwidget.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 1e5749e..fb18504 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -616,6 +616,8 @@ struct _GtkStateData
{
guint flags_to_set;
guint flags_to_unset;
+
+ gint old_scale_factor;
};
/* --- prototypes --- */
@@ -8778,6 +8780,7 @@ gtk_widget_update_state_flags (GtkWidget *widget,
{
GtkStateData data;
+ data.old_scale_factor = gtk_widget_get_scale_factor (widget);
data.flags_to_set = flags_to_set;
data.flags_to_unset = flags_to_unset;
@@ -9436,6 +9439,8 @@ gtk_widget_set_sensitive (GtkWidget *widget,
{
GtkStateData data;
+ data.old_scale_factor = gtk_widget_get_scale_factor (widget);
+
if (sensitive)
{
data.flags_to_set = 0;
@@ -9531,6 +9536,8 @@ gtk_widget_set_parent (GtkWidget *widget,
return;
}
+ data.old_scale_factor = gtk_widget_get_scale_factor (widget);
+
/* keep this function in sync with gtk_menu_attach_to_widget()
*/
@@ -12791,6 +12798,7 @@ gtk_widget_propagate_state (GtkWidget *widget,
GtkWidgetPrivate *priv = widget->priv;
GtkStateFlags new_flags, old_flags = priv->state_flags;
GtkStateType old_state;
+ gint new_scale_factor = gtk_widget_get_scale_factor (widget);
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
old_state = gtk_widget_get_state (widget);
@@ -12815,6 +12823,9 @@ gtk_widget_propagate_state (GtkWidget *widget,
new_flags = priv->state_flags;
+ if (data->old_scale_factor != new_scale_factor)
+ _gtk_widget_scale_changed (widget);
+
if (old_flags != new_flags)
{
g_object_ref (widget);
@@ -12872,6 +12883,7 @@ gtk_widget_propagate_state (GtkWidget *widget,
GtkStateData child_data;
/* Make sure to only propagate the right states further */
+ child_data.old_scale_factor = new_scale_factor;
child_data.flags_to_set = data->flags_to_set & GTK_STATE_FLAGS_DO_PROPAGATE;
child_data.flags_to_unset = data->flags_to_unset & GTK_STATE_FLAGS_DO_PROPAGATE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]