Kaydet (Commit) b29464a8 authored tarafından Rodolfo Ribeiro Gomes's avatar Rodolfo Ribeiro Gomes Kaydeden (comit) Noel Grandin

less if-nesting in ThumnailView

Easier to read.

Change-Id: I1ceb551d8badffb211b1f444b61375a03cac1348
Signed-off-by: 's avatarRodolfo Ribeiro Gomes <rodolforg@gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/6643Reviewed-by: 's avatarNoel Grandin <noelgrandin@gmail.com>
Tested-by: 's avatarNoel Grandin <noelgrandin@gmail.com>
üst 44b113fd
...@@ -732,113 +732,116 @@ void ThumbnailView::MakeItemVisible( sal_uInt16 nItemId ) ...@@ -732,113 +732,116 @@ void ThumbnailView::MakeItemVisible( sal_uInt16 nItemId )
void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt ) void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
{ {
if ( rMEvt.IsLeft() ) if ( !rMEvt.IsLeft() )
{ {
size_t nPos = ImplGetItem(rMEvt.GetPosPixel()); Control::MouseButtonDown( rMEvt );
ThumbnailViewItem* pItem = ImplGetItem(nPos); return;
}
if (pItem) size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
{ ThumbnailViewItem* pItem = ImplGetItem(nPos);
if ( rMEvt.GetClicks() == 1 )
{
if (rMEvt.IsMod1())
{
//Keep selected item group state and just invert current desired one state
pItem->setSelection(!pItem->isSelected());
//This one becomes the selection range start position if it changes its state to selected otherwise resets it if ( !pItem )
mpStartSelRange = pItem->isSelected() ? mFilteredItemList.begin() + nPos : mFilteredItemList.end(); {
} deselectItems();
else if (rMEvt.IsShift() && mpStartSelRange != mFilteredItemList.end()) Control::MouseButtonDown( rMEvt );
{ return;
std::pair<size_t,size_t> aNewRange; }
aNewRange.first = mpStartSelRange - mFilteredItemList.begin();
aNewRange.second = nPos;
if (aNewRange.first > aNewRange.second) if ( rMEvt.GetClicks() == 2 )
std::swap(aNewRange.first,aNewRange.second); {
OnItemDblClicked(pItem);
return;
}
//Deselect the ones outside of it if ( rMEvt.GetClicks() == 1 )
for (size_t i = 0, n = mFilteredItemList.size(); i < n; ++i) {
{ if (rMEvt.IsMod1())
ThumbnailViewItem *pCurItem = mFilteredItemList[i]; {
//Keep selected item group state and just invert current desired one state
pItem->setSelection(!pItem->isSelected());
if (pCurItem->isSelected() && (i < aNewRange.first || i > aNewRange.second)) //This one becomes the selection range start position if it changes its state to selected otherwise resets it
{ mpStartSelRange = pItem->isSelected() ? mFilteredItemList.begin() + nPos : mFilteredItemList.end();
pCurItem->setSelection(false); }
else if (rMEvt.IsShift() && mpStartSelRange != mFilteredItemList.end())
{
std::pair<size_t,size_t> aNewRange;
aNewRange.first = mpStartSelRange - mFilteredItemList.begin();
aNewRange.second = nPos;
if (pCurItem->isVisible()) if (aNewRange.first > aNewRange.second)
DrawItem(pCurItem); std::swap(aNewRange.first,aNewRange.second);
maItemStateHdl.Call(pCurItem); //Deselect the ones outside of it
} for (size_t i = 0, n = mFilteredItemList.size(); i < n; ++i)
} {
ThumbnailViewItem *pCurItem = mFilteredItemList[i];
size_t nSelPos = mpStartSelRange - mFilteredItemList.begin(); if (pCurItem->isSelected() && (i < aNewRange.first || i > aNewRange.second))
{
pCurItem->setSelection(false);
//Select the items between start range and the selected item if (pCurItem->isVisible())
if (nSelPos != nPos) DrawItem(pCurItem);
{
int dir = nSelPos < nPos ? 1 : -1; maItemStateHdl.Call(pCurItem);
size_t nCurPos = nSelPos + dir; }
}
size_t nSelPos = mpStartSelRange - mFilteredItemList.begin();
while (nCurPos != nPos) //Select the items between start range and the selected item
{ if (nSelPos != nPos)
ThumbnailViewItem *pCurItem = mFilteredItemList[nCurPos]; {
int dir = nSelPos < nPos ? 1 : -1;
size_t nCurPos = nSelPos + dir;
if (!pCurItem->isSelected()) while (nCurPos != nPos)
{ {
pCurItem->setSelection(true); ThumbnailViewItem *pCurItem = mFilteredItemList[nCurPos];
if (pCurItem->isVisible()) if (!pCurItem->isSelected())
DrawItem(pCurItem); {
pCurItem->setSelection(true);
maItemStateHdl.Call(pCurItem); if (pCurItem->isVisible())
} DrawItem(pCurItem);
nCurPos += dir; maItemStateHdl.Call(pCurItem);
}
} }
pItem->setSelection(true); nCurPos += dir;
}
else
{
//If we got a group of selected items deselect the rest and only keep the desired one
//mark items as not selected to not fire unnecessary change state events.
pItem->setSelection(false);
deselectItems();
pItem->setSelection(true);
//Mark as initial selection range position and reset end one
mpStartSelRange = mFilteredItemList.begin() + nPos;
} }
}
if (pItem->isSelected()) pItem->setSelection(true);
{ }
bool bClickOnTitle = pItem->getTextArea().IsInside(rMEvt.GetPosPixel()); else
pItem->setEditTitle(bClickOnTitle); {
} //If we got a group of selected items deselect the rest and only keep the desired one
//mark items as not selected to not fire unnecessary change state events.
pItem->setSelection(false);
deselectItems();
pItem->setSelection(true);
if (!pItem->isHighlighted()) //Mark as initial selection range position and reset end one
DrawItem(pItem); mpStartSelRange = mFilteredItemList.begin() + nPos;
}
maItemStateHdl.Call(pItem); if (pItem->isSelected())
{
bool bClickOnTitle = pItem->getTextArea().IsInside(rMEvt.GetPosPixel());
pItem->setEditTitle(bClickOnTitle);
}
//fire accessible event?? if (!pItem->isHighlighted())
} DrawItem(pItem);
else if ( rMEvt.GetClicks() == 2 )
{
OnItemDblClicked(pItem);
}
return; maItemStateHdl.Call(pItem);
}
else if (!pItem)
deselectItems( );
}
Control::MouseButtonDown( rMEvt ); //fire accessible event??
}
} }
void ThumbnailView::MouseButtonUp( const MouseEvent& rMEvt ) void ThumbnailView::MouseButtonUp( const MouseEvent& rMEvt )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment