mbStackMode is always false now

Change-Id: I3d6c9b0cc07b3750a3f24b4cfc5138b49e62d06d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96600
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
Caolán McNamara 2020-06-17 19:40:23 +01:00
parent e5ef9a396b
commit 35245a605f
4 changed files with 14 additions and 115 deletions

View file

@ -205,7 +205,6 @@ public:
bool IsInDropDown() const;
void ToggleDropDown();
void EnableMultiSelection( bool bMulti, bool bStackSelection );
void EnableMultiSelection( bool bMulti );
bool IsMultiSelectionEnabled() const;

View file

@ -206,7 +206,6 @@ private:
bool mbSort : 1; ///< ListBox sorted
bool mbTrack : 1; ///< Tracking
bool mbMulti : 1; ///< MultiListBox
bool mbStackMode : 1; ///< StackSelection
bool mbSimpleMode : 1; ///< SimpleMode for MultiListBox
bool mbTravelSelect : 1; ///< TravelSelect
bool mbTrackingSelect : 1; ///< Selected at a MouseMove
@ -327,13 +326,13 @@ public:
void EnableUserDraw( bool bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
bool IsUserDrawEnabled() const { return mbUserDrawEnabled; }
void EnableMultiSelection( bool bMulti, bool bStackMode ) { mbMulti = bMulti; mbStackMode = bStackMode; }
void EnableMultiSelection( bool bMulti ) { mbMulti = bMulti; }
bool IsMultiSelectionEnabled() const { return mbMulti; }
void SetMultiSelectionSimpleMode( bool bSimple ) { mbSimpleMode = bSimple; }
void EnableMouseMoveSelect( bool bMouseMoveSelect ) { mbMouseMoveSelect = bMouseMoveSelect; }
bool IsMouseMoveSelect() const { return mbMouseMoveSelect||mbStackMode; }
bool IsMouseMoveSelect() const { return mbMouseMoveSelect; }
Size CalcSize(sal_Int32 nMaxLines) const;
tools::Rectangle GetBoundingRectangle( sal_Int32 nItem ) const;
@ -459,7 +458,7 @@ public:
bool IsTravelSelect() const { return maLBWindow->IsTravelSelect(); }
bool IsTrackingSelect() const { return maLBWindow->IsTrackingSelect(); }
void EnableMultiSelection( bool bMulti, bool bStackMode ) { maLBWindow->EnableMultiSelection( bMulti, bStackMode ); }
void EnableMultiSelection( bool bMulti ) { maLBWindow->EnableMultiSelection( bMulti ); }
bool IsMultiSelectionEnabled() const { return maLBWindow->IsMultiSelectionEnabled(); }
void SetMultiSelectionSimpleMode( bool bSimple ) { maLBWindow->SetMultiSelectionSimpleMode( bSimple ); }

View file

@ -457,7 +457,6 @@ ImplListBoxWindow::ImplListBoxWindow( vcl::Window* pParent, WinBits nWinStyle )
mbSelectionChanged = false;
mbMouseMoveSelect = false;
mbMulti = false;
mbStackMode = false;
mbGrabFocus = false;
mbUserDrawEnabled = false;
mbInUserDraw = false;
@ -880,27 +879,7 @@ void ImplListBoxWindow::MouseButtonDown( const MouseEvent& rMEvt )
void ImplListBoxWindow::MouseMove( const MouseEvent& rMEvt )
{
if ( rMEvt.IsLeaveWindow() )
{
if ( mbStackMode && IsMouseMoveSelect() && IsReallyVisible() )
{
if ( rMEvt.GetPosPixel().Y() < 0 )
{
DeselectAll();
mnCurrentPos = LISTBOX_ENTRY_NOTFOUND;
SetTopEntry( 0 );
if ( mbStackMode )
{
mbTravelSelect = true;
mnSelectModifier = rMEvt.GetModifier();
ImplCallSelect();
mbTravelSelect = false;
}
}
}
}
else if ( ( ( !mbMulti && IsMouseMoveSelect() ) || mbStackMode ) && mpEntryList->GetEntryCount() )
if (!rMEvt.IsLeaveWindow() && !mbMulti && IsMouseMoveSelect() && mpEntryList->GetEntryCount())
{
tools::Rectangle aRect( Point(), GetOutputSizePixel() );
if( aRect.IsInside( rMEvt.GetPosPixel() ) )
@ -920,19 +899,9 @@ void ImplListBoxWindow::MouseMove( const MouseEvent& rMEvt )
mbTrackingSelect = true;
if ( SelectEntries( nSelect, LET_TRACKING ) )
{
if ( mbStackMode )
{
mbTravelSelect = true;
mnSelectModifier = rMEvt.GetModifier();
ImplCallSelect();
mbTravelSelect = false;
}
// When list box selection change by mouse move, notify
// VclEventId::ListboxSelect vcl event.
else
{
maListItemSelectHdl.Call(nullptr);
}
maListItemSelectHdl.Call(nullptr);
}
mbTrackingSelect = false;
}
@ -947,9 +916,6 @@ void ImplListBoxWindow::MouseMove( const MouseEvent& rMEvt )
else
mnTrackingSaveSelection = LISTBOX_ENTRY_NOTFOUND;
if ( mbStackMode && ( mpEntryList->GetSelectionAnchor() == LISTBOX_ENTRY_NOTFOUND ) )
mpEntryList->SetSelectionAnchor( 0 );
StartTracking( StartTrackingFlags::ScrollRepeat );
}
}
@ -1052,45 +1018,30 @@ bool ImplListBoxWindow::SelectEntries( sal_Int32 nSelect, LB_EVENT_TYPE eLET, bo
mpEntryList->SetSelectionAnchor( nSelect );
}
// MultiListBox only with CTRL/SHIFT or not in SimpleMode
else if( ( !mbSimpleMode /* && !bShift */ ) || ( (mbSimpleMode && ( bCtrl || bShift )) || mbStackMode ) )
else if( ( !mbSimpleMode /* && !bShift */ ) || ( mbSimpleMode && ( bCtrl || bShift ) ) )
{
// Space for selection change
if( !bShift && ( ( eLET == LET_KEYSPACE ) || ( eLET == LET_MBDOWN ) ) )
{
bool bSelect = ( mbStackMode && IsMouseMoveSelect() ) || !mpEntryList->IsEntryPosSelected( nSelect );
if ( mbStackMode )
{
sal_Int32 n;
if ( bSelect )
{
// All entries before nSelect must be selected...
for ( n = 0; n < nSelect; n++ )
SelectEntry( n, true );
}
if ( !bSelect )
{
for ( n = nSelect+1; n < mpEntryList->GetEntryCount(); n++ )
SelectEntry( n, false );
}
}
bool bSelect = !mpEntryList->IsEntryPosSelected( nSelect );
SelectEntry( nSelect, bSelect );
mpEntryList->SetLastSelected( nSelect );
mpEntryList->SetSelectionAnchor( mbStackMode ? 0 : nSelect );
mpEntryList->SetSelectionAnchor( nSelect );
if ( !mpEntryList->IsEntryPosSelected( nSelect ) )
mpEntryList->SetSelectionAnchor( LISTBOX_ENTRY_NOTFOUND );
bFocusChanged = true;
bSelectionChanged = true;
}
else if( ( ( eLET == LET_TRACKING ) && ( nSelect != mnCurrentPos ) ) ||
( (bShift||mbStackMode) && ( ( eLET == LET_KEYMOVE ) || ( eLET == LET_MBDOWN ) ) ) )
( bShift && ( ( eLET == LET_KEYMOVE ) || ( eLET == LET_MBDOWN ) ) ) )
{
mnCurrentPos = nSelect;
bFocusChanged = true;
sal_Int32 nAnchor = mpEntryList->GetSelectionAnchor();
if( ( nAnchor == LISTBOX_ENTRY_NOTFOUND ) && ( mpEntryList->GetSelectedEntryCount() || mbStackMode ) )
if( ( nAnchor == LISTBOX_ENTRY_NOTFOUND ) && mpEntryList->GetSelectedEntryCount() )
{
nAnchor = mbStackMode ? 0 : mpEntryList->GetSelectedEntryPos( mpEntryList->GetSelectedEntryCount() - 1 );
nAnchor = mpEntryList->GetSelectedEntryPos( mpEntryList->GetSelectedEntryCount() - 1 );
}
if( nAnchor != LISTBOX_ENTRY_NOTFOUND )
{
@ -1260,16 +1211,7 @@ void ImplListBoxWindow::Tracking( const TrackingEvent& rTEvt )
if ( ( nSelect != mnCurrentPos ) || !GetEntryList()->GetSelectedEntryCount() )
{
mbTrackingSelect = true;
if ( SelectEntries( nSelect, LET_TRACKING, bShift, bCtrl ) )
{
if ( mbStackMode )
{
mbTravelSelect = true;
mnSelectModifier = rTEvt.GetMouseEvent().GetModifier();
ImplCallSelect();
mbTravelSelect = false;
}
}
SelectEntries(nSelect, LET_TRACKING, bShift, bCtrl);
mbTrackingSelect = false;
}
}
@ -1281,42 +1223,6 @@ void ImplListBoxWindow::Tracking( const TrackingEvent& rTEvt )
SelectEntry( GetEntryList()->GetSelectedEntryPos( 0 ), false );
mbTrackingSelect = false;
}
else if ( mbStackMode )
{
if ( ( rTEvt.GetMouseEvent().GetPosPixel().X() > 0 ) && ( rTEvt.GetMouseEvent().GetPosPixel().X() < aRect.Right() ) )
{
if ( ( rTEvt.GetMouseEvent().GetPosPixel().Y() < 0 ) || ( rTEvt.GetMouseEvent().GetPosPixel().Y() > GetOutputSizePixel().Height() ) )
{
bool bSelectionChanged = false;
if ( ( rTEvt.GetMouseEvent().GetPosPixel().Y() < 0 )
&& !mnCurrentPos )
{
if ( mpEntryList->IsEntryPosSelected( 0 ) )
{
SelectEntry( 0, false );
bSelectionChanged = true;
nSelect = LISTBOX_ENTRY_NOTFOUND;
}
}
else
{
mbTrackingSelect = true;
bSelectionChanged = SelectEntries( nSelect, LET_TRACKING, bShift, bCtrl );
mbTrackingSelect = false;
}
if ( bSelectionChanged )
{
mbSelectionChanged = true;
mbTravelSelect = true;
mnSelectModifier = rTEvt.GetMouseEvent().GetModifier();
ImplCallSelect();
mbTravelSelect = false;
}
}
}
}
}
mnCurrentPos = nSelect;
if ( mnCurrentPos == LISTBOX_ENTRY_NOTFOUND )
@ -1559,7 +1465,7 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
{
if ( !bMod2 && !IsReadOnly() )
{
if( mbMulti && ( !mbSimpleMode || ( mbSimpleMode && bCtrl && !bShift ) || mbStackMode ) )
if( mbMulti && ( !mbSimpleMode || ( mbSimpleMode && bCtrl && !bShift ) ) )
{
nSelect = mnCurrentPos;
eLET = LET_KEYSPACE;

View file

@ -1123,12 +1123,7 @@ tools::Rectangle ListBox::GetBoundingRectangle( sal_Int32 nItem ) const
void ListBox::EnableMultiSelection( bool bMulti )
{
EnableMultiSelection( bMulti, false );
}
void ListBox::EnableMultiSelection( bool bMulti, bool bStackSelection )
{
mpImplLB->EnableMultiSelection( bMulti, bStackSelection );
mpImplLB->EnableMultiSelection( bMulti );
// WB_SIMPLEMODE:
// The MultiListBox behaves just like a normal ListBox