ewk_context_notify_low_memory(ewk_context_);
}
+bool WebApplication::OnContextMenuDisabled(WebView* /*view*/) {
+ return !app_data_->setting_info()->context_menu_enabled();
+}
+
void WebApplication::OnLoadStart(WebView* view) {
LoggerD("LoadStart");
}
virtual void OnRendered(WebView* view);
virtual void OnLanguageChanged();
virtual void OnLowMemory();
+ virtual bool OnContextMenuDisabled(WebView* view);
private:
void ClearViewStack();
console_message_callback,
this);
+
+ auto custom_context_menu = [](void* user_data,
+ Evas_Object*,
+ void* event_info) {
+ Ewk_Context_Menu* contextmenu = static_cast<Ewk_Context_Menu*>(event_info);
+ WebView* self = static_cast<WebView*>(user_data);
+ bool disabled = false;
+ if (self->listener_ && self->listener_->OnContextMenuDisabled(self)) {
+ disabled = true;
+ }
+ int cnt = ewk_context_menu_item_count(contextmenu);
+ for (unsigned idx = cnt-1; idx > 0; --idx) {
+ auto* item = ewk_context_menu_nth_item_get(contextmenu, idx);
+ Ewk_Context_Menu_Item_Tag tag = ewk_context_menu_item_tag_get(item);
+ switch (tag) {
+ case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_IMAGE_IN_NEW_WINDOW:
+ case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_LINK_IN_NEW_WINDOW:
+ case EWK_CONTEXT_MENU_ITEM_TAG_OPEN_FRAME_IN_NEW_WINDOW:
+ case EWK_CONTEXT_MENU_ITEM_TAG_SEARCH_WEB:
+ case EWK_CONTEXT_MENU_ITEM_TAG_DOWNLOAD_IMAGE_TO_DISK:
+ ewk_context_menu_item_remove(contextmenu, item);
+ break;
+ default:
+ if (disabled)
+ ewk_context_menu_item_remove(contextmenu, item);
+ }
+ }
+ };
+
// rotation support
ewk_view_orientation_send(ewk_view_, ToWebRotation(window_->rotation()));
rotation_handler_id_ = window_->AddRotationHandler(
bool /*lock*/,
int /*preferred_rotation*/) {}
virtual void OnConsoleMessage(const std::string& /*msg*/, int /*level*/) {}
+ virtual bool OnContextMenuDisabled(WebView* /*view*/) { return false; }
};
WebView(wrt::NativeWindow* window, Ewk_Context* context);