diff options
author | Arno <am@disconnect.de> | 2010-10-17 08:14:47 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-10-17 08:14:47 +0200 |
commit | a3a556cc8af3433de1f8d5e22a4ba62cc029f145 (patch) | |
tree | d1b793941906c9a681ce39562df69ec84aa064df | |
parent | d7db872a15418d20392990a65d9525c11e2a4fa4 (diff) | |
download | SheMov-a3a556cc8af3433de1f8d5e22a4ba62cc029f145.tar.gz SheMov-a3a556cc8af3433de1f8d5e22a4ba62cc029f145.tar.bz2 SheMov-a3a556cc8af3433de1f8d5e22a4ba62cc029f145.zip |
Let HoverWindow always stay on screen
Fixed HoverWindow so it always stays completely on screeen.
-rw-r--r-- | filestreewidget.cpp | 9 | ||||
-rw-r--r-- | hoverwindow.cpp | 16 | ||||
-rw-r--r-- | hoverwindow.h | 1 | ||||
-rw-r--r-- | seriestreewidget.cpp | 6 |
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; } } |