Blocking traversaltag setting on KeyRelease: Fix for N_SE-53471
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_TableViewItem.cpp
index c8331bf..a434ac3 100644 (file)
@@ -278,11 +278,11 @@ _TableViewItem::~_TableViewItem()
 {
        __isAnimationCallbackBlocked = true;
 
-       StopTouchPressedTimer();
+       StopTouchPressedTimer(true);
        delete __pPressedTimer;
        __pPressedTimer = null;
 
-       StopTouchReleasedTimer();
+       StopTouchReleasedTimer(true);
        delete __pReleasedTimer;
        __pReleasedTimer = null;
 
@@ -726,14 +726,14 @@ _TableViewItem::CreateDetailButton(void)
 }
 
 _Label*
-_TableViewItem::GetLabelCore(Label* label)
+_TableViewItem::GetLabelCore(Label* pLabel)
 {
-       if (label == null)
+       if (pLabel == null)
        {
                return null;
        }
 
-       _LabelImpl* pImpl = _LabelImpl::GetInstance(*label);
+       _LabelImpl* pImpl = _LabelImpl::GetInstance(*pLabel);
        return &pImpl->GetCore();
 }
 
@@ -1414,7 +1414,7 @@ _TableViewItem::FireItemTouchPressed()
 }
 
 void
-_TableViewItem::FireItemTouchReleased()
+_TableViewItem::FireItemTouchReleased(bool isTouchRelease)
 {
        if (__isTouchCancelOnPressRelease == true)
        {
@@ -1514,6 +1514,20 @@ _TableViewItem::FireItemTouchReleased()
 
        if (fireItemEvent)
        {
+               if (isTouchRelease)
+               {
+                       int groupIndex = -1;
+                       int itemIndex = -1;
+                       GetItemIndex(groupIndex, itemIndex);
+                       if (GetParent())
+                       {
+                               _TableView* pTableView = dynamic_cast<_TableView*>(GetParent());
+                               if (pTableView)
+                               {
+                                       pTableView->SetFocusItemOnPressedState(groupIndex, itemIndex);
+                               }
+                       }
+               }
                FireItemEvent(selectedItem);
        }
 }
@@ -1811,7 +1825,7 @@ CATCH:
 }
 
 void
-_TableViewItem::StopTouchPressedTimer(void)
+_TableViewItem::StopTouchPressedTimer(bool forceStop)
 {
        result r = E_SUCCESS;
 
@@ -1820,7 +1834,7 @@ _TableViewItem::StopTouchPressedTimer(void)
                return;
        }
 
-       if (__isPressedTimerEnabled)
+       if (__isPressedTimerEnabled || forceStop)
        {
                r = __pPressedTimer->Cancel();
                SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -1868,7 +1882,7 @@ CATCH:
 }
 
 void
-_TableViewItem::StopTouchReleasedTimer(void)
+_TableViewItem::StopTouchReleasedTimer(bool forceStop)
 {
        result r = E_SUCCESS;
 
@@ -1877,7 +1891,7 @@ _TableViewItem::StopTouchReleasedTimer(void)
                return;
        }
 
-       if (__isReleasedTimerEnabled)
+       if (__isReleasedTimerEnabled || forceStop)
        {
                r = __pReleasedTimer->Cancel();
                SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -2104,6 +2118,16 @@ _TableViewItem::OnBoundsChanged(void)
        {
                __pAccessibilityElement->SetBounds(FloatRectangle(0.0f,0.0f, GetBoundsF().width, GetBoundsF().height));
        }
+
+       RemoveFocusRing(true);
+       if (IsFocusModeStateEnabled())
+       {
+               if (GetRootWindow() && GetRootWindow()->IsActivated()
+                               && IsFocused())
+               {
+                       DrawFocus();
+               }
+       }
 }
 
 void
