summaryrefslogtreecommitdiff
path: root/area_unix.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-04-10 18:52:43 -0400
committerPietro Gagliardi <[email protected]>2014-04-10 18:52:43 -0400
commita01ffafba0fac94c539eca33528af20b3e02cec5 (patch)
treef17bbcac9474798bd9e8c06708a1c579351bb9b1 /area_unix.go
parentbd907dadd8d601acc4208b38c374aa0bcdb7c43f (diff)
Fixed Area mouse events being sent when something happens outside the Area itself.
Diffstat (limited to 'area_unix.go')
-rw-r--r--area_unix.go6
1 files changed, 6 insertions, 0 deletions
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)