summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-10-17 11:09:56 +0200
committerArno <am@disconnect.de>2010-10-17 11:09:56 +0200
commitfe9e348cc2ec4990b0c81179b0507f4a1df54c95 (patch)
treed1b793941906c9a681ce39562df69ec84aa064df
parent20df1c43f5b7425810b5d16e3658f0772aae9b6c (diff)
downloadSheMov-fe9e348cc2ec4990b0c81179b0507f4a1df54c95.tar.gz
SheMov-fe9e348cc2ec4990b0c81179b0507f4a1df54c95.tar.bz2
SheMov-fe9e348cc2ec4990b0c81179b0507f4a1df54c95.zip
Revert "Revert "Let HoverWindow always stay on screen""
This reverts commit 20df1c43f5b7425810b5d16e3658f0772aae9b6c. revert the revert... I actually wanted to check out something...
-rw-r--r--filestreewidget.cpp9
-rw-r--r--hoverwindow.cpp16
-rw-r--r--hoverwindow.h1
-rw-r--r--seriestreewidget.cpp6
4 files changed, 23 insertions, 9 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 43611f9..1181c21 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -327,10 +327,7 @@ bool FilesTreeView::event(QEvent *e){
mCurHover = curIdx;
QPixmap pm = QPixmap(curIdx.data(FilesTreeModel::FullPathRole).toString());
mHoverWin->setPixmap(pm);
- if(mHoverWin->pixmapHeight()){
- where = QPoint(where.x(), where.y() - mHoverWin->pixmapHeight() / 2);
- }
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
mHoverWin->setVisible(true);
return true;
}
@@ -342,11 +339,11 @@ bool FilesTreeView::event(QEvent *e){
mCurHover = curIdx;
mHoverWin->setPixmap(QPixmap(curIdx.data(FilesTreeModel::FullPathRole).toString()));
mHoverWin->setVisible(false);
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
mHoverWin->setVisible(true);
return true;
}else{
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
return true;
}
}
diff --git a/hoverwindow.cpp b/hoverwindow.cpp
index 8c5f227..100f278 100644
--- a/hoverwindow.cpp
+++ b/hoverwindow.cpp
@@ -7,6 +7,8 @@
#include <QHBoxLayout>
#include <QLabel>
+#include <QApplication>
+#include <QDesktopWidget>
#include "hoverwindow.h"
@@ -51,3 +53,17 @@ int HoverWindow::pixmapHeight() const{
const QPixmap *pm = mLabel->pixmap();
return pm ? pm->height() : 0;
}
+
+void HoverWindow::setPos(const QPoint &cursorPos){
+ if(cursorPos.y() - height() / 2 < 0){
+ move(QPoint(cursorPos.x(), 0));
+ return;
+ }
+ QDesktopWidget *desktop = qApp->desktop();
+ int desktopHeight = desktop->availableGeometry().height();
+ if(cursorPos.y() + height() / 2 > desktopHeight){
+ move(QPoint(cursorPos.x(), desktopHeight - height()));
+ return;
+ }
+ move(cursorPos);
+}
diff --git a/hoverwindow.h b/hoverwindow.h
index 6991d0b..4223f9a 100644
--- a/hoverwindow.h
+++ b/hoverwindow.h
@@ -19,6 +19,7 @@ class HoverWindow : public QWidget {
void setContent(const QString &parent, const QStringList &children);
void setPixmap(const QPixmap &pm);
int pixmapHeight() const;
+ void setPos(const QPoint &cursorPos);
private:
QLabel *mLabel;
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 77784b8..c9abafd 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -358,7 +358,7 @@ bool SeriesTreeView::event(QEvent *e){
if(e->type() == QEvent::HoverEnter){
mCurHover = curIdx;
mHoverWin->setContent(curIdx.data(Qt::DisplayRole).toString(), children(curIdx));
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
mHoverWin->setVisible(true);
return true;
}
@@ -367,11 +367,11 @@ bool SeriesTreeView::event(QEvent *e){
mCurHover = curIdx;
mHoverWin->setContent(curIdx.data(Qt::DisplayRole).toString(), children(curIdx));
mHoverWin->setVisible(false);
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
mHoverWin->setVisible(true);
return true;
}else{
- mHoverWin->move(where);
+ mHoverWin->setPos(where);
return true;
}
}