@@ -2276,11 +2300,9 @@ void
 _TableViewItem::DrawSectionStyleBackground(void)
 {
        Canvas* pCanvas = null;
-       Bitmap* pSectionBg = null;
-       Bitmap* pSectionPressBg = null;
-       Bitmap* pSectionDisabledBg = null;
        Bitmap* pReplacementSectionPressBg = null;
        Bitmap* pReplacementSectionBg = null;
+       Bitmap* pReplacementSectionDisabledBg = null;
        Color bgColor = __colorItemBg[__drawingStatus];
        FloatRectangle bounds = GetBoundsF();
        float dividerHeight = 0.0f;
@@ -2293,27 +2315,53 @@ _TableViewItem::DrawSectionStyleBackground(void)
        pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
        pCanvas->Clear();
 
-       if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
-       {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
-       }
-       else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
-       {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
-       }
-       else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
+       if (bgColor != null)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
-       }
-       else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
-       {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBg);
+               if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
+               }
+               else
+               {
+                       r = E_SYSTEM;
+               }
        }
        else
        {
-               r = E_SYSTEM;
+               if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDrawingProperty->sectionStyleBgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDrawingProperty->sectionStyleBgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDrawingProperty->sectionStyleBgColor, pReplacementSectionBg);
+               }
+               else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
+               {
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pDrawingProperty->sectionStyleBgColor, pReplacementSectionBg);
+               }
+               else
+               {
+                       r = E_SYSTEM;
+               }
        }
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred.  SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred.  SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
 
        if (__enabledState)
        {
@@ -2323,107 +2371,96 @@ _TableViewItem::DrawSectionStyleBackground(void)
                        {
                                if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_SINGLE_BG_PRESSED))
                                {
-                                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
-                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionPressBg);
+                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                                }
                        }
                        else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
                        {
                                if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_TOP_BG_PRESSED))
                                {
-                                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
-                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionPressBg);
+                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                                }
                        }
                        else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
                        {
                                if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_CENTER_BG_PRESSED))
                                {
-                                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
-                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionPressBg);
+                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                                }
                        }
                        else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
                        {
                                if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_BOTTOM_BG_PRESSED))
                                {
-                                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionPressBg);
-                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionPressBg);
+                                       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                                }
                        }
 
                        GET_FIXED_VALUE_CONFIG(TABLEVIEW::ITEM_DIVIDER_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, dividerHeight);
 
-                       if (pSectionPressBg)
+                       if (pReplacementSectionPressBg)
                        {
-                               pReplacementSectionPressBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionPressBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
+                               DrawBitmap(*pCanvas, FloatRectangle(0.0f, dividerHeight, bounds.width, bounds.height - (dividerHeight * 2)), *pReplacementSectionPressBg);
                        }
                        else
                        {
-                               pReplacementSectionPressBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
+                               DrawBitmap(*pCanvas, FloatRectangle(0.0f, dividerHeight, bounds.width, bounds.height - (dividerHeight * 2)), *pReplacementSectionBg);
                        }
-
-                       DrawBitmap(*pCanvas, FloatRectangle(0.0f, dividerHeight, bounds.width, bounds.height - (dividerHeight * 2)), *pReplacementSectionPressBg);
                }
                else
                {
-                       if (bgColor != null)
-                       {
-                               pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
-                       }
-                       else
-                       {
-                               pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), __pDrawingProperty->sectionStyleBgColor);
-                       }
-
                        DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
                }
        }
        else
        {
+               GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
+
                if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
                {
                        if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_SINGLE_BG_DISABLED))
                        {
-                               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
-                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionDisabledBg);
+                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                        }
                }
                else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
                {
                        if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_TOP_BG_DISABLED))
                        {
-                               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
-                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionDisabledBg);
+                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                        }
                }
                else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
                {
                        if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_CENTER_BG_DISABLED))
                        {
-                               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
-                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionDisabledBg);
+                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                        }
                }
                else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
                {
                        if (IS_CUSTOM_BITMAP(TABLEVIEW::SECTIONITEM_BOTTOM_BG_DISABLED))
                        {
-                               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionDisabledBg);
-                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+                               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionDisabledBg);
+                               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
                        }
                }
 
-               GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
-               if (pSectionDisabledBg)
+               if (pReplacementSectionDisabledBg)
                {
-                       pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionDisabledBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
+                       DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionDisabledBg);
                }
                else
                {
-                       pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
+                       DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
                }
-               DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementSectionBg);
        }
 
        if (__pDrawingProperty->groupedLookEnabled == true)
@@ -2441,11 +2478,9 @@ _TableViewItem::DrawSectionStyleBackground(void)
        }
 
 CATCH:
-       delete pSectionBg;
-       delete pSectionPressBg;
-       delete pSectionDisabledBg;
        delete pReplacementSectionPressBg;
        delete pReplacementSectionBg;
