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

@ -804,6 +804,22 @@ gimp_tool_widget_motion (GimpToolWidget *widget,
coords, time, state);
}
GimpHit
gimp_tool_widget_hit (GimpToolWidget *widget,
const GimpCoords *coords,
GdkModifierType state,
gboolean proximity)
{
g_return_val_if_fail (GIMP_IS_TOOL_WIDGET (widget), GIMP_HIT_NONE);
g_return_val_if_fail (coords != NULL, GIMP_HIT_NONE);
if (GIMP_TOOL_WIDGET_GET_CLASS (widget)->hit)
return GIMP_TOOL_WIDGET_GET_CLASS (widget)->hit (widget,
coords, state, proximity);
return GIMP_HIT_NONE;
}
void
gimp_tool_widget_hover (GimpToolWidget *widget,
const GimpCoords *coords,