forked from AuroraMiddleware/gtk
gdk: Drop supports_multidevice API
Crossing events are now detached from widget state, all tricky consequences from getting multiple crossing events are now somewhat moot. Resort to sending all generated crossing events, and drop this barely (ever?) used API.
This commit is contained in:
parent
c1d90273ca
commit
59a8106373
@ -207,8 +207,6 @@ GdkModifierType
|
||||
GDK_MODIFIER_MASK
|
||||
|
||||
<SUBSECTION>
|
||||
gdk_surface_get_support_multidevice
|
||||
gdk_surface_set_support_multidevice
|
||||
gdk_surface_get_device_cursor
|
||||
gdk_surface_set_device_cursor
|
||||
|
||||
|
@ -4501,8 +4501,6 @@ gtk_widget_has_visible_focus
|
||||
gtk_widget_is_drawable
|
||||
gtk_widget_set_receives_default
|
||||
gtk_widget_get_receives_default
|
||||
gtk_widget_set_support_multidevice
|
||||
gtk_widget_get_support_multidevice
|
||||
gtk_widget_get_realized
|
||||
gtk_widget_get_mapped
|
||||
gtk_widget_device_is_shadowed
|
||||
|
@ -2186,53 +2186,6 @@ gdk_surface_beep (GdkSurface *surface)
|
||||
gdk_display_beep (surface->display);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_surface_set_support_multidevice:
|
||||
* @surface: a #GdkSurface.
|
||||
* @support_multidevice: %TRUE to enable multidevice support in @surface.
|
||||
*
|
||||
* This function will enable multidevice features in @surface.
|
||||
*
|
||||
* Multidevice aware surfaces will need to handle properly multiple,
|
||||
* per device enter/leave events, device grabs and grab ownerships.
|
||||
**/
|
||||
void
|
||||
gdk_surface_set_support_multidevice (GdkSurface *surface,
|
||||
gboolean support_multidevice)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_SURFACE (surface));
|
||||
|
||||
if (GDK_SURFACE_DESTROYED (surface))
|
||||
return;
|
||||
|
||||
if (surface->support_multidevice == support_multidevice)
|
||||
return;
|
||||
|
||||
surface->support_multidevice = support_multidevice;
|
||||
|
||||
/* FIXME: What to do if called when some pointers are inside the surface ? */
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_surface_get_support_multidevice:
|
||||
* @surface: a #GdkSurface.
|
||||
*
|
||||
* Returns %TRUE if the surface is aware of the existence of multiple
|
||||
* devices.
|
||||
*
|
||||
* Returns: %TRUE if the surface handles multidevice features.
|
||||
**/
|
||||
gboolean
|
||||
gdk_surface_get_support_multidevice (GdkSurface *surface)
|
||||
{
|
||||
g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE);
|
||||
|
||||
if (GDK_SURFACE_DESTROYED (surface))
|
||||
return FALSE;
|
||||
|
||||
return surface->support_multidevice;
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_display_set_surface_under_pointer (GdkDisplay *display,
|
||||
GdkDevice *device,
|
||||
|
@ -213,12 +213,6 @@ void gdk_surface_freeze_updates (GdkSurface *surface);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_surface_thaw_updates (GdkSurface *surface);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_surface_set_support_multidevice (GdkSurface *surface,
|
||||
gboolean support_multidevice);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
gboolean gdk_surface_get_support_multidevice (GdkSurface *surface);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GdkFrameClock* gdk_surface_get_frame_clock (GdkSurface *surface);
|
||||
|
||||
|
@ -70,7 +70,6 @@ struct _GdkSurface
|
||||
|
||||
guint destroyed : 2;
|
||||
|
||||
guint support_multidevice : 1;
|
||||
guint in_update : 1;
|
||||
guint frame_clock_events_paused : 1;
|
||||
guint autohide : 1;
|
||||
|
@ -1885,32 +1885,15 @@ synth_crossing_for_grab_notify (GtkWidget *from,
|
||||
GdkDevice *device = devices[i];
|
||||
GdkSurface *from_surface, *to_surface;
|
||||
|
||||
/* Do not propagate events more than once to
|
||||
* the same surfaces if non-multidevice aware.
|
||||
*/
|
||||
if (!from)
|
||||
from_surface = NULL;
|
||||
else
|
||||
{
|
||||
from_surface = _gtk_widget_get_device_surface (from, device);
|
||||
|
||||
if (from_surface &&
|
||||
!gdk_surface_get_support_multidevice (from_surface) &&
|
||||
g_list_find (info->notified_surfaces, from_surface))
|
||||
from_surface = NULL;
|
||||
}
|
||||
from_surface = _gtk_widget_get_device_surface (from, device);
|
||||
|
||||
if (!to)
|
||||
to_surface = NULL;
|
||||
else
|
||||
{
|
||||
to_surface = _gtk_widget_get_device_surface (to, device);
|
||||
|
||||
if (to_surface &&
|
||||
!gdk_surface_get_support_multidevice (to_surface) &&
|
||||
g_list_find (info->notified_surfaces, to_surface))
|
||||
to_surface = NULL;
|
||||
}
|
||||
to_surface = _gtk_widget_get_device_surface (to, device);
|
||||
|
||||
if (from_surface || to_surface)
|
||||
{
|
||||
|
@ -3355,13 +3355,6 @@ gtk_widget_realize (GtkWidget *widget)
|
||||
|
||||
g_signal_emit (widget, widget_signals[REALIZE], 0);
|
||||
|
||||
if (priv->multidevice)
|
||||
{
|
||||
GdkSurface *surface = gtk_widget_get_surface (widget);
|
||||
|
||||
gdk_surface_set_support_multidevice (surface, TRUE);
|
||||
}
|
||||
|
||||
if (priv->context)
|
||||
gtk_style_context_set_scale (priv->context, gtk_widget_get_scale_factor (widget));
|
||||
else
|
||||
@ -7746,13 +7739,6 @@ gtk_widget_propagate_state (GtkWidget *widget,
|
||||
device = devices[i];
|
||||
surface = _gtk_widget_get_device_surface (widget, device);
|
||||
|
||||
/* Do not propagate more than once to the
|
||||
* same surface if non-multidevice aware.
|
||||
*/
|
||||
if (!gdk_surface_get_support_multidevice (surface) &&
|
||||
g_list_find (event_surfaces, surface))
|
||||
continue;
|
||||
|
||||
if (!gtk_widget_is_sensitive (widget))
|
||||
_gtk_widget_synthesize_crossing (widget, NULL, device,
|
||||
GDK_CROSSING_STATE_CHANGED);
|
||||
@ -10220,54 +10206,6 @@ gtk_widget_get_allocated_baseline (GtkWidget *widget)
|
||||
return priv->baseline - margin.top - border.top - padding.top;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_widget_get_support_multidevice:
|
||||
* @widget: a #GtkWidget
|
||||
*
|
||||
* Returns %TRUE if @widget is multiple pointer aware. See
|
||||
* gtk_widget_set_support_multidevice() for more information.
|
||||
*
|
||||
* Returns: %TRUE if @widget is multidevice aware.
|
||||
**/
|
||||
gboolean
|
||||
gtk_widget_get_support_multidevice (GtkWidget *widget)
|
||||
{
|
||||
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
|
||||
|
||||
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
|
||||
|
||||
return priv->multidevice;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_widget_set_support_multidevice:
|
||||
* @widget: a #GtkWidget
|
||||
* @support_multidevice: %TRUE to support input from multiple devices.
|
||||
*
|
||||
* Enables or disables multiple pointer awareness. If this setting is %TRUE,
|
||||
* @widget will start receiving multiple, per device enter/leave events. Note
|
||||
* that if custom #GdkSurfaces are created in #GtkWidget::realize,
|
||||
* gdk_surface_set_support_multidevice() will have to be called manually on them.
|
||||
**/
|
||||
void
|
||||
gtk_widget_set_support_multidevice (GtkWidget *widget,
|
||||
gboolean support_multidevice)
|
||||
{
|
||||
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
|
||||
|
||||
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||
|
||||
priv->multidevice = (support_multidevice == TRUE);
|
||||
|
||||
if (_gtk_widget_get_realized (widget))
|
||||
{
|
||||
GdkSurface *surface = gtk_widget_get_surface (widget);
|
||||
|
||||
if (surface)
|
||||
gdk_surface_set_support_multidevice (surface, support_multidevice);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_widget_set_opacity:
|
||||
* @widget: a #GtkWidget
|
||||
|
@ -596,14 +596,6 @@ GDK_AVAILABLE_IN_ALL
|
||||
gboolean gtk_widget_compute_expand (GtkWidget *widget,
|
||||
GtkOrientation orientation);
|
||||
|
||||
|
||||
/* Multidevice support */
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
gboolean gtk_widget_get_support_multidevice (GtkWidget *widget);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_widget_set_support_multidevice (GtkWidget *widget,
|
||||
gboolean support_multidevice);
|
||||
|
||||
/* Accessibility support */
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_widget_class_set_accessible_type (GtkWidgetClass *widget_class,
|
||||
|
@ -84,7 +84,6 @@ struct _GtkWidgetPrivate
|
||||
guint has_grab : 1;
|
||||
guint shadowed : 1;
|
||||
guint child_visible : 1;
|
||||
guint multidevice : 1;
|
||||
guint can_target : 1;
|
||||
|
||||
/* Queue-resize related flags */
|
||||
|
Loading…
Reference in New Issue
Block a user