Browse Source

Linux: Fixed drag and drop when dragging in the same window that started the operation

tags/2021-05-28
ed 6 years ago
parent
commit
12b0a90c55
1 changed files with 17 additions and 13 deletions
  1. +17
    -13
      modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp

+ 17
- 13
modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp View File

@@ -3034,21 +3034,10 @@ private:
if (targetWindow == None)
return;
GetXProperty prop (display, targetWindow, atoms->XdndAware,
0, 2, false, AnyPropertyType);
dragState->xdndVersion = getDnDVersionForWindow (targetWindow);
if (prop.success
&& prop.data != None
&& prop.actualFormat == 32
&& prop.numItems == 1)
{
dragState->xdndVersion = jmin ((int) prop.data[0], (int) atoms->DndVersion);
}
else
{
dragState->xdndVersion = -1;
if (dragState->xdndVersion == -1)
return;
}
sendExternalDragAndDropEnter (targetWindow);
dragState->targetWindow = targetWindow;
@@ -3253,6 +3242,17 @@ private:
return dndAwarePropFound;
}
int getDnDVersionForWindow (Window targetWindow)
{
GetXProperty prop (display, targetWindow, atoms->XdndAware,
0, 2, false, AnyPropertyType);
if (prop.success && prop.data != None && prop.actualFormat == 32 && prop.numItems == 1)
return jmin ((int) prop.data[0], (int) atoms->DndVersion);
return -1;
}
Window externalFindDragTargetWindow (Window targetWindow)
{
if (targetWindow == None)
@@ -3297,7 +3297,11 @@ private:
dragState->allowedTypes.size());
dragState->dragging = true;
dragState->xdndVersion = getDnDVersionForWindow (dragState->targetWindow);
sendExternalDragAndDropEnter (dragState->targetWindow);
handleExternalDragMotionNotify();
return true;
}


Loading…
Cancel
Save