__pAllControlList->Add(pObject);
}
+ _HistoryInfo* pHistoryInfo = new (std::nothrow) _HistoryInfo(pObject);
+ SysTryReturn(NID_SHELL, pHistoryInfo, _ControlHandle(), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ pHistoryInfo->SetBacktrace(*pObject->__pNewBacktrace.get());
+
+ AddHistory(__pNewHistory, pHistoryInfo);
+
return __objectManager.Register(*pObject);
}
__pAllControlList->Remove(pObject);
}
+ _HistoryInfo* pHistoryInfo = new (std::nothrow) _HistoryInfo(pObject);
+ SysTryReturn(NID_SHELL, pHistoryInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ pHistoryInfo->SetBacktrace(*pObject->__pDeleteBacktrace.get());
+
+ AddHistory(__pDeleteHistory, pHistoryInfo);
+
return __objectManager.Unregister(handle);
}
, __screenDpi(0)
, __pClipboardOwner(null)
, __pControlManagerEventListenerList(new (std::nothrow) LinkedListT<_IControlManagerEventListener*>)
+ , __pNewHistory(null)
+ , __pDeleteHistory(null)
{
result r = _CoordinateInfo::GetAppCoordinateSystem(__isCoordinateSystemLogical, __logicalCoordinateSystem, __logicalBaseScreenSize);
SysTryReturnVoidResult(NID_UI, r == E_SUCCESS, E_SYSTEM, "[E_SYSTEM] System error occurred.");
_EcoreEvas::CreateInstanceN();
+ __pNewHistory = new (std::nothrow) ArrayListT<_HistoryInfo*>;
+ SysTryReturnVoidResult(NID_SHELL, __pNewHistory, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ r = __pNewHistory->Construct();
+ SysTryReturnVoidResult(NID_SHELL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ __pDeleteHistory = new (std::nothrow) ArrayListT<_HistoryInfo*>;
+ SysTryReturnVoidResult(NID_SHELL, __pDeleteHistory, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+ r = __pDeleteHistory->Construct();
+ SysTryReturnVoidResult(NID_SHELL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+
__pWindowList = new (std::nothrow)LinkedListT<_Window*>;
SysTryCatch(NID_UI, __pWindowList, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
__pGestureList = null;
}
+ if (__pNewHistory)
+ {
+ delete __pNewHistory;
+ __pNewHistory = null;
+ }
+
+ if (__pDeleteHistory)
+ {
+ delete __pDeleteHistory;
+ __pDeleteHistory = null;
+ }
+
DestroyEcoreEvasMgr();
_IndicatorManager::ReleaseInstance();
_ControlManager::OnSettingChanged(Tizen::Base::String& key)
{
const wchar_t* FONT_TYPE = L"http://tizen.org/setting/font.type";
- const wchar_t* LOCALE_COUNTRY = L"http://tizen.org/setting/locale.country";
- const wchar_t* LOCALE_LANGUAGE = L"http://tizen.org/setting/locale.language";
+ const wchar_t* LOCALE_COUNTRY = L"http://tizen.org/setting/locale.country";
+ const wchar_t* LOCALE_LANGUAGE = L"http://tizen.org/setting/locale.language";
- if (key == FONT_TYPE || key == LOCALE_COUNTRY || key == LOCALE_LANGUAGE)
+ if (key == FONT_TYPE || key == LOCALE_COUNTRY || key == LOCALE_LANGUAGE)
{
_FontImpl::UpdateDefaultFont(key);
__isSystemFontChanged = true;
struct _Visitor
- : public _Control::Visitor
+ : public _Control::Visitor
{
- virtual _Control::VisitType Visit(_Control& control)
+ virtual _Control::VisitType Visit(_Control& control)
{
control.GetFallbackFont();
_IControlDelegate& delegate = control.GetControlDelegate();
IEnumeratorT<_TouchGestureDetector*>* pEnumerator = __pGestureList->GetEnumeratorN();
SysTryReturnVoidResult(NID_UI, pEnumerator, E_SYSTEM, "[E_SYSTEM] System error occurred.")
- int duration = static_cast<int>(elm_config_longpress_timeout_get() * 1000);
+ int duration = static_cast<int>(elm_config_longpress_timeout_get() * 1000);
if (duration == 0)
{
duration = 500;
{
_TouchLongPressGestureDetector* pGestureLongPress= dynamic_cast<_TouchLongPressGestureDetector*>(const_cast<_TouchGestureDetector*>(pGestureDetector));
SysTryReturnVoidResult(NID_UI, pGestureLongPress, E_SYSTEM, "[E_SYSTEM] System error occurred.")
- pGestureLongPress->SetDuration(duration);
+ pGestureLongPress->SetDuration(duration);
}
}
}
}
+void
+_ControlManager::AddHistory(ArrayListT<_HistoryInfo*>* pHistoryList, _HistoryInfo* pHistoryInfo)
+{
+ SysTryReturnVoidResult(NID_SHELL, pHistoryList, E_INVALID_ARG, "[E_INVALID_ARG].");
+ SysTryReturnVoidResult(NID_SHELL, pHistoryInfo, E_INVALID_ARG, "[E_INVALID_ARG].");
+
+ const int COUNT_MAX = 500;
+
+ int count = pHistoryList->GetCount();
+ if (count > COUNT_MAX)
+ {
+ _HistoryInfo* pInfo = null;
+ pHistoryList->GetAt(0, pInfo);
+ delete pInfo;
+
+ pHistoryList->RemoveAt(0);
+ }
+
+ pHistoryList->Add(pHistoryInfo);
+}
+
+_ControlManager::_HistoryInfo::_HistoryInfo(_Control* pControl)
+ : __pControl(pControl)
+ , __pBacktrace(new (std::nothrow) ArrayListT<void*>)
+{
+}
+
+_ControlManager::_HistoryInfo::~_HistoryInfo(void)
+{
+ if (__pBacktrace)
+ {
+ delete __pBacktrace;
+ __pBacktrace = null;
+ }
+}
+
+void
+_ControlManager::_HistoryInfo::SetBacktrace(Tizen::Base::Collection::ArrayListT<void*>& backtrace)
+{
+ __pBacktrace->Construct(backtrace);
+}
+
}} // Tizen::Ui