Commit Graph

165 Commits

Author SHA1 Message Date
Daniel Juyung Seo 8908a3df23 elm: Add missing const for getters. 2015-06-26 10:30:21 +09:00
Thiep Ha 08509f56a2 cnp: remove loss callback when object is deleted
Summary:
SEG_FAULT happens when the object which has selection is deleted,
and new selection is done at another object.
Reason: loss_cb is not removed when the object which has selection is deleted.
When new selection is set for new object, the loss_cb is called for deleted
object. As result, SEG_FAULT happens.

Test Plan:
Run elementary test, open Entry, do selection,
close Entry window, open Entry one more time, do selection.

Reviewers: JackDanielZ

Differential Revision: https://phab.enlightenment.org/D2763
2015-06-25 08:54:36 +03:00
Daniel Zaoui 185e88db91 CnP: improve loss callback
- Reset loss cb after invocation as it is no more needed
- When selection is set, previous owner loss cb is invoked only
if the new owner and the previous one are different.
2015-06-24 08:26:38 +03:00
Daniel Zaoui 5eeb1f5622 DnD: remove text/uri handling
This type is not a standard type and can be handled as a text/uri-list
of one uri.

@fix
2015-06-23 16:05:47 +03:00
Daniel Zaoui 422e28129e DnD: remove from elm_cnp code specific to elm_entry
The tag insertion has to be done only from elm_entry callback. elm_cnp
is not supposed to know what will be done with the data.
2015-06-23 15:57:02 +03:00
Daniel Zaoui 1776d9b647 DnD: fix usage of TARGETS
- TARGETS notifier is specific to CnP and should not be called for DnD
- On DnD (when drag starts) and on CnP, it doesn't make sense that the TARGETS
type are sent to the potential target. Only basic types should be sent.
2015-06-21 10:14:58 +03:00
Youngbok Shin 6f33f4f1d1 cnp: Add safety check for NULL pointer from malloc().
Summary:
It could make crash when malloc is failed.
@fix

Reviewers: raster, woohyun, Hermet, JackDanielZ, thiepha

Subscribers: JackDanielZ

Differential Revision: https://phab.enlightenment.org/D2671
2015-06-15 08:08:34 +03:00
Youngbok Shin d04e6c7d6a cnp: Fix memory leak issue.
Summary: Call efreet_uri_free() API to free Efreet_Uri structure.

Test Plan: None.

Reviewers: raster, cedric, woohyun, Hermet, thiepha, JackDanielZ

Subscribers: JackDanielZ

Differential Revision: https://phab.enlightenment.org/D2655
2015-06-15 08:05:02 +03:00
Daniel Zaoui fcbb42d19b DnD: fix memory leak 2015-06-14 11:23:52 +03:00
Daniel Zaoui 9781aef4bb DnD/X11: Fix invalid access to memory
It seems X doesn't send the data with the termination.
2015-06-14 11:23:52 +03:00
Daniel Zaoui f66224b5f3 DnD/X11: rename notifiers
As the notify functions don't notify anymore, they have to be renamed to
reflect their real job, i.e data preparers before calling user
functions.
2015-06-14 11:23:47 +03:00
Daniel Zaoui b779ae6780 DnD/X11: refactor the notifiers
Each data notifier was preparing data and then invoking the user callbacks
for DnD or selection protocols.
Most of the notifiers code was handling the user callbacks invocation
and was the same for all of them.

This patch simplifies the notifiers by moving the user callbacks
invocation into a common place for all the types, i.e into the notify
dispatcher.
The notifiers prototype has been changed to suit the code modifications.
2015-06-14 11:21:33 +03:00
Daniel Zaoui 271a37f6eb DnD/X11: remove unused function 2015-06-13 12:29:35 +03:00
Thiep Ha 551074c5f2 Cnp/X11: correct object parameter in datacb
The object parameter in datacb must be the selection request object,
not the selection owner object.
This patch corrects that.

Test case: open two windows with entry, copy text from one entry in
first window, paste to entry in other window.

@fix
2015-06-12 11:53:55 +03:00
Thiep Ha 99ab88c1c7 Cnp/X11: move entry-only code in elm_cnp to entry
There is code in elm_cnp.c which is used to paste data to entry widget only.
This can cause error if widget is not entry.
This patch removes that code in elm_cnp.c and adds datacb to entry
to insert content to entry.

@fix
2015-06-12 11:53:34 +03:00
Thiep Ha 1ee5b72ceb Dnd/X11: add dnd support for image, uri types
There is no dnd callbacks for image, uri types.
This patch adds dnd callbacks for those types.

@fix
2015-06-12 11:45:00 +03:00
Youngbok Shin 61fe7e5f39 cnp: Add safety check for NULL pointer from strdup().
Summary:
It could make crash when strdup() is failed.
CID - 329115
@fix

