app: add GimpToolWidget::hit() virtual function

... which takes the same arguments as GimpToolWidget::hover(), and
performs a hit-test, returning one of the following values:

  - GIMP_HIT_DIRECT:  The point corresponds to one of the widget's
    elements directly.

  - GIMP_HIT_INDIRECT:  The point does not correspond to one of the
    widget's elements directly, but the widget otherwise responds
    to press events at this point.

  - GIMP_HIT_NONE:  The widget does not respond to press events at
    this point.

Unlike hover(), hit() should not have any side effects.

(cherry picked from commit 385203f4d6)
This commit is contained in:
Ell
2018-06-03 04:40:14 -04:00
parent 6b73d5b396
commit 312981568d
3 changed files with 37 additions and 0 deletions

View File

@ -87,6 +87,10 @@ struct _GimpToolWidgetClass
guint32 time,
GdkModifierType state);
GimpHit (* hit) (GimpToolWidget *widget,
const GimpCoords *coords,
GdkModifierType state,
gboolean proximity);
void (* hover) (GimpToolWidget *widget,
const GimpCoords *coords,
GdkModifierType state,
@ -252,6 +256,10 @@ void gimp_tool_widget_motion (GimpToolWidget *widget,
guint32 time,
GdkModifierType state);
GimpHit gimp_tool_widget_hit (GimpToolWidget *widget,
const GimpCoords *coords,
GdkModifierType state,
gboolean proximity);
void gimp_tool_widget_hover (GimpToolWidget *widget,
const GimpCoords *coords,
GdkModifierType state,