Modified: trunk/Source/WebKit2/ChangeLog (127841 => 127842)
--- trunk/Source/WebKit2/ChangeLog 2012-09-07 08:19:10 UTC (rev 127841)
+++ trunk/Source/WebKit2/ChangeLog 2012-09-07 08:28:09 UTC (rev 127842)
@@ -1,3 +1,25 @@
+2012-09-07 Eunmi Lee <eunmi15....@samsung.com>
+
+ [EFL][WK2] Add APIs to enable or disable the mouse events of the ewk_view.
+ https://bugs.webkit.org/show_bug.cgi?id=88631
+
+ Reviewed by Gyuyoung Kim.
+
+ We can turn on/off the mouse events of the ewk_view using the mouse
+ events enabling API. This API can be used when we want to turn off the
+ mouse events on the touchscreen device to process the touch events
+ instead of the mouse events.
+
+ * UIProcess/API/efl/ewk_view.cpp:
+ (_Ewk_View_Private_Data):
+ (_Ewk_View_Private_Data::_Ewk_View_Private_Data):
+ (_ewk_view_smart_add):
+ (ewk_view_mouse_events_enabled_set):
+ (ewk_view_mouse_events_enabled_get):
+ * UIProcess/API/efl/ewk_view.h:
+ * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+ (TEST_F):
+
2012-09-07 Tim Horton <timothy_hor...@apple.com>
Add optional debug logging when we fall into/out of threaded scrolling
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp (127841 => 127842)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-09-07 08:19:10 UTC (rev 127841)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-09-07 08:28:09 UTC (rev 127842)
@@ -92,6 +92,7 @@
LoadingResourcesMap loadingResourcesMap;
Ewk_Back_Forward_List* backForwardList;
OwnPtr<Ewk_Settings> settings;
+ bool areMouseEventsEnabled;
WebPopupMenuProxyEfl* popupMenuProxy;
Eina_List* popupMenuItems;
@@ -109,6 +110,7 @@
_Ewk_View_Private_Data()
: cursorObject(0)
, backForwardList(0)
+ , areMouseEventsEnabled(false)
, popupMenuProxy(0)
, popupMenuItems(0)
#ifdef HAVE_ECORE_X
@@ -413,13 +415,12 @@
evas_object_smart_member_add(smartData->image, ewkView);
evas_object_show(smartData->image);
+ ewk_view_mouse_events_enabled_set(ewkView, true);
+
#define CONNECT(s, c) evas_object_event_callback_add(ewkView, s, c, smartData)
CONNECT(EVAS_CALLBACK_FOCUS_IN, _ewk_view_on_focus_in);
CONNECT(EVAS_CALLBACK_FOCUS_OUT, _ewk_view_on_focus_out);
CONNECT(EVAS_CALLBACK_MOUSE_WHEEL, _ewk_view_on_mouse_wheel);
- CONNECT(EVAS_CALLBACK_MOUSE_DOWN, _ewk_view_on_mouse_down);
- CONNECT(EVAS_CALLBACK_MOUSE_UP, _ewk_view_on_mouse_up);
- CONNECT(EVAS_CALLBACK_MOUSE_MOVE, _ewk_view_on_mouse_move);
CONNECT(EVAS_CALLBACK_KEY_DOWN, _ewk_view_on_key_down);
CONNECT(EVAS_CALLBACK_KEY_UP, _ewk_view_on_key_up);
#undef CONNECT
@@ -1552,3 +1553,34 @@
return true;
}
+
+Eina_Bool ewk_view_mouse_events_enabled_set(Evas_Object* ewkView, Eina_Bool enabled)
+{
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
+
+ enabled = !!enabled;
+ if (priv->areMouseEventsEnabled == enabled)
+ return true;
+
+ priv->areMouseEventsEnabled = enabled;
+ if (enabled) {
+ evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_DOWN, _ewk_view_on_mouse_down, smartData);
+ evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_UP, _ewk_view_on_mouse_up, smartData);
+ evas_object_event_callback_add(ewkView, EVAS_CALLBACK_MOUSE_MOVE, _ewk_view_on_mouse_move, smartData);
+ } else {
+ evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_DOWN, _ewk_view_on_mouse_down);
+ evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_UP, _ewk_view_on_mouse_up);
+ evas_object_event_callback_del(ewkView, EVAS_CALLBACK_MOUSE_MOVE, _ewk_view_on_mouse_move);
+ }
+
+ return true;
+}
+
+Eina_Bool ewk_view_mouse_events_enabled_get(const Evas_Object* ewkView)
+{
+ EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
+
+ return priv->areMouseEventsEnabled;
+}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h (127841 => 127842)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-09-07 08:19:10 UTC (rev 127841)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-09-07 08:28:09 UTC (rev 127842)
@@ -630,6 +630,28 @@
*/
EAPI Eina_Bool ewk_view_popup_menu_close(Evas_Object *o);
+/**
+ * Sets whether the ewk_view supports the mouse events or not.
+ *
+ * The ewk_view will support the mouse events if EINA_TRUE or not support the
+ * mouse events otherwise. The default value is EINA_TRUE.
+ *
+ * @param o view object to enable/disable the mouse events
+ * @param enabled a state to set
+ *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
+ */
+EAPI Eina_Bool ewk_view_mouse_events_enabled_set(Evas_Object *o, Eina_Bool enabled);
+
+/**
+ * Queries if the ewk_view supports the mouse events.
+ *
+ * @param o view object to query if the mouse events are enabled
+ *
+ * @return @c EINA_TRUE if the mouse events are enabled or @c EINA_FALSE otherwise
+ */
+EAPI Eina_Bool ewk_view_mouse_events_enabled_get(const Evas_Object *o);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp (127841 => 127842)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp 2012-09-07 08:19:10 UTC (rev 127841)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp 2012-09-07 08:28:09 UTC (rev 127842)
@@ -24,6 +24,7 @@
#include "UnitTestUtils/EWK2UnitTestServer.h"
#include <EWebKit2.h>
#include <Ecore.h>
+#include <Eina.h>
#include <gtest/gtest.h>
#include <wtf/OwnPtr.h>
#include <wtf/PassOwnPtr.h>
@@ -287,3 +288,15 @@
ewk_view_html_string_load(webView(), buttonHTML, "file:///", 0);
waitUntilTitleChangedTo("299"); // button of big button theme has 299px as padding (150 to -150)
}
+
+TEST_F(EWK2UnitTestBase, ewk_view_mouse_events_enabled)
+{
+ ASSERT_TRUE(ewk_view_mouse_events_enabled_set(webView(), EINA_TRUE));
+ ASSERT_TRUE(ewk_view_mouse_events_enabled_get(webView()));
+
+ ASSERT_TRUE(ewk_view_mouse_events_enabled_set(webView(), 2));
+ ASSERT_TRUE(ewk_view_mouse_events_enabled_get(webView()));
+
+ ASSERT_TRUE(ewk_view_mouse_events_enabled_set(webView(), EINA_FALSE));
+ ASSERT_FALSE(ewk_view_mouse_events_enabled_get(webView()));
+}