Reviewers: raster, thiepha, woohyun, Hermet

Differential Revision: https://phab.enlightenment.org/D2673
2015-06-12 11:02:05 +03:00
Youngbok Shin 9fba74ea72 cnp: Add safety check for NULL pointer from calloc() for anim_icon.
Summary:
It could be failed to allocate memory for Anim_Icon.
CID - 337351
@fix

Reviewers: raster, thiepha, woohyun, Hermet

Differential Revision: https://phab.enlightenment.org/D2672
2015-06-12 11:01:55 +03:00
Youngbok Shin e227bad7fe cnp: Add safety check for NULL pointer from _elm_util_text_to_mkup().
Summary:
_elm_util_text_to_mkup() func could return NULL when malloc is failed internally.
CID - 398441
@fix

Reviewers: raster, thiepha, woohyun, Hermet

Differential Revision: https://phab.enlightenment.org/D2668
2015-06-12 10:56:22 +03:00
Tom Hacohen 9a0d2d172b Adjust according to Eo changes. 2015-05-28 17:48:02 +01:00
Cedric BAIL df4c3bbb7d evas: let's not use eo_do for potential Efl interface call. 2015-04-03 16:04:58 +02:00
Daniel Zaoui 87aa8cdb54 DnD/Wl: extend types support to all the atoms.
uri-list type was always sent as source data type.
2015-03-16 09:42:03 +02:00
Daniel Zaoui c0bd72eaa4 DnD/Wl: fix drop sequence when drop is done on a bad target.
The problem occurs when no drop target below the mouse can receive the
data type provided and the mouse button is released. The mouse pointer
stays grabbed and this leads to issues for the next drags.
To solve this, on a bad drop, the destination window has to request
from the source window the end of the dnd.
2015-03-16 09:42:02 +02:00
Daniel Zaoui 29ddeff501 DnD/Wl: add a better support to data types.
The types management mechanisms for X11 and Wayland use the same
infrastructures.
2015-03-16 09:42:02 +02:00
Daniel Zaoui cc0368334d DnD: Arrange code for better usability
Specific types need to be declared before other, as well as functions
prototypes.
2015-03-16 09:42:02 +02:00
Daniel Zaoui 1f86e80f0a DnD/X11: generalize function
This is needed for the types management in Wayland.
2015-03-16 09:42:02 +02:00
Daniel Zaoui 1191f41238 DnD/X11: generalize atoms descriptions
This step is needed to simplify types management for Wayland by using
the same data structures.
2015-03-16 09:42:02 +02:00
Daniel Juyung Seo f5d144e421 elm: Use eo_isa() to check object types instead of manual string comparison. 2015-03-10 22:52:29 +09:00
Daniel Juyung Seo c9e3ab3363 elm: Clean up elm_win_resize_object_add caller.
- Do not need to call align_set for window resize object.
- Call weight_set before adding an object to a window's resize object.
2015-03-10 22:41:44 +09:00
Mike Blumenkrantz 8384b0a0f7 cnp should only attempt to get wl win for wl engine canvases
fixes abort() on missing wl ee interface
2015-03-05 11:31:30 -05:00
Daniel Zaoui cd97249a33 DnD/X11: improve callbacks invocations.
There is no reason why drop targets callbacks registered for a specific
type would be invoked when a not supported data is dragged.
This patch fixes it by comparing the data type and the callback type of
the drop target. Only the callbacks supporting the data type are
invoked.
2015-02-25 10:36:38 +02:00
Daniel Zaoui 3b7710f107 DnD/X11: improve types checking during position event.
During a DnD position event, we need to find the first dropable target
located under the mouse pointer; one of its callbacks has to support
at least one of the types of the dragged data.
This search process was done by strcmp-ing types for every drop target
and for each of their types until a good target is found.
This patch improves the process by comparing types formats, i.e and-ing bits
vectors.
2015-02-25 10:36:34 +02:00
Daniel Zaoui deb599fa47 DnD/Wl: clean app callbacks management 2015-02-25 10:36:26 +02:00
Daniel Zaoui 43274d3d3c DnD/Wl: support multi-layer Drag and Drop
Now, we use the same way as in X11 to determine which dropable target
should receive the drop data.

@feature
2015-02-25 10:36:18 +02:00
Daniel Zaoui a04166da20 DnD: Add line number to debug messages 2015-02-25 10:36:13 +02:00
Daniel Zaoui ed8505ea01 DnD: generalize internal functions.
They were specific to X11 and should be used for Wayland too.
2015-02-25 10:36:09 +02:00
Daniel Zaoui 703f86dfb4 DnD/Wl: add cancel support
This feature permits cancellation of a DnD operation in the middle.

