- Ecore_Cocoa_Cursor enum which references system cursors;
- API to show/hide cursor: ecore_cocoa_window_cursor_show();
- API to set system cursor: ecore_cocoa_window_cursor_set();
- Ecore_Evas interface to get Ecore_Cocoa_Window from Ecore_Evas.
@feature
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This was a tricky little bastard!
When a window is live resized, the NSWindow which is the target of
the live resize will wait for a kevent from the window manager,
until live resizing is done. So... live resizing is synchronous
and blocks the main thread... hence ecore_main_loop.
- When live resize starts, the Ecore_Timer which polls NSRunLoop
is paused.
- When the window is resized, the ecore_main_loop is run manually
with ecore_main_loop_iterate() to process Ecore events (mostly
Ecore_Evas)
- When live resize finished, the Ecore_Timer which polls NSRunLoop
is resumed.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Currently, it was used only to get track of focus, howver focus was
already handled (and better) in ecore_cocoa_window (with
NSWindowDelegate).
This led to the LOST_FOCUS event to be posted twice, with different
values, which messed up the focus stack.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
- Ecore_Cocoa_Cursor enum which references system cursors;
- API to show/hide cursor: ecore_cocoa_window_cursor_show();
- API to set system cursor: ecore_cocoa_window_cursor_set();
- Ecore_Evas interface to get Ecore_Cocoa_Window from Ecore_Evas.
@feature
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
As all Mouse and Keyboard events comme from Cocoa, the poll period must
be reduced. Backwards of this method is that when no signal are
received for a long period, the timer fired anyway and consumes CPU
for nothig but it seems there is no easy method to integrate NSApplication
mainloop into an existing one.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
I went through a lot of undefined symbols while compiling ecore_evas_cocoa
module and ethumb-related binaries. E.g.:
Undefined symbols for architecture x86_64:
"_ECORE_COCOA_EVENT_EXPOSE", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ECORE_COCOA_EVENT_GOT_FOCUS", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ECORE_COCOA_EVENT_LOST_FOCUS", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ECORE_COCOA_EVENT_RESIZE", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ECORE_COCOA_EVENT_WINDOW_DESTROY", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ecore_cocoa_init", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ecore_cocoa_screen_size_get", referenced from:
__ecore_evas_screen_geometry_get in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
"_ecore_cocoa_shutdown", referenced from:
_ecore_evas_cocoa_new_internal in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
__ecore_evas_cocoa_free in modules_ecore_evas_engines_cocoa_module_la-ecore_evas_cocoa.o
Undefined symbols for architecture x86_64:
"_ethumb_calculate_aspect_from_ratio", referenced from:
__resize_movie in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_calculate_fill_from_ratio", referenced from:
__resize_movie in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_ecore_evas_get", referenced from:
__frame_decode_cb in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_evas_get", referenced from:
__thumb_generate in modules_ethumb_emotion_module_la-emotion.o
__finish_thumb_generation in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_finished_callback_call", referenced from:
__thumb_generate in modules_ethumb_emotion_module_la-emotion.o
__frame_decode_cb in modules_ethumb_emotion_module_la-emotion.o
__finish_thumb_generation in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_image_save", referenced from:
__frame_decode_cb in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_plugin_image_resize", referenced from:
__resize_movie in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_plugin_register", referenced from:
__module_init in modules_ethumb_emotion_module_la-emotion.o
"_ethumb_plugin_unregister", referenced from:
__module_shutdown in modules_ethumb_emotion_module_la-emotion.o
EAPI was not well re-defined in both cases. It has been handled in
ecore_cocoa_private.h and ethumb_private.h. These files must be included
after a main library header (because EAPI is undef there).
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2483
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
- prioritize vertical scroll over horizontal
- set amount to either -1 or 1, since EFL doesn't handle other value properly
- fix wheel bouncing with some devices (X:0,Y:0 scrolling events)
@fix
mouse events ouside the window where rejected. that was creating
interactions where half an event was created, the application was
then not able to process correctly following events.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
this patch adds support for non latin keyboard layout such as
arabic, greek or hebrew, some language might not be functionnal
tough like korean or chineese
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
@fix this patch:
catch the window close event from cocoa and send an ecore event
this event is catched by a handler in ecore_evas wich will
call the registered fn_delete_request (from elementary for instance)
/!\ this patch is currently incomplete and leads to a segv when
closing the last window
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This patch allows to interpret correctly several types of key combinations:
- alt keys : € œ ¬
- dead keys : ä ë
- dead keys (bis, they are handled differently) : ~ ã
- control keys: ^C ^A
- page up/ page down
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Mouse events was broken after a resize of the window from the left
or the bottom. As I understand, theses resize were changing the origin
of Cocoa window independly from the origin of the EFL.
This has been resolved by moving mouse envents handling to our NSWindow
delegate. thus events are always in the right referential.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
autorelease block is used in ObjC to release automatically objects not used
anymore. Placed here this block release the NSWindow we created by hand in the
ecore_cocoa code and give us a SEGV as we use memory already freed
automatically. Removing this block fix this issue.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: The log is registered with the private definition ECORE_DEFAULT_LOG_COLOR from ecore_private.h. Changed to a explicit color.
Reviewers: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2010
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
* Fix extern declaration of _ecore_cocoa_log_domain variable defined as private with static;
* Fix including a private header from another module (ecore).
Reviewers: naguirre
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2000
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Ecore_Event_Key attribute "key" cannot be NULL. This
raise a segmentation fault in Enventor when hitting on
modifier keys.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
With cocoa you may have negatives values when Mouse Down or Up. This
changes fix this behavior by sending mouse event only if x and y are
inside the ecore_evas space.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit adds a method in Ecore_Cocoa_Window to be able to retrieve an unique
identifier for each window. It adds new events type and modify existing ones to
pass these windows identifiers through the event call chain. Resize, GotFocus and
LotFocus events are also updated to pass these identifiers to event handlers.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Don't use NSAppKitDefined events subtype for focus events, which contain NULL
window object most of the time. Use the NSWindowDelegate method designed for that
purpose instead. It fixes random focus issues in windows which was caused by
incorrect window identifier not found in ecore_evas_cocoa.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Until now, video_resize events was received only when application returned control
to the event loop. When a window is resized dynamically a lot of video_resize
events are emitted from EcoreCocoaWindow::windowDidResize and not handled
immediatly, only when the main thread is back to the ecore main loop. This is why
there are not refreshed window areas. Call ecore_main_loop_iterate() from
windowDidResize solves the issue.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
isKindOfClass should receive an instance of a class and a class as arguments and
not two class. It fixes Mouse events sent to a window on OSX.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Get rid of the old NSApplicationLoad() which was aimed to be use with Carbon. Unless the NSRunLoop is strictly integrated to the ecore_main_loop() (where cocoa events would be checked when entering the ecore_main_loop) I think the poller is the only option left.
Reviewers: raster, naguirre, raoulh, stefan_schmidt, cedric
@feature
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1222
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Warnings and deprecated code fixes. I started to implement the OSX-Lion fullscreen style.
Reviewers: cedric, naguirre, raster, raoulh
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1175
Summary: Add support for canvas resizing: the window was resizable but its content was not resized.
Reviewers: raster, raoulh, naguirre, cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1163