[Title] Fixed sometimes foucs ring disappear late and is not shown.
[Issue#] N/A
[Problem]
1. Sometimes focus ring disappear after loading new page.
2. Sometimes focus ring is not shown.
[Cause]
1. After new page was loaded, timer for hidding focus ring expire.
So, focus ring disappear late.
2. After new page was loaded, timer for showing focus ring expire.
And then, to getting focus ring node is performed at new page.
[Solution]
1. When new load is commited, added code to hide focus ring immediately.
2. If focus ring is not showing just before tap is performed,
added code to show focus ring immediately.
Change-Id: I9e65f9dc8231038722ec45995a5207880fd76035
EWK_VIEW_IMPL_GET_OR_RETURN(smartData, impl);
impl->gestureClient->reset();
#endif
+#if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
+ if (impl->focusRing)
+ impl->focusRing->hide();
+#endif
#if ENABLE(TIZEN_ISF_PORT)
impl->inputMethodContext()->hideIMFContext();
#endif
}
}
-void FocusRing::requestToShow(const IntPoint& position)
+void FocusRing::requestToShow(const IntPoint& position, bool immediately)
{
if (!m_imagePath.isNull())
return;
+ if (immediately) {
+ if (m_focusRingObject && evas_object_visible_get(m_focusRingObject))
+ return;
+ else {
+ if (m_showTimer) {
+ ecore_timer_del(m_showTimer);
+ m_showTimer = 0;
+ }
+
+ m_position = position;
+ show(IntRect());
+ return;
+ }
+ }
+
m_position = position;
if (m_showTimer)
void setImage(const String&, int, int);
- void requestToShow(const WebCore::IntPoint&);
+ void requestToShow(const WebCore::IntPoint&, bool immediately = false);
void requestToHide(bool immediately = false);
void show(const WebCore::IntRect&, const bool includeOnlyImage = false);
if (!isValid())
return;
-#if ENABLE(TIZEN_ISF_PORT)
+#if ENABLE(TIZEN_ISF_PORT) || ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
if (event.type() == WebEvent::GestureSingleTap) {
+#if ENABLE(TIZEN_WEBKIT2_FOCUS_RING)
+ FocusRing* focusRing = ewkViewGetFocusRing(viewWidget());
+ if (focusRing) {
+ IntPoint tapPosition = EwkViewImpl::fromEvasObject(viewWidget())->transformToScene().mapPoint(event.position());
+ focusRing->requestToShow(tapPosition, true);
+ }
+#endif
+
+#if ENABLE(TIZEN_ISF_PORT)
InputMethodContextEfl* inputMethodContext = static_cast<PageClientImpl*>(m_pageClient)->viewImpl()->inputMethodContext();
if (inputMethodContext)
inputMethodContext->resetIMFContext();
+#endif
}
#endif