summaryrefslogtreecommitdiffstats
path: root/vcl/source/window/taskpanelist.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/window/taskpanelist.cxx')
-rw-r--r--vcl/source/window/taskpanelist.cxx24
1 files changed, 7 insertions, 17 deletions
diff --git a/vcl/source/window/taskpanelist.cxx b/vcl/source/window/taskpanelist.cxx
index 1f382b824907..35828b7d1429 100644
--- a/vcl/source/window/taskpanelist.cxx
+++ b/vcl/source/window/taskpanelist.cxx
@@ -61,19 +61,6 @@ struct LTRSort
return ( pos1.X() < pos2.X() );
}
};
-struct LTRSortBackward
-{
- bool operator()( const vcl::Window* w2, const vcl::Window* w1 ) const
- {
- Point pos1(ImplTaskPaneListGetPos( w1 ));
- Point pos2(ImplTaskPaneListGetPos( w2 ));
-
- if( pos1.X() == pos2.X() )
- return ( pos1.Y() < pos2.Y() );
- else
- return ( pos1.X() < pos2.X() );
- }
-};
static void ImplTaskPaneListGrabFocus( vcl::Window *pWindow, bool bForward )
{
@@ -258,10 +245,10 @@ vcl::Window* TaskPaneList::FindNextSplitter( vcl::Window *pWindow )
// returns first valid item (regardless of type) if pWindow==0, otherwise returns next valid float
vcl::Window* TaskPaneList::FindNextFloat( vcl::Window *pWindow, bool bForward )
{
- if( bForward )
- ::std::stable_sort( mTaskPanes.begin(), mTaskPanes.end(), LTRSort() );
- else
- ::std::stable_sort( mTaskPanes.begin(), mTaskPanes.end(), LTRSortBackward() );
+ ::std::stable_sort( mTaskPanes.begin(), mTaskPanes.end(), LTRSort() );
+
+ if ( !bForward )
+ ::std::reverse( mTaskPanes.begin(), mTaskPanes.end() );
auto p = mTaskPanes.begin();
if( pWindow )
@@ -285,6 +272,9 @@ vcl::Window* TaskPaneList::FindNextFloat( vcl::Window *pWindow, bool bForward )
++p;
}
+ if ( !bForward )
+ ::std::reverse( mTaskPanes.begin(), mTaskPanes.end() );
+
return pWindow;
}