Merge lp:~osomon/unity-2d/panel-hover-fixes into lp:unity-2d/3.0

Proposed by Olivier Tilloy
Status: Merged
Approved by: Olivier Tilloy
Approved revision: 583
Merged at revision: 584
Proposed branch: lp:~osomon/unity-2d/panel-hover-fixes
Merge into: lp:unity-2d/3.0
Diff against target: 58 lines (+7/-21)
2 files modified
panel/applets/appname/appnameapplet.cpp (+5/-19)
panel/applets/appname/appnameapplet.h (+2/-2)
To merge this branch: bzr merge lp:~osomon/unity-2d/panel-hover-fixes
Reviewer Review Type Date Requested Status
Aurélien Gâteau (community) Needs Fixing
Review via email: mp+63528@code.launchpad.net

Commit message

[panel] Show the current window’s menu only when the mouse cursor hovers over the appname applet, not the whole panel.

Description of the change

This merge request fixes bug #793403 and bug #793406. Both of them are low importance bugs, but they are a blocker for an OEM project based on Unity-2d, so a review of the fix would be very welcome. Thanks!

To post a comment you must log in.
Revision history for this message
Aurélien Gâteau (agateau) wrote :

Looks good, only suggestion would be to simplify the code checking whether the mouse is over the panel. This line:

  && (geometry().contains(window()->mapFromGlobal(QCursor::pos()))

Can be replaced with:

  && (rect().contains(mapFromGlobal(QCursor::pos()))

Feel free to approve and get it merged after this change is done.

review: Needs Fixing
583. By Olivier Tilloy

Simplified the code.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'panel/applets/appname/appnameapplet.cpp'
--- panel/applets/appname/appnameapplet.cpp 2011-04-26 15:20:08 +0000
+++ panel/applets/appname/appnameapplet.cpp 2011-06-06 13:12:38 +0000
@@ -221,7 +221,7 @@
221 bool isUserVisibleApp = app ? app->user_visible() : false;221 bool isUserVisibleApp = app ? app->user_visible() : false;
222 bool isOnSameScreen = d->m_windowHelper->isMostlyOnScreen(QApplication::desktop()->screenNumber(this));222 bool isOnSameScreen = d->m_windowHelper->isMostlyOnScreen(QApplication::desktop()->screenNumber(this));
223 bool showMenu = (!d->m_menuBarWidget->isEmpty() && isUserVisibleApp && isOnSameScreen)223 bool showMenu = (!d->m_menuBarWidget->isEmpty() && isUserVisibleApp && isOnSameScreen)
224 && (window()->geometry().contains(QCursor::pos())224 && (rect().contains(mapFromGlobal(QCursor::pos()))
225 || KeyboardModifiersMonitor::instance()->keyboardModifiers() == Qt::AltModifier225 || KeyboardModifiersMonitor::instance()->keyboardModifiers() == Qt::AltModifier
226 || d->m_menuBarWidget->isOpened()226 || d->m_menuBarWidget->isOpened()
227 );227 );
@@ -258,26 +258,12 @@
258 d->m_menuBarWidget->setVisible(showMenu);258 d->m_menuBarWidget->setVisible(showMenu);
259}259}
260260
261bool AppNameApplet::event(QEvent* event)261void AppNameApplet::enterEvent(QEvent*) {
262{262 updateWidgets();
263 if (event->type() == QEvent::ParentChange) {
264 // Install an event filter on the panel to detect mouse over
265 window()->installEventFilter(this);
266 }
267 return Applet::event(event);
268}263}
269264
270bool AppNameApplet::eventFilter(QObject*, QEvent* event)265void AppNameApplet::leaveEvent(QEvent*) {
271{266 updateWidgets();
272 switch (event->type()) {
273 case QEvent::HoverEnter:
274 case QEvent::HoverLeave:
275 updateWidgets();
276 break;
277 default:
278 break;
279 }
280 return false;
281}267}
282268
283} // namespace269} // namespace
284270
=== modified file 'panel/applets/appname/appnameapplet.h'
--- panel/applets/appname/appnameapplet.h 2011-01-15 01:41:03 +0000
+++ panel/applets/appname/appnameapplet.h 2011-06-06 13:12:38 +0000
@@ -41,8 +41,8 @@
41 ~AppNameApplet();41 ~AppNameApplet();
4242
43protected:43protected:
44 bool event(QEvent*); // reimp44 void enterEvent(QEvent*);
45 bool eventFilter(QObject*, QEvent*); // reimp45 void leaveEvent(QEvent*);
4646
47private Q_SLOTS:47private Q_SLOTS:
48 void updateWidgets();48 void updateWidgets();

Subscribers

People subscribed via source and target branches