+       delete pReplacementSectionDisabledBg;
        delete pCanvas;
 }
 
@@ -2458,77 +2493,73 @@ _TableViewItem::DrawSectionStyleBackgroundCover(void)
                return;
        }
 
-       Bitmap* pSectionBgCoverEf = null;
        Bitmap* pReplacementSectionBgEf = null;
        Bitmap* pReplacementSectionBg = null;
-       Bitmap* pSectionBgCoverBg = null;
        Bitmap* pMergeBitmap = null;
        Canvas* pCanvas = null;
        Color bgColor;
 
        result r = E_SUCCESS;
        FloatRectangle bounds = GetBoundsF();
+
+       if (__enabledState)
+       {
+               _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
+               SysTryCatch(NID_UI_CTRL, pParent != null, , E_SYSTEM, "[%s] A system error has been occurred. SectionTableView  load failed", GetErrorMessage(E_SYSTEM));
+
+               bgColor = pParent->GetBackgroundColor();
+       }
+       else
+       {
+               GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
+       }
+
        if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBgEf);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBgEf);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBgEf);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverEf);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBgEf);
        }
        else
        {
                r = E_SYSTEM;
        }
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
 
        if (__itemType == TABLE_VIEW_ITEM_TYPE_ONE)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_SINGLE_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_TOP)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_TOP_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_MIDDLE)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_CENTER_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
        }
        else if (__itemType == TABLE_VIEW_ITEM_TYPE_BOTTOM)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pSectionBgCoverBg);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::SECTIONITEM_BOTTOM_COVER_ROUND_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementSectionBg);
        }
        else
        {
                r = E_SYSTEM;
        }
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM) );
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. SectionStyle image load failed", GetErrorMessage(E_SYSTEM));
 
        __pItemCover->SetBounds(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
 
-       if (__enabledState)
-       {
-               _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
-               SysTryCatch(NID_UI_CTRL, pParent != null, , E_SYSTEM, "[%s] A system error has been occurred. SectionTableView  load failed", GetErrorMessage(E_SYSTEM) );
-
-               bgColor = pParent->GetBackgroundColor();
-       }
-       else
-       {
-               GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
-       }
-
-       pReplacementSectionBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBgCoverBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
-       pReplacementSectionBgEf = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pSectionBgCoverEf, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
-
        pCanvas = new (std::nothrow) Canvas();
        SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
        pCanvas->Construct(FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height));
@@ -2548,10 +2579,8 @@ _TableViewItem::DrawSectionStyleBackgroundCover(void)
        __pItemCover->SetBackgroundBitmap(*pMergeBitmap);
 
 CATCH:
-       delete pSectionBgCoverEf;
        delete pReplacementSectionBgEf;
        delete pReplacementSectionBg;
-       delete pSectionBgCoverBg;
        delete pCanvas;
        delete pMergeBitmap;
 }
@@ -2560,7 +2589,6 @@ void
 _TableViewItem::DrawContextItemBackground(void)
 {
        Canvas* pCanvas = null;
-       Bitmap* pContextBg = null;
        Bitmap* pContextBgEf = null;
        Bitmap* pReplacementContextBg = null;
        Color bgColor = __colorItemBg[__drawingStatus];
@@ -2568,18 +2596,6 @@ _TableViewItem::DrawContextItemBackground(void)
        FloatRectangle bounds = GetBoundsF();
        result r = E_SUCCESS;
 
-       r = GET_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pContextBg);
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
-
-       r = GET_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pContextBgEf);
-       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
-
-       pCanvas = GetVisualElement()->GetCanvasN();
-       SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
-       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
-       pCanvas->Clear();
-
        if (__enabledState)
        {
                if (bgColor == null)
@@ -2591,15 +2607,24 @@ _TableViewItem::DrawContextItemBackground(void)
        {
                GET_COLOR_CONFIG(TABLEVIEW::ITEM_BG_DISABLED, bgColor);
        }
-       pReplacementContextBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pContextBg, Color::GetColor(COLOR_ID_MAGENTA), bgColor);
-       SysTryCatch(NID_UI_CTRL, pReplacementContextBg != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, bgColor, pReplacementContextBg);
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
+
+       r = GET_BITMAP_CONFIG_N(TABLEVIEW::QUICK_MENU_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pContextBgEf);
+       SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[%s] A system error has been occurred. ContextItem image load failed", GetErrorMessage(E_SYSTEM));
+
+       pCanvas = GetVisualElement()->GetCanvasN();
+       SysTryCatch(NID_UI_CTRL, pCanvas != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+       pCanvas->Clear();
 
        DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pReplacementContextBg);
        DrawBitmap(*pCanvas, FloatRectangle(0.0f, 0.0f, bounds.width, bounds.height), *pContextBgEf);
 
 CATCH:
        delete pCanvas;
