[aseprite] 165/250: Impl OSXWindow::setMousePosition on Skia/OSX port

Tobias Hansen thansen at moszumanska.debian.org
Sun Dec 20 15:27:25 UTC 2015


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit 66c5e04a58688c3739bf3b8d7f4f803d2e0f30e1
Author: David Capello <davidcapello at gmail.com>
Date:   Wed Oct 14 09:29:14 2015 -0300

    Impl OSXWindow::setMousePosition on Skia/OSX port
---
 src/she/osx/window.h            |  2 ++
 src/she/osx/window.mm           | 19 +++++++++++++++++++
 src/she/skia/skia_window_osx.mm |  6 ++++++
 3 files changed, 27 insertions(+)

diff --git a/src/she/osx/window.h b/src/she/osx/window.h
index 9eed80c..f76f40d 100644
--- a/src/she/osx/window.h
+++ b/src/she/osx/window.h
@@ -10,6 +10,7 @@
 
 #include <Cocoa/Cocoa.h>
 
+#include "gfx/point.h"
 #include "gfx/rect.h"
 #include "gfx/size.h"
 #include "she/keys.h"
@@ -41,6 +42,7 @@ public:
 - (void)setScale:(int)scale;
 - (gfx::Size)clientSize;
 - (gfx::Size)restoredSize;
+- (void)setMousePosition:(const gfx::Point&)position;
 @end
 
 #endif
diff --git a/src/she/osx/window.mm b/src/she/osx/window.mm
index 3a3f1bb..6d64e76 100644
--- a/src/she/osx/window.mm
+++ b/src/she/osx/window.mm
@@ -74,4 +74,23 @@
   return [self clientSize];
 }
 
+- (void)setMousePosition:(const gfx::Point&)position
+{
+   NSView* view = self.contentView;
+   NSPoint pt = NSMakePoint(
+     position.x*m_scale,
+     view.frame.size.height - position.y*m_scale);
+
+   pt = [view convertPoint:pt toView:view];
+   pt = [view convertPoint:pt toView:nil];
+   pt = [self convertBaseToScreen:pt];
+   pt.y = [[self screen] frame].size.height - pt.y;
+
+   CGPoint pos = CGPointMake(pt.x, pt.y);
+   CGEventRef event = CGEventCreateMouseEvent(
+     NULL, kCGEventMouseMoved, pos, kCGMouseButtonLeft);
+   CGEventPost(kCGHIDEventTap, event);
+   CFRelease(event);
+}
+
 @end
diff --git a/src/she/skia/skia_window_osx.mm b/src/she/skia/skia_window_osx.mm
index 9e49e1c..7397999 100644
--- a/src/she/skia/skia_window_osx.mm
+++ b/src/she/skia/skia_window_osx.mm
@@ -83,6 +83,10 @@ public:
     [m_window setTitle:[NSString stringWithUTF8String:title.c_str()]];
   }
 
+  void setMousePosition(const gfx::Point& position) {
+    [m_window setMousePosition:position];
+  }
+
   void updateWindow(const gfx::Rect& bounds) {
     [[m_window contentView] setNeedsDisplay:YES];
   }
@@ -338,6 +342,8 @@ void SkiaWindow::releaseMouse()
 
 void SkiaWindow::setMousePosition(const gfx::Point& position)
 {
+  if (m_impl)
+    m_impl->setMousePosition(position);
 }
 
 void SkiaWindow::setNativeMouseCursor(NativeCursor cursor)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git



More information about the Pkg-games-commits mailing list