[vlc-commits] Qt: fix the Win32/Qt5 tooltip focus/raising issue
Benoit du Payrat
git at videolan.org
Thu May 26 15:02:34 CEST 2016
vlc | branch: master | Benoit du Payrat <benoit at videolabs.io> | Thu May 26 14:49:12 2016 +0200| [93ef5e5b18888dfc1fc2a24dd5e4a0caecfdad17] | committer: Jean-Baptiste Kempf
Qt: fix the Win32/Qt5 tooltip focus/raising issue
The time tooltip no longer puts the window in front on Windows, when
compiling VLC with Qt5
Close #12084 #8532
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=93ef5e5b18888dfc1fc2a24dd5e4a0caecfdad17
---
modules/gui/qt/util/input_slider.cpp | 3 ++-
modules/gui/qt/util/timetooltip.cpp | 22 ++++++----------------
2 files changed, 8 insertions(+), 17 deletions(-)
diff --git a/modules/gui/qt/util/input_slider.cpp b/modules/gui/qt/util/input_slider.cpp
index 1df342b..18fba1d 100644
--- a/modules/gui/qt/util/input_slider.cpp
+++ b/modules/gui/qt/util/input_slider.cpp
@@ -109,7 +109,7 @@ SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent, bool _static )
seekLimitTimer->setSingleShot( true );
/* Tooltip bubble */
- mTimeTooltip = new TimeTooltip( this );
+ mTimeTooltip = new TimeTooltip( NULL );
mTimeTooltip->setMouseTracking( true );
/* Properties */
@@ -174,6 +174,7 @@ SeekSlider::~SeekSlider()
delete chapters;
if ( alternativeStyle )
delete alternativeStyle;
+ delete mTimeTooltip;
}
/***
diff --git a/modules/gui/qt/util/timetooltip.cpp b/modules/gui/qt/util/timetooltip.cpp
index 574eca9..28fa7de 100644
--- a/modules/gui/qt/util/timetooltip.cpp
+++ b/modules/gui/qt/util/timetooltip.cpp
@@ -33,29 +33,15 @@
TimeTooltip::TimeTooltip( QWidget *parent ) :
QWidget( parent )
{
- setWindowFlags(
-#if defined( Q_OS_WIN )
- Qt::ToolTip
-#else
- Qt::Window |
+ setWindowFlags( Qt::Tool |
Qt::WindowStaysOnTopHint |
Qt::FramelessWindowHint |
- Qt::X11BypassWindowManagerHint
-#endif
- );
+ Qt::X11BypassWindowManagerHint );
// Tell Qt that it doesn't need to erase the background before
// a paintEvent occurs. This should save some CPU cycles.
setAttribute( Qt::WA_OpaquePaintEvent );
-#if defined( Q_OS_WIN ) || defined( Q_OS_OS2 )
- /*
- - This attribute is required on Windows and OS/2 to avoid focus stealing of other windows.
- - When set on Linux the TimeTooltip appears behind the FSController in fullscreen.
- */
- setAttribute( Qt::WA_ShowWithoutActivating );
-#endif
-
// Inherit from the system default font size -5
mFont = QFont( "Verdana", qMax( qApp->font().pointSize() - 5, 7 ) );
mTipX = -1;
@@ -83,7 +69,11 @@ void TimeTooltip::adjustPosition()
// The desired label position is just above the target
QPoint position( mTarget.x() - size.width() / 2,
+#if defined( Q_OS_WIN )
+ mTarget.y() - 2 * size.height() - TIP_HEIGHT / 2 );
+#else
mTarget.y() - size.height() + TIP_HEIGHT / 2 );
+#endif
// Keep the tooltip on the same screen if possible
QRect screen = QApplication::desktop()->screenGeometry( mTarget );
More information about the vlc-commits
mailing list