@feature
2015-02-25 10:35:43 +02:00
Daniel Zaoui 689b4f3fc5 DnD: fix callbacks deletion for inline windows.
During deletion of a window, widgets considered as droppable targets
have to remove their DnD callbacks. To achieve this, elm_drop_target_del
is called from the DEL callback (destructor). This function has to
determine if X11 or Wayland is used. Since the parent is already unknown
at this stage, only checking the engine name can give this
information.
On a regular window, the engine name is related to the target display.

The problem happens when an inline window is used. The engine is a
buffer and no information is given regarding the target display.

The patch fixes it by checking the nature of the Ecore Evas parents. It
supports nested windows (inline inside inline... inside XWin).

@fix
2015-01-12 08:23:35 +02:00
Chris Michael 4be7250569 elementary: Fix issue with event data causing an invalid free
Summary: Since we end up calling free on the event->data parameter
after a drop is completed, we should actually be allocating a string
for this data (to be free'd later). This also fixes an issue where the
event length was not being set.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-05 13:48:45 -05:00
Chris Michael 4a07808590 elementary: Fix return values to use Eina_Bool
Summary: This function is expecting Eina_Bool as the return value, not
ints so let's use EINA_FALSE here.

NB: this just fixes a copy/paste issue

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-05 12:17:03 -05:00
Chris Michael 5f325de444 elementary: Fix DnD to work again in wayland
Summary: In order for ecore_wl to start a drag, we need to send the
parent window of the object being dragged. Previous code was not
getting the parent window properly.

NB: This patch also fixes an issue where the data being sent to the
drop callback was being incorrectly sent.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-01-05 12:05:50 -05:00
Daniel Zaoui e8084e322c DnD: fix callbacks call on many DnD operations.
A leave callback is invoked on the drop target of the previous DnD
operation, leading to inconsistency for applications.
The state of the dropable target was not resetted during drop.
This patch fixes that.
2014-12-14 15:49:50 +02:00
Wonguk Jeong 122403ea44 elm_cnp: decode escaped ASCII-encoded URI for dnd
Summary:
encoded URI is pasted in terminology on dnd with file which has blank in name
ex. Test Blank.avi -> Test%20Blank.avi

Therefore, decode it when we extract file uris from uri list by using efreet.
by the way, copy and paste code likely needs refactoring..

Reviewers: raster, cedric

Subscribers: billiob, seoz

Differential Revision: https://phab.enlightenment.org/D1384
2014-11-29 16:06:50 +09:00
Tom Hacohen b12c544d21 Elm cnp: Fix infinite loop on drop target deletions in some cases.
In some cases, like having a drop target inside an inwin (looks like it
can be other containers too) can cause an infinite loop (as described in
the report). The reason for that is that while the drop target was added
when there was an X window available, the X window ws now gone, so the
non X path was being called which didn't have the code to remove the
item from the list being iterated. Yes, definition of spaghetti and
false assumptions.
Elm dnd/cnp need a massive overhaul, they are disgusting.

See the ticket for more information on the issue.

Fixes T1702
2014-10-20 17:24:07 +01:00
Daniel Zaoui 3d85a89b2c CnP/Wayland: Fix window check for Wayland invocations.
This was leading to never enter the cnp functions dedicated to Wayland,
as the given object was not a window. The Copy And Paste test was not
working for this reason.
2014-09-08 17:05:20 +03:00
Carsten Haitzler 2b6ae14af0 elm cnp - remove usless check/code according to CID 1193248 2014-08-08 16:45:28 +09:00
Jean-Philippe Andre 4d8e485fc8 elm_cnp: Break after we found the target we were looking for
Basic optimization of the search.
2014-07-09 09:09:16 +09:00
MinJeong Kim 0d530cd78f elm_cnp: Do not request for selection_set when buffer is empty
Summary:
When a wayland client requests selection_set, Wayland server doesn't care and doesn't know how long source data is.
so, it cannot ignore request for selection_set about empty buffer.
therefore to avoid copying empty buffer, it need to check length of buffer before request selection_set.

Test Plan:
1. Run "elementray_test -to entry5" with wayland server.
2. Drag text and try to paste.
3. Drag empty area in entry (request for selection_set on empty buffer is rejected)
4. Try to paste (you can see text of step 2).

Reviewers: devilhorns, raster, seoz

CC: gwanglim

Differential Revision: https://phab.enlightenment.org/D1146
2014-07-08 09:45:47 -04:00
Thiep Ha 36e153f956 dnd: rotate dragwin if main window is rotated when draging
Summary:
During drag, dragwin should be rotated when main window is rotated.

@fix

Reviewers: raster, JackDanielZ, woohyun

Reviewed By: raster

Differential Revision: https://phab.enlightenment.org/D976
2014-06-11 14:19:27 +09:00
Tom Hacohen efa41c7d75 Elm: Update code to use the new class names generated by eolian. 2014-06-03 11:54:44 +01:00