aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <moorekou@gmail.com>2015-10-20 11:11:54 -0400
committerKen Moore <moorekou@gmail.com>2015-10-20 11:11:54 -0400
commitd566384a4a81497864c30c657ee5ceebb55d3987 (patch)
tree52bb7239cd77eed7a0e61bced39b9b753d2a9428
parentMerge branch 'master' of github.com:pcbsd/lumina (diff)
downloadlumina-d566384a4a81497864c30c657ee5ceebb55d3987.tar.gz
lumina-d566384a4a81497864c30c657ee5ceebb55d3987.tar.bz2
lumina-d566384a4a81497864c30c657ee5ceebb55d3987.zip
Ok, *Now* the desktop plugin resizing routine works properly. Also try to fix an issue with the calendar plugin not scaling down appropriately on the bottom/right edges.
-rw-r--r--lumina-desktop/LDesktopPluginSpace.h11
-rw-r--r--lumina-desktop/desktop-plugins/LDPlugin.h5
-rw-r--r--lumina-desktop/desktop-plugins/calendar/CalendarPlugin.h4
3 files changed, 12 insertions, 8 deletions
diff --git a/lumina-desktop/LDesktopPluginSpace.h b/lumina-desktop/LDesktopPluginSpace.h
index b3904711..8e4c31c2 100644
--- a/lumina-desktop/LDesktopPluginSpace.h
+++ b/lumina-desktop/LDesktopPluginSpace.h
@@ -20,8 +20,6 @@
#include "desktop-plugins/LDPlugin.h"
#define MIMETYPE QString("x-special/lumina-desktop-plugin")
-//#define MIMEPOS QString("x-special/lumina-desktop-plugin-pos")
-//#define GRIDSIZE 64.0 //Need this to be a double/float - usually used for divisions
class LDesktopPluginSpace : public QWidget{
Q_OBJECT
@@ -181,16 +179,15 @@ protected:
if(ValidGeometry(act.section("::::",1,50), geom)){
//qDebug() << " - Is valid";
item->setGeometry(geom);
+ item->setFixedSize(geom.size()); //needed due to resizing limitations and such for some plugins
ev->acceptProposedAction();
item->savePluginGeometry(geom); //save in pixel coords
}else{ ev->ignore(); } //invalid location
}else{
//Resize operation
- QPoint diff = ev->pos() - geom.center(); //need difference from center (pixels)
- if(qAbs(diff.x())<GRIDSIZE/4 && qAbs(diff.y())<GRIDSIZE/4){
- ev->acceptProposedAction(); //nothing to do - but keep the drag active
- }else{
+ QPoint diff = ev->pos() - (geom.center()-QPoint(1,1)); //need difference from center (pixels)
+ //Note: Use the 1x1 pixel offset to ensure that the center point is not exactly on a grid point intersection (2x2, 4x4, etc)
//qDebug() << "Resize Plugin:" << geom << grid << posToGrid(geom.center()) << diff;
geom = geomToGrid(geom); //convert to grid coordinates now
//qDebug() << " - Grid Geom:" << geom;
@@ -206,11 +203,11 @@ protected:
//Check Validity of new geom
if(ValidGeometry(act.section("::::",1,50), geom)){
item->setGeometry(geom);
+ item->setFixedSize(geom.size()); //needed due to resizing limitations and such for some plugins
ev->acceptProposedAction();
item->savePluginGeometry(geom); //save in pixel coords
}else{ ev->ignore(); } //invalid location
}
- }
}
}else if(ev->mimeData()->hasUrls()){
ev->acceptProposedAction(); //allow this to be dropped here
diff --git a/lumina-desktop/desktop-plugins/LDPlugin.h b/lumina-desktop/desktop-plugins/LDPlugin.h
index 521a89f4..d1a9c743 100644
--- a/lumina-desktop/desktop-plugins/LDPlugin.h
+++ b/lumina-desktop/desktop-plugins/LDPlugin.h
@@ -141,7 +141,10 @@ protected:
}
QWidget::mouseMoveEvent(ev);
}
-
+ void resizeEvent(QResizeEvent *ev){
+ emit PluginResized();
+ QFrame::resizeEvent(ev); //do normal processing
+ }
};
#endif
diff --git a/lumina-desktop/desktop-plugins/calendar/CalendarPlugin.h b/lumina-desktop/desktop-plugins/calendar/CalendarPlugin.h
index e9652e17..133a3af6 100644
--- a/lumina-desktop/desktop-plugins/calendar/CalendarPlugin.h
+++ b/lumina-desktop/desktop-plugins/calendar/CalendarPlugin.h
@@ -33,6 +33,7 @@ public:
timer->setInterval(1800000); //30 minute refresh timer
timer->start();
QTimer::singleShot(0,this, SLOT(updateDate()) );
+ connect(this, SIGNAL(PluginResized()), this, SLOT(UpdateCalendarSize()));
}
~CalendarPlugin(){ timer->stop(); }
@@ -44,6 +45,9 @@ private slots:
cal->showSelectedDate();
}
}
+ void UpdateCalendarSize(){
+ cal->setFixedSize(this->size());
+ }
};
bgstack15