| @@ -3034,21 +3034,10 @@ private: | |||||
| if (targetWindow == None) | if (targetWindow == None) | ||||
| return; | 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; | return; | ||||
| } | |||||
| sendExternalDragAndDropEnter (targetWindow); | sendExternalDragAndDropEnter (targetWindow); | ||||
| dragState->targetWindow = targetWindow; | dragState->targetWindow = targetWindow; | ||||
| @@ -3253,6 +3242,17 @@ private: | |||||
| return dndAwarePropFound; | 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) | Window externalFindDragTargetWindow (Window targetWindow) | ||||
| { | { | ||||
| if (targetWindow == None) | if (targetWindow == None) | ||||
| @@ -3297,7 +3297,11 @@ private: | |||||
| dragState->allowedTypes.size()); | dragState->allowedTypes.size()); | ||||
| dragState->dragging = true; | dragState->dragging = true; | ||||
| dragState->xdndVersion = getDnDVersionForWindow (dragState->targetWindow); | |||||
| sendExternalDragAndDropEnter (dragState->targetWindow); | |||||
| handleExternalDragMotionNotify(); | handleExternalDragMotionNotify(); | ||||
| return true; | return true; | ||||
| } | } | ||||