-       delete pContextBg;
        delete pContextBgEf;
        delete pReplacementContextBg;
 }
@@ -2955,7 +2980,7 @@ _TableViewItem::AdjustAnnexOnOffHandlerPosition()
                if (annexStartPositionX <= __annexOnOffHandlerPositionX
                        && annexEndPositionX >= __annexOnOffHandlerPositionX)
                {
-                       if (((annexEndPositionX - annexStartPositionX) / 2) < (__annexOnOffHandlerPositionX + (handlerBounds.width / 2)) - annexStartPositionX )
+                       if (((annexEndPositionX - annexStartPositionX) / 2) < (__annexOnOffHandlerPositionX + (handlerBounds.width / 2)) - annexStartPositionX)
                        {
                                handlerPositionX = annexEndPositionX;
                                SetChecked(true);
@@ -3089,8 +3114,6 @@ CATCH:
 void
 _TableViewItem::DrawDetailButton(void)
 {
-       Bitmap* pDetail = null;
-       Bitmap* pDetailBg = null;
        Bitmap* pDetailBgEffect = null;
        Bitmap* pDetailEffect = null;
        Bitmap* pReplacementDetail = null;
@@ -3110,9 +3133,6 @@ _TableViewItem::DrawDetailButton(void)
 
        if (__enabledState)
        {
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBg);
-               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
-
                if (__isSelectedDetailButton)
                {
                        if (!themeBackgroundBitmap)
@@ -3124,10 +3144,11 @@ _TableViewItem::DrawDetailButton(void)
                                SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM,"[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
                        }
 
-                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
-                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
-
                        GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_PRESSED, replacementNewColor);
+
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, replacementNewColor, pReplacementDetail);
+                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pReplacementDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+
                        GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_BG_PRESSED, replacementNewBgColor);
                }
                else
@@ -3141,16 +3162,16 @@ _TableViewItem::DrawDetailButton(void)
                                SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
                        }
 
-                       r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
-                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
-
                        GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_NORMAL, replacementNewColor);
+
+                       r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, replacementNewColor, pReplacementDetail);
+                       SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pReplacementDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+
                        GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_BG_NORMAL, replacementNewBgColor);
                }
        }
        else
        {
-
                if (!themeBackgroundBitmap)
                {
                        r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBgEffect);
@@ -3160,19 +3181,20 @@ _TableViewItem::DrawDetailButton(void)
                        SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailEffect != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
                }
 
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetail);
-               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+               GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_NORMAL, replacementNewColor);
 
-               r = GET_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pDetailBg);
-               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_REVEAL_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, replacementNewColor, pReplacementDetail);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pReplacementDetail != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
 
-               GET_COLOR_CONFIG(TABLEVIEW::ITEM_ANNEX_DETAIL_NORMAL, replacementNewColor);
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, replacementNewBgColor, pReplacementDetailBg);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pReplacementDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
        }
-       pReplacementDetailBg = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pDetailBg, Color::GetColor(COLOR_ID_MAGENTA), replacementNewBgColor);
-       SysTryCatch(NID_UI_CTRL, pReplacementDetailBg != null, r = E_SYSTEM, E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
 
-       pReplacementDetail = Tizen::Graphics::_BitmapImpl::GetColorReplacedBitmapN(*pDetail, Color::GetColor(COLOR_ID_MAGENTA), replacementNewColor);
-       SysTryCatch(NID_UI_CTRL, pReplacementDetail != null, r = E_SYSTEM, E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+       if (pReplacementDetailBg == null)
+       {
+               r = GET_REPLACED_BITMAP_CONFIG_N(TABLEVIEW::CIRCLE_BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, replacementNewBgColor, pReplacementDetailBg);
+               SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS) && (pReplacementDetailBg != null), , E_SYSTEM, "[%s] A system error has been occurred. Detail button image load failed", GetErrorMessage(E_SYSTEM));
+       }
 
        GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, annexWidth);
        GET_SHAPE_CONFIG(TABLEVIEW::ITEM_ANNEX_MORE_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, annexHeight);
