gtkwidget: Add private set_pass_through() call

We could eventually support pointer-event in CSS here, in the mean
time add this call to replace the GdkWindow API.
This commit is contained in:
Carlos Garnacho
2017-04-06 13:55:35 +02:00
parent 6c47938b00
commit e2c38ddc22
2 changed files with 19 additions and 1 deletions

View File

@@ -989,7 +989,8 @@ gtk_widget_real_pick (GtkWidget *widget,
{
gdouble tx = x, ty = y;
if (!gtk_widget_is_sensitive (child) ||
if (gtk_widget_get_pass_through (child) ||
!gtk_widget_is_sensitive (child) ||
!gtk_widget_is_drawable (child))
continue;
@@ -15683,3 +15684,16 @@ gtk_widget_get_cursor (GtkWidget *widget)
{
return widget->priv->cursor;
}
void
gtk_widget_set_pass_through (GtkWidget *widget,
gboolean pass_through)
{
widget->priv->pass_through = !!pass_through;
}
gboolean
gtk_widget_get_pass_through (GtkWidget *widget)
{
return widget->priv->pass_through;
}

View File

@@ -70,6 +70,7 @@ struct _GtkWidgetPrivate
guint child_visible : 1;
guint multidevice : 1;
guint has_shape_mask : 1;
guint pass_through : 1;
/* Queue-resize related flags */
guint resize_needed : 1; /* queue_resize() has been called but no get_preferred_size() yet */
@@ -323,6 +324,9 @@ void gtk_widget_set_cursor (GtkWidget *widget,
GdkCursor *cursor);
GdkCursor * gtk_widget_get_cursor (GtkWidget *widget);
void gtk_widget_set_pass_through (GtkWidget *widget,
gboolean pass_through);
gboolean gtk_widget_get_pass_through (GtkWidget *widget);
/* inline getters */