]> git.lyx.org Git - features.git/commitdiff
Improve implementation of TabWorkArea::posIsTab()
authorScott Kostyshak <skostysh@lyx.org>
Fri, 29 Jul 2016 17:06:49 +0000 (13:06 -0400)
committerScott Kostyshak <skostysh@lyx.org>
Fri, 29 Jul 2016 17:09:48 +0000 (13:09 -0400)
The Qt documentation states that tabAt() returns -1 if the position
is not over a tab. This behavior has been consistent since Qt 4.3
[1]. This commit's improvement likely makes the code faster in two
ways:

(1) we do not need to loop through potentially all tabs
(2) we only need to look up the tab index corresponding with one
position

posIsTab() is not currently used intensively so no practical gain in
speed is achieved, but it protects against future use.

[1] https://doc.qt.io/archives/4.3/qtabbar.html#tabAt

src/frontends/qt4/GuiWorkArea.cpp

index b9e5e8ec87a361777fe0dd0668621146d9011a24..9223964e426054b985f033d804bfba52fd83415e 100644 (file)
@@ -1650,10 +1650,8 @@ void TabWorkArea::paintEvent(QPaintEvent * event)
 
 bool TabWorkArea::posIsTab(QPoint position)
 {
-       for (int i = 0; i < count(); ++i)
-               if (tabBar()->tabRect(i).contains(position))
-                       return true;
-       return false;
+       // tabAt returns -1 if tab does not covers position
+       return tabBar()->tabAt(position) > -1;
 }