if (__checkButtonStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || __checkButtonStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
{
__pCheckButtonPresenter->CalculateButtonBounds();
+ __pCheckButtonPresenter->InitOnOffHandlerMoved();
__pCheckButtonPresenter->AdjustHandlerPosition();
}
if (status == _CHECK_BUTTON_STATUS_NORMAL && __onOffHandlerPressed == false)
{
+ if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
+ {
+ AdjustHandlerPosition();
+
+ __onOffHandlerPressed = false;
+ __onOffHandlerMoved = false;
+ }
+
return true;
}
}
result
+_CheckButtonPresenter::InitOnOffHandlerMoved(void)
+{
+ __onOffHandlerMoved = false;
+
+ return E_SUCCESS;
+}
+
+result
_CheckButtonPresenter::AdjustHandlerPosition(void)
{
float handlerWidth = 0.0f;
FloatRectangle bounds = __pCheckButton->GetClientBoundsF();
bool isInCheckButtonArea = bounds.Contains(touchPoint);
+ bool isInOnOffHandlerArea = __onOffSlidingButtonBounds.Contains(touchPoint);
if (__onOffHandlerPressed == true)
{
}
else
{
- if (isInCheckButtonArea == true && (__touchMoveHandled != true))
+ if (isInCheckButtonArea == true && __touchMoveHandled == false && isInOnOffHandlerArea == false )
{
__pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_PRESSED);
}
if (checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING || checkStyle == CHECK_BUTTON_STYLE_ONOFF_SLIDING_WITH_DIVIDER)
{
- bool isInOnOffHandlerArea = __onOffSlidingButtonBounds.Contains(touchPoint);
-
- if (isInOnOffHandlerArea == true)
+ if (isInOnOffHandlerArea == true && __onOffHandlerPressed == true)
{
__onOffHandlerPosition = touchPoint.x;
__pCheckButton->Invalidate();
- return false;
+ if (__onOffHandlerMoved == true)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
void
}
}
+ __pToolbar->Invalidate(true);
+
return true;
}
}
}
else
{
- if (__initialPressesItemStatus == _BUTTON_STATUS_DISABLED)
- {
- return false;
- }
-
if (__tabMoved)
{
pCurrentButton->SetButtonStatus(__initialPressesItemStatus, false);
}
else
{
+ if (__initialPressesItemStatus == _BUTTON_STATUS_DISABLED)
+ {
+ return false;
+ }
+
if (itemBounds.Contains(touchPoint))
{
pCurrentButton->SetButtonStatus(_BUTTON_STATUS_PRESSED);
return false;
}
- __editItemIndex = longPressedItemIndex;
-
- __beingEdited = true;
-
_Button* pButton = null;
- pButton = __pToolbar->GetItem(__editItemIndex);
+ pButton = __pToolbar->GetItem(longPressedItemIndex);
SysTryReturn(NID_UI_CTRL, pButton, true, E_INVALID_STATE, "[E_INVALID_STATE] Unable to retrieve a button");
+ if (pButton->GetButtonStatus() == _BUTTON_STATUS_DISABLED)
+ {
+ return false;
+ }
+
+ __editItemIndex = longPressedItemIndex;
+ __beingEdited = true;
+
pButton->SetButtonStatus(_BUTTON_STATUS_NORMAL);
FloatRectangle itemBounds = pButton->GetBoundsF();