@@ -233,12 +233,12 @@ void QgsLegend::mouseMoveEvent( QMouseEvent * e )
233
233
if ( item && ( item != mItemBeingMoved ) )
234
234
{
235
235
QgsLegendItem::DRAG_ACTION action = dest->accept ( origin );
236
- if ( action == QgsLegendItem::REORDER )
236
+ if ( yCoordAboveCenter ( dest, e-> y () ) ) // over center of item
237
237
{
238
- QgsDebugMsg ( " mouseMoveEvent::REORDER" );
239
238
240
- if ( ! yCoordAboveCenter ( dest, e-> y () ) ) // over bottom of item
239
+ if ( action == QgsLegendItem::REORDER || action == QgsLegendItem::INSERT )
241
240
{
241
+ QgsDebugMsg ( " mouseMoveEvent::REORDER/INSERT top half" );
242
242
if ( origin->nextSibling () != dest )
243
243
{
244
244
if ( origin->parent () != dest->parent () )
@@ -251,37 +251,53 @@ void QgsLegend::mouseMoveEvent( QMouseEvent * e )
251
251
moveItem ( dest, origin );
252
252
}
253
253
}
254
+ setCurrentItem ( origin );
254
255
}
255
- else // over top of item
256
+ else
256
257
{
257
- if ( mItemBeingMoved != dest->nextSibling () )
258
+ QgsDebugMsg ( " mouseMoveEvent::NO_ACTION" );
259
+
260
+ if ( origin->type () == QgsLegendItem::LEGEND_LAYER_FILE && mItemBeingMovedOrigPos != getItemPos ( mItemBeingMoved ) )
258
261
{
259
- // origin->moveItem(dest);
260
- moveItem ( origin, dest );
262
+ resetToInitialPosition ( mItemBeingMoved );
261
263
}
264
+ setCursor ( QCursor ( Qt::ForbiddenCursor ) );
262
265
}
263
- setCurrentItem ( origin );
264
266
}
265
- else if ( action == QgsLegendItem::INSERT )
267
+ else // below center of item
266
268
{
267
- QgsDebugMsg ( " mouseMoveEvent::INSERT" );
268
269
269
- setCursor ( QCursor ( Qt::PointingHandCursor ) );
270
- if ( origin->parent () != dest )
270
+ if ( action == QgsLegendItem::REORDER )
271
271
{
272
- insertItem ( origin, dest );
272
+ QgsDebugMsg ( " mouseMoveEvent::REORDER bottom half" );
273
+ if ( mItemBeingMoved != dest->nextSibling () )
274
+ {
275
+ // origin->moveItem(dest);
276
+ moveItem ( origin, dest );
277
+ }
273
278
setCurrentItem ( origin );
274
279
}
275
- }
276
- else // no action
277
- {
278
- QgsDebugMsg ( " mouseMoveEvent::NO_ACTION" );
280
+ else if ( action == QgsLegendItem::INSERT )
281
+ {
282
+ QgsDebugMsg ( " mouseMoveEvent::INSERT" );
279
283
280
- if ( origin->type () == QgsLegendItem::LEGEND_LAYER_FILE && mItemBeingMovedOrigPos != getItemPos ( mItemBeingMoved ) )
284
+ setCursor ( QCursor ( Qt::PointingHandCursor ) );
285
+ if ( origin->parent () != dest )
286
+ {
287
+ insertItem ( origin, dest );
288
+ setCurrentItem ( origin );
289
+ }
290
+ }
291
+ else // no action
281
292
{
282
- resetToInitialPosition ( mItemBeingMoved );
293
+ QgsDebugMsg ( " mouseMoveEvent::NO_ACTION" );
294
+
295
+ if ( origin->type () == QgsLegendItem::LEGEND_LAYER_FILE && mItemBeingMovedOrigPos != getItemPos ( mItemBeingMoved ) )
296
+ {
297
+ resetToInitialPosition ( mItemBeingMoved );
298
+ }
299
+ setCursor ( QCursor ( Qt::ForbiddenCursor ) );
283
300
}
284
- setCursor ( QCursor ( Qt::ForbiddenCursor ) );
285
301
}
286
302
}
287
303
}
0 commit comments