From eba2520ccfdfd6f5229c69522cf4b209baa2da13 Mon Sep 17 00:00:00 2001 From: xavier Date: Tue, 23 Feb 2010 22:04:22 +0000 Subject: [PATCH] Desormais, lors du drag'n drop d'un element depuis le panel d'element, la pixmap accrochee au pointeur est reduite si elle depasse une certaine taille. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@859 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/elementspanel.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/sources/elementspanel.cpp b/sources/elementspanel.cpp index 3a58304c3..79b28126e 100644 --- a/sources/elementspanel.cpp +++ b/sources/elementspanel.cpp @@ -35,6 +35,18 @@ */ #define ENABLE_PANEL_DND_CHECKS +/* + Largeur maximale, en pixels, de la pixmap accrochee au pointeur de la + souris +*/ +#define QET_MAX_DND_PIXMAP_WIDTH 500 + +/* + Hauteur maximale, en pixels, de la pixmap accrochee au pointeur de la + souris +*/ +#define QET_MAX_DND_PIXMAP_HEIGHT 375 + /** Constructeur @param parent Le QWidget parent du panel d'appareils @@ -439,8 +451,21 @@ void ElementsPanel::startDrag(Qt::DropActions supportedActions) { } // accrochage d'une pixmap representant l'appareil au pointeur - drag -> setPixmap(temp_elmt -> pixmap()); - drag -> setHotSpot(temp_elmt -> hotspot()); + QPixmap elmt_pixmap(temp_elmt -> pixmap()); + QPoint elmt_hotspot(temp_elmt -> hotspot()); + + // ajuste la pixmap si celle-ci est trop grande + QPoint elmt_pixmap_size(elmt_pixmap.width(), elmt_pixmap.height()); + if (elmt_pixmap.width() > QET_MAX_DND_PIXMAP_WIDTH || elmt_pixmap.height() > QET_MAX_DND_PIXMAP_HEIGHT) { + elmt_pixmap = elmt_pixmap.scaled(QET_MAX_DND_PIXMAP_WIDTH, QET_MAX_DND_PIXMAP_HEIGHT, Qt::KeepAspectRatio); + elmt_hotspot = QPoint( + elmt_hotspot.x() * elmt_pixmap.width() / elmt_pixmap_size.x(), + elmt_hotspot.y() * elmt_pixmap.height() / elmt_pixmap_size.y() + ); + } + + drag -> setPixmap(elmt_pixmap); + drag -> setHotSpot(elmt_hotspot); // suppression de l'appareil temporaire delete temp_elmt;