EnableBackButton(false);
EnableForwardButton(false);
-
- extra_actions_menu_ = CreateExtraActionsMenu(window_.GetEvasObject());
}
void WindowUI::OnURLChanged(const char* url) {
return bt;
}
+namespace {
+
+void _HideCtxPopup(void* data, Evas_Object* obj, void*) {
+ evas_object_hide(obj);
+}
+
+} // namespace
+
Evas_Object* WindowUI::CreateExtraActionsMenu(Evas_Object* parent) {
- Evas_Object* menu = elm_menu_add(parent);
- elm_menu_item_add(menu, NULL, NULL,
- "Override User Agent String", &WindowUI::OnUAOverride, this);
+ Evas_Object* menu = elm_ctxpopup_add(parent);
+ evas_object_smart_callback_add(menu, "dismissed", _HideCtxPopup, NULL);
+
+ elm_ctxpopup_item_append(menu, "Override User Agent String",
+ NULL, &WindowUI::OnUAOverride, this);
if (browser_.IsDesktop()) {
- elm_menu_item_add(menu, NULL, NULL,
- "Show Web Inspector", &WindowUI::OnInspectorShow, this);
- elm_menu_item_add(menu, NULL, NULL, "Simulate screen rotation",
- &WindowUI::OnRotate, this);
-
- Elm_Object_Item* resize = elm_menu_item_add(menu, NULL, NULL, "Resize",
- NULL, NULL);
- elm_menu_item_add(menu, resize, NULL, "360x640",
- &WindowUI::OnResize, new std::pair<const char*, WindowUI*>("360x640", this));
- elm_menu_item_add(menu, resize, NULL, "800x600",
- &WindowUI::OnResize, new std::pair<const char*, WindowUI*>("800x600", this));
- elm_menu_item_add(menu, resize, NULL, "1024x768",
- &WindowUI::OnResize, new std::pair<const char*, WindowUI*>("1024x768", this));
- elm_menu_item_add(menu, resize, NULL, "1280x720",
- &WindowUI::OnResize, new std::pair<const char*, WindowUI*>("1280x720", this));
+ elm_ctxpopup_item_append(menu, "Show Web Inspector", NULL,
+ &WindowUI::OnInspectorShow, this);
+ }
+#if !defined(OS_TIZEN)
+ elm_ctxpopup_item_append(menu, "Simulate screen rotation", NULL,
+ &WindowUI::OnRotate, this);
+#endif
+
+ if (window_.AreTouchEventsEnabled()) {
+ elm_ctxpopup_item_append(menu, "Enable mouse events", NULL,
+ &WindowUI::OnSelectMouseInput, this);
+ } else {
+ elm_ctxpopup_item_append(menu, "Enable touch events", NULL,
+ &WindowUI::OnSelectTouchInput, this);
}
- Elm_Object_Item* input = elm_menu_item_add(menu, NULL, NULL, "Input event type",
- NULL, NULL);
- elm_menu_item_add(menu, input, NULL, "Mouse",
- &WindowUI::OnSelectMouseInput, this);
- elm_menu_item_add(menu, input, NULL, "Touch",
- &WindowUI::OnSelectTouchInput, this);
-
-#if defined(OS_TIZEN)
- // Techincally those functions change page scale factor, not zoom in/out.
- // The code was borrowed from mini_browser app. On desktop support for
- // page scale factor is disabled so don't show the options.
- elm_menu_item_add(menu, NULL, NULL,
- "Zoom in", &WindowUI::OnZoomIn, this);
- elm_menu_item_add(menu, NULL, NULL,
- "Zoom out", &WindowUI::OnZoomOut, this);
-#endif // OS_TIZEN
+ elm_ctxpopup_item_append(menu, "Zoom in", NULL, &WindowUI::OnZoomIn, this);
+ elm_ctxpopup_item_append(menu, "Zoom out", NULL, &WindowUI::OnZoomOut, this);
return menu;
}
void WindowUI::OnShowExtraActionsMenu(void *data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI* thiz = static_cast<WindowUI*>(data);
+ Evas_Object* popup = thiz->CreateExtraActionsMenu(
+ thiz->window_.GetEvasObject());
int x, y;
evas_object_geometry_get(obj, &x, &y, 0, 0);
- elm_menu_move(thiz->extra_actions_menu_, x, y);
- evas_object_show(thiz->extra_actions_menu_);
+ evas_object_move(popup, x, y);
+ evas_object_show(popup);
}
void WindowUI::OnURLEntered(void *data, Evas_Object*, void*) {
elm_object_focus_set(thiz->url_entry_, EINA_FALSE);
}
-void WindowUI::OnUAOverride(void* data, Evas_Object*, void*) {
+void WindowUI::OnUAOverride(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI *thiz = static_cast<WindowUI*>(data);
const char* ua = thiz->window_.GetUserAgent();
thiz->ShowTextEntryPopup("User Agent Override", ua,
&WindowUI::OnUAOverrideEntered);
+ elm_ctxpopup_dismiss(obj);
}
void WindowUI::OnUAOverrideEntered(void* data, Evas_Object*, void*) {
delete p;
}
-void WindowUI::OnInspectorShow(void* data, Evas_Object*, void*) {
+void WindowUI::OnInspectorShow(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
static_cast<WindowUI*>(data)->browser_.ShowInspectorWindow();
+ elm_ctxpopup_dismiss(obj);
}
-void WindowUI::OnRotate(void* data, Evas_Object*, void*) {
+void WindowUI::OnRotate(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
static_cast<WindowUI*>(data)->window_.FakeRotate();
+ elm_ctxpopup_dismiss(obj);
}
-void WindowUI::OnResize(void* data, Evas_Object*, void*) {
- std::pair<const char*, WindowUI*>* pr =
- static_cast<std::pair<const char*, WindowUI*>*>(data);
- int width, height;
- sscanf(pr->first, "%dx%d", &width, &height);
- log_trace("%s %dx%d", __PRETTY_FUNCTION__, width, height);
- pr->second->window_.Resize(width, height);
-}
-
-void WindowUI::OnSelectMouseInput(void* data, Evas_Object*, void*) {
+void WindowUI::OnSelectMouseInput(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI *thiz = static_cast<WindowUI*>(data);
thiz->window_.EnableTouchEvents(false);
thiz->window_.EnableMouseEvents(true);
+ elm_ctxpopup_dismiss(obj);
}
-void WindowUI::OnSelectTouchInput(void* data, Evas_Object*, void*) {
+void WindowUI::OnSelectTouchInput(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI *thiz = static_cast<WindowUI*>(data);
thiz->window_.EnableTouchEvents(true);
thiz->window_.EnableMouseEvents(false);
+ elm_ctxpopup_dismiss(obj);
}
namespace {
}
}
-void WindowUI::OnZoomIn(void* data, Evas_Object*, void*) {
+void WindowUI::OnZoomIn(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI *thiz = static_cast<WindowUI*>(data);
_change_zoom(thiz->window_, kViewScaleDelta);
+ elm_ctxpopup_dismiss(obj);
}
-void WindowUI::OnZoomOut(void* data, Evas_Object*, void*) {
+void WindowUI::OnZoomOut(void* data, Evas_Object* obj, void*) {
log_trace("%s", __PRETTY_FUNCTION__);
WindowUI *thiz = static_cast<WindowUI*>(data);
_change_zoom(thiz->window_, -kViewScaleDelta);
+ elm_ctxpopup_dismiss(obj);
}