From a01ffafba0fac94c539eca33528af20b3e02cec5 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 10 Apr 2014 18:52:43 -0400 Subject: Fixed Area mouse events being sent when something happens outside the Area itself. --- area_unix.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'area_unix.go') diff --git a/area_unix.go b/area_unix.go index 926166f..fe67641 100644 --- a/area_unix.go +++ b/area_unix.go @@ -105,6 +105,8 @@ func makeModifiers(state C.guint, m Modifiers) Modifiers { // shared code for finishing up and sending a mouse event func finishMouseEvent(widget *C.GtkWidget, data C.gpointer, me MouseEvent, mb uint, x C.gdouble, y C.gdouble, state C.guint, gdkwindow *C.GdkWindow) { + var areawidth, areaheight C.gint + s := (*sysData)(unsafe.Pointer(data)) state = translateModifiers(state, gdkwindow) me.Modifiers = makeModifiers(state, 0) @@ -126,6 +128,10 @@ func finishMouseEvent(widget *C.GtkWidget, data C.gpointer, me MouseEvent, mb ui me.Held = append(me.Held, 5) } me.Pos = image.Pt(int(x), int(y)) + C.gtk_widget_get_size_request(widget, &areawidth, &areaheight) + if !me.Pos.In(image.Rect(0, 0, int(areawidth), int(areaheight))) { // outside the actual Area; no event + return + } repaint := s.handler.Mouse(me) if repaint { C.gtk_widget_queue_draw(widget) -- cgit v1.2.3