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
- 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.
- 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.
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
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.
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
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
Summary:
It could make crash when strdup() is failed.
CID - 329115
@fix
Reviewers: raster, thiepha, woohyun, Hermet
Differential Revision: https://phab.enlightenment.org/D2673
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
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.
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.
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.
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
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>
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>
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>
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.
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
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
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.
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
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