@@ -3206,8 +3228,6 @@ _TableViewItem::DrawDetailButton(void)
        __pItemAnnex->Invalidate(false);
 
 CATCH:
-       delete pDetail;
-       delete pDetailBg;
        delete pDetailBgEffect;
        delete pDetailEffect;
        delete pReplacementDetail;
@@ -4014,9 +4034,20 @@ _TableViewItem::AdjustAnnexBounds(void)
                        float leftMargin = 0.0f;
 
                        GET_SHAPE_CONFIG(TABLEVIEW::ITEM_LEFT_MARGIN, _CONTROL_ORIENTATION_PORTRAIT, leftMargin);
-                       leftMargin += __pDrawingProperty->scrollMargin;
+
+                       if (__pDrawingProperty != null)
+                       {
+                               leftMargin += __pDrawingProperty->scrollMargin;
+                       }
 
                        annexPositionX = GetBoundsF().width - annexBounds.width - leftMargin;
+                       if (__pDrawingProperty != null && __pDrawingProperty->groupedLookEnabled)
+                       {
+                               float groupedBarMargin = 0.0f;
+                               GET_SHAPE_CONFIG(TABLEVIEW::GROUPITEM_BAR_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, groupedBarMargin);
+
+                               annexPositionX += groupedBarMargin;
+                       }
 
                        if (!_FloatCompare(annexPositionX, annexBounds.x))
                        {
@@ -4868,6 +4899,11 @@ _TableViewItem::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
                return false;
        }
 
+       if (IsReorderMode() || IsAnimationPlaying())
+       {
+               return false;
+       }
+
        _TableView* pParent = dynamic_cast<_TableView*>(GetParent());
        _KeyCode keyCode = keyInfo.GetKeyCode();
        IListT<_Control*>* pFocusList = GetFocusListN();
@@ -5091,6 +5127,11 @@ _TableViewItem::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                return false;
        }
 
+       if (IsReorderMode() || IsAnimationPlaying())
+       {
+               return false;
+       }
+
        _KeyCode keyCode = keyInfo.GetKeyCode();
 
        if (keyCode == _KEY_ENTER)
@@ -5115,7 +5156,7 @@ _TableViewItem::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                {
                        __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
                }
-               FireItemTouchReleased();
+               FireItemTouchReleased(false);
                return true;
        }
        else if (keyCode == _KEY_LEFT || keyCode == _KEY_RIGHT)
@@ -5129,8 +5170,6 @@ _TableViewItem::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 void
 _TableViewItem::OnFocusModeStateChanged(void)
 {
-       __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
-
        ResetItemState();
 }
 
@@ -5139,6 +5178,7 @@ _TableViewItem::ResetItemState(void)
 {
        __itemSelected = false;
        __drawingStatus = TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL;
+       __releasedControl = TABLE_VIEW_ITEM_PRESSED_NONE;
 
        if (__annexStyle == TABLE_VIEW_ANNEX_STYLE_DETAILED)
        {
@@ -5286,7 +5326,7 @@ _TableViewItem::IsTouchPressOnScroll(void) const
 void
 _TableViewItem::OnVisibleStateChanged(void)
 {
-       if (IsFocused())
+       if (IsFocused() && !GetVisibleState())
        {
                RemoveFocusRing();
        }
@@ -5295,7 +5335,7 @@ _TableViewItem::OnVisibleStateChanged(void)
 void
 _TableViewItem::OnAncestorEnableStateChanged(const _Control& control)
 {
-       if (IsFocused())
+       if (IsFocused() && !IsEnabled())
        {
                RemoveFocusRing();
        }
@@ -5304,7 +5344,7 @@ _TableViewItem::OnAncestorEnableStateChanged(const _Control& control)
 void
 _TableViewItem::OnAncestorVisibleStateChanged(const _Control& control)
 {
-       if (IsFocused())
+       if (IsFocused() && !IsVisible())
        {
                RemoveFocusRing();
        }