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 )
void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
{
if ( rMEvt.IsLeft() )
if ( !rMEvt.IsLeft() )
{
size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
ThumbnailViewItem* pItem = ImplGetItem(nPos);
Control::MouseButtonDown( rMEvt );
return;
}
if (pItem)
{
if ( rMEvt.GetClicks() == 1 )
{
if (rMEvt.IsMod1())
{
//Keep selected item group state and just invert current desired one state
pItem->setSelection(!pItem->isSelected());
size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
ThumbnailViewItem* pItem = ImplGetItem(nPos);
//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();
}
else if (rMEvt.IsShift() && mpStartSelRange != mFilteredItemList.end())
{
std::pair<size_t,size_t> aNewRange;
aNewRange.first = mpStartSelRange - mFilteredItemList.begin();
aNewRange.second = nPos;
if ( !pItem )
{
deselectItems();
Control::MouseButtonDown( rMEvt );
return;
}
if (aNewRange.first > aNewRange.second)
std::swap(aNewRange.first,aNewRange.second);
if ( rMEvt.GetClicks() == 2 )
{
OnItemDblClicked(pItem);
return;
}
//Deselect the ones outside of it
for (size_t i = 0, n = mFilteredItemList.size(); i < n; ++i)
{
ThumbnailViewItem *pCurItem = mFilteredItemList[i];
if ( rMEvt.GetClicks() == 1 )
{
if (rMEvt.IsMod1())
{
//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))
{
pCurItem->setSelection(false);
//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();
}
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())
DrawItem(pCurItem);
if (aNewRange.first > aNewRange.second)
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 (nSelPos != nPos)
{
int dir = nSelPos < nPos ? 1 : -1;
size_t nCurPos = nSelPos + dir;
if (pCurItem->isVisible())
DrawItem(pCurItem);
maItemStateHdl.Call(pCurItem);
}
}
size_t nSelPos = mpStartSelRange - mFilteredItemList.begin();
while (nCurPos != nPos)
{
ThumbnailViewItem *pCurItem = mFilteredItemList[nCurPos];
//Select the items between start range and the selected item
if (nSelPos != nPos)
{
int dir = nSelPos < nPos ? 1 : -1;
size_t nCurPos = nSelPos + dir;
if (!pCurItem->isSelected())
{
pCurItem->setSelection(true);
while (nCurPos != nPos)
{
ThumbnailViewItem *pCurItem = mFilteredItemList[nCurPos];
if (pCurItem->isVisible())
DrawItem(pCurItem);
if (!pCurItem->isSelected())
{
pCurItem->setSelection(true);
maItemStateHdl.Call(pCurItem);
}
if (pCurItem->isVisible())
DrawItem(pCurItem);
nCurPos += dir;
}
maItemStateHdl.Call(pCurItem);
}
pItem->setSelection(true);
}
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;
nCurPos += dir;
}
}
if (pItem->isSelected())
{
bool bClickOnTitle = pItem->getTextArea().IsInside(rMEvt.GetPosPixel());
pItem->setEditTitle(bClickOnTitle);
}
pItem->setSelection(true);
}
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);
if (!pItem->isHighlighted())
DrawItem(pItem);
//Mark as initial selection range position and reset end one
mpStartSelRange = mFilteredItemList.begin() + nPos;
}
maItemStateHdl.Call(pItem);
if (pItem->isSelected())
{
bool bClickOnTitle = pItem->getTextArea().IsInside(rMEvt.GetPosPixel());
pItem->setEditTitle(bClickOnTitle);
}
//fire accessible event??
}
else if ( rMEvt.GetClicks() == 2 )
{
OnItemDblClicked(pItem);
}
if (!pItem->isHighlighted())
DrawItem(pItem);
return;
}
else if (!pItem)
deselectItems( );
}
maItemStateHdl.Call(pItem);
Control::MouseButtonDown( rMEvt );
//fire accessible event??
}
}
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