case NSLeftMouseDragged:
case NSRightMouseDragged:
case NSOtherMouseDragged:
- {
- if (_has_ecore_cocoa_window(event))
- {
- Ecore_Event_Mouse_Move * ev = calloc(1, sizeof(Ecore_Event_Mouse_Move));
- if (!ev) return pass;
-
- EcoreCocoaWindow *window = (EcoreCocoaWindow *)[event window];
- NSView *view = [window contentView];
- NSPoint pt = [event locationInWindow];
-
- ev->x = pt.x;
- ev->y = [view frame].size.height - pt.y;
- ev->root.x = ev->x;
- ev->root.y = ev->y;
- ev->timestamp = time;
- ev->window = (Ecore_Window)window.ecore_window_data;
- ev->event_window = ev->window;
- ev->modifiers = 0; /* FIXME: keep modifier around. */
-
- ecore_event_add(ECORE_EVENT_MOUSE_MOVE, ev, NULL, NULL);
- }
- else
- {
- // We might want to handle cases such as events on the menubar.
- // If so, let's do it here.
- }
- pass = EINA_TRUE;
- break;
- }
case NSLeftMouseDown:
case NSRightMouseDown:
case NSOtherMouseDown:
- {
- if (_has_ecore_cocoa_window(event))
- {
- EcoreCocoaWindow *window = (EcoreCocoaWindow *)[event window];
- NSView *view = [window contentView];
- NSPoint pt = [event locationInWindow];
-
- int w = [view frame].size.width;
- int h = [view frame].size.height;
- int x = pt.x;
- int y = h - pt.y;
-
- if (y <= 0 || x <= 0 || y > h || x > w)
- {
- pass = EINA_TRUE;
- break;
- }
-
- Ecore_Event_Mouse_Button * ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
- if (!ev) return pass;
-
- ev->x = pt.x;
- ev->y = y;
- ev->root.x = ev->x;
- ev->root.y = ev->y;
- ev->timestamp = time;
- switch ([event buttonNumber])
- {
- case 0: ev->buttons = 1; break;
- case 1: ev->buttons = 3; break;
- case 2: ev->buttons = 2; break;
- default: ev->buttons = 0; break;
- }
- ev->window = (Ecore_Window)window.ecore_window_data;
- ev->event_window = ev->window;
-
- if ([event clickCount] == 2)
- ev->double_click = 1;
- else
- ev->double_click = 0;
-
- if ([event clickCount] >= 3)
- ev->triple_click = 1;
- else
- ev->triple_click = 0;
-
- ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, ev, NULL, NULL);
- }
- else
- {
- // We might want to handle cases such as events on the menubar.
- // If so, let's do it here.
- }
- pass = EINA_TRUE;
- break;
- }
case NSLeftMouseUp:
case NSRightMouseUp:
case NSOtherMouseUp:
{
-
- if (_has_ecore_cocoa_window(event))
- {
- EcoreCocoaWindow *window = (EcoreCocoaWindow *)[event window];
- NSView *view = [window contentView];
- NSPoint pt = [event locationInWindow];
-
- int w = [view frame].size.width;
- int h = [view frame].size.height;
- int x = pt.x;
- int y = h - pt.y;
-
- if (y <= 0 || x <= 0 || y > h || x > w)
- {
- pass = EINA_TRUE;
- break;
- }
-
- Ecore_Event_Mouse_Button * ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
- if (!ev) return pass;
-
- ev->x = pt.x;
- ev->y = y;
- ev->root.x = ev->x;
- ev->root.y = ev->y;
- ev->timestamp = time;
- switch ([event buttonNumber])
- {
- case 0: ev->buttons = 1; break;
- case 1: ev->buttons = 3; break;
- case 2: ev->buttons = 2; break;
- default: ev->buttons = 0; break;
- }
- ev->window = (Ecore_Window)window.ecore_window_data;
- ev->event_window = ev->window;
-
- if ([event clickCount] == 2)
- ev->double_click = 1;
- else
- ev->double_click = 0;
-
- if ([event clickCount] >= 3)
- ev->triple_click = 1;
- else
- ev->triple_click = 0;
-
- ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL);
- }
- else
- {
- // We might want to handle cases such as events on the menubar.
- // If so, let's do it here.
- }
- pass = EINA_TRUE;
- break;
+ //mouse events are managed in EcoreCocoaWindow
+ return EINA_TRUE;
}
case NSKeyDown:
{
case NSAppKitDefined:
{
if ([event subtype] == NSApplicationActivatedEventType)
- {
- Ecore_Cocoa_Event_Window *ev;
+ {
+ Ecore_Cocoa_Event_Window *ev;
ev = malloc(sizeof(Ecore_Cocoa_Event_Window));
if (!ev)
ecore_event_add(ECORE_COCOA_EVENT_GOT_FOCUS, ev, NULL, NULL);
}
else if ([event subtype] == NSApplicationDeactivatedEventType)
- {
+ {
Ecore_Cocoa_Event_Window *ev;
ev = malloc(sizeof(Ecore_Cocoa_Event_Window));
#include <Ecore_Cocoa.h>\r
#include "ecore_cocoa_private.h"\r
#import "ecore_cocoa_window.h"\r
+#include <Ecore_Input.h>\r
\r
@implementation EcoreCocoaWindow\r
\r
(([self isFullScreen] == YES) ? 0 : ecore_cocoa_titlebar_height_get());\r
event->wid = [notif object];\r
ecore_event_add(ECORE_COCOA_EVENT_RESIZE, event, NULL, NULL);\r
- ecore_main_loop_iterate();\r
}\r
\r
- (void)windowDidBecomeKey:(NSNotification *)notification\r
ecore_event_add(ECORE_COCOA_EVENT_LOST_FOCUS, e, NULL, NULL);\r
}\r
\r
+- (void) mouseDown:(NSEvent*) event\r
+{\r
+ unsigned int time = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);\r
+\r
+ NSView *view = [self contentView];\r
+ NSPoint event_location = [event locationInWindow];\r
+ NSPoint pt = [view convertPoint:event_location fromView:nil];\r
+\r
+ int w = [view frame].size.width;\r
+ int h = [view frame].size.height;\r
+ int x = pt.x;\r
+ int y = h - pt.y;\r
+\r
+ if (y <= 0 || x <= 0 || y > h || x > w)\r
+ return;\r
+\r
+ Ecore_Event_Mouse_Button * ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));\r
+ if (!ev) return;\r
+\r
+ ev->x = pt.x;\r
+ ev->y = y;\r
+ ev->root.x = ev->x;\r
+ ev->root.y = ev->y;\r
+ ev->timestamp = time;\r
+ switch ([event buttonNumber])\r
+ {\r
+ case 0: ev->buttons = 1; break;\r
+ case 1: ev->buttons = 3; break;\r
+ case 2: ev->buttons = 2; break;\r
+ default: ev->buttons = 0; break;\r
+ }\r
+ ev->window = (Ecore_Window)self.ecore_window_data;\r
+ ev->event_window = ev->window;\r
+\r
+ if ([event clickCount] == 2)\r
+ ev->double_click = 1;\r
+ else\r
+ ev->double_click = 0;\r
+\r
+ if ([event clickCount] >= 3)\r
+ ev->triple_click = 1;\r
+ else\r
+ ev->triple_click = 0;\r
+\r
+ ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, ev, NULL, NULL);\r
+}\r
+\r
+- (void) mouseUp:(NSEvent*) event\r
+{\r
+ unsigned int time = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);\r
+\r
+ NSView *view = [self contentView];\r
+ NSPoint event_location = [event locationInWindow];\r
+ NSPoint pt = [view convertPoint:event_location fromView:nil];\r
+\r
+ int w = [view frame].size.width;\r
+ int h = [view frame].size.height;\r
+ int x = pt.x;\r
+ int y = h - pt.y;\r
+\r
+ if (y <= 0 || x <= 0 || y > h || x > w)\r
+ return;\r
+\r
+ Ecore_Event_Mouse_Button * ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));\r
+ if (!ev) return;\r
+\r
+ ev->x = pt.x;\r
+ ev->y = y;\r
+ ev->root.x = ev->x;\r
+ ev->root.y = ev->y;\r
+ ev->timestamp = time;\r
+ switch ([event buttonNumber])\r
+ {\r
+ case 0: ev->buttons = 1; break;\r
+ case 1: ev->buttons = 3; break;\r
+ case 2: ev->buttons = 2; break;\r
+ default: ev->buttons = 0; break;\r
+ }\r
+ ev->window = (Ecore_Window)self.ecore_window_data;\r
+ ev->event_window = ev->window;\r
+\r
+ if ([event clickCount] == 2)\r
+ ev->double_click = 1;\r
+ else\r
+ ev->double_click = 0;\r
+\r
+ if ([event clickCount] >= 3)\r
+ ev->triple_click = 1;\r
+ else\r
+ ev->triple_click = 0;\r
+\r
+ ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL);\r
+}\r
+\r
+- (void) mouseMoved:(NSEvent*) event\r
+{\r
+ Ecore_Event_Mouse_Move * ev = calloc(1, sizeof(Ecore_Event_Mouse_Move));\r
+ if (!ev) return;\r
+\r
+ NSView *view = [self contentView];\r
+ NSPoint event_location = [event locationInWindow];\r
+ NSPoint pt = [view convertPoint:event_location fromView:nil];\r
+\r
+ ev->x = pt.x;\r
+ ev->y = [view frame].size.height - pt.y;\r
+ ev->root.x = ev->x;\r
+ ev->root.y = ev->y;\r
+ ev->timestamp = time;\r
+ ev->window = (Ecore_Window)self.ecore_window_data;\r
+ ev->event_window = ev->window;\r
+ ev->modifiers = 0; /* FIXME: keep modifier around. */\r
+\r
+ ecore_event_add(ECORE_EVENT_MOUSE_MOVE, ev, NULL, NULL);\r
+}\r
+\r
+- (void) mouseDragged: (NSEvent*) event\r
+{\r
+ [self mouseMoved:event];\r
+}\r
+\r
@end\r
\r
Ecore_Cocoa_Window *\r