viking

webkit based web browser for Enlightenment
Log | Files | Refs | LICENSE

commit 4b056240d06a7e13cabd523c69b7bca12288f486
parent 624b4a57248b0fbfbbac9a47a7ce9f67e70b5920
Author: Kyle Milz <kmilz@ucalgary.ca>
Date:   Wed, 19 Sep 2012 22:14:45 -0600

inspector: create/close using proper callbacks

Diffstat:
Mcommands.c | 30++----------------------------
Mkeymap.h | 5++---
Mmain.c | 71++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mviking.h | 2+-
4 files changed, 51 insertions(+), 57 deletions(-)

diff --git a/commands.c b/commands.c @@ -1470,39 +1470,13 @@ inspector(const Arg *arg, void *data) App_Data *ad = data; Evas_Object *view = elm_web_webkit_view_get(ad->current_web); - printf("inspector(), arg-> is %i!\n", arg->i); - - if (arg->i & ShowInspector && !ewk_view_web_inspector_view_get(view)) { + if (!ewk_view_web_inspector_view_get(view)) { ewk_view_setting_enable_developer_extras_set(view, EINA_TRUE); - - Evas_Object *inspector_view = ewk_view_single_add(evas_object_evas_get(ad->win)); - ewk_view_theme_set(inspector_view, "/usr/share/ewebkit-0/themes/default.edj"); - - - // Evas_Object *web = elm_web_add(ad->win); - // elm_web_inwin_mode_set(web, EINA_TRUE); - evas_object_size_hint_weight_set(inspector_view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(inspector_view, EVAS_HINT_FILL, EVAS_HINT_FILL); - - // // Evas_Object *inspector_view = elm_web_webkit_view_get(web); - - ewk_view_web_inspector_view_set(view, inspector_view); - evas_object_show(inspector_view); - - - elm_box_pack_end(ad->web_inspector, inspector_view); - ewk_view_web_inspector_show(view); - - evas_object_size_hint_weight_set(ad->web_inspector, EVAS_HINT_EXPAND, 1.0); - evas_object_show(ad->web_inspector); } - else if (arg->i == HideInspector && ewk_view_web_inspector_view_get(view)) { + else if (ewk_view_web_inspector_view_get(view)) { ewk_view_web_inspector_close(view); ewk_view_setting_enable_developer_extras_set(view, EINA_FALSE); - elm_box_clear(ad->web_inspector); - evas_object_size_hint_weight_set(ad->web_inspector, EVAS_HINT_EXPAND, 0.0); - ewk_view_web_inspector_view_set(view, NULL); } return EINA_TRUE; diff --git a/keymap.h b/keymap.h @@ -95,7 +95,7 @@ static Key keys[] = { { 0, 0, "colon", input, {.s = ":" } }, { 0, 0, "o", input, {.s = ":open "} }, { 0, 0, "O", input, {.s = ":open ", .i = InsertCurrentURL} }, - { 0, 0, "t", add_tab, {.s = ":open "} }, + { 0, 0, "t", input, {.s = ":tabopen "} }, { 0, 0, "T", input, {.s = ":tabopen ", .i = InsertCurrentURL} }, { 0, 0, "slash", input, {.s = "/"} }, // { 0, 0, GDK_KP_Divide, input, {.s = "/"} }, @@ -127,8 +127,7 @@ static Key keys[] = { { 0, 0, "x", tab_quit, {0} }, // { 0, 0, "X", revive_last_tab, {0} }, { 0, 0, "b", switch_buffer, {0}}, - { 0, 0, "i", inspector, { .i = ShowInspector}}, - { 0, 0, "I", inspector, { .i = HideInspector}}, + { 0, 0, "i", inspector, {0} }, /* leave this last line as last */ { 0, 0, 0, 0, {0} }, }; diff --git a/main.c b/main.c @@ -285,6 +285,46 @@ webview_progress_changed_cb(void *data, Evas_Object *obj, void *event_info) update_state(td->app); } +static void +webview_inspector_cb(void *data, Evas_Object *obj, void *event_info) +{ + Tab_Data *td = data; + App_Data *ad = td->app; + Evas_Object *view = elm_web_webkit_view_get(td->web); + + td->web_inspector = ewk_view_single_add(evas_object_evas_get(ad->win)); + ewk_view_theme_set(td->web_inspector, "/usr/share/ewebkit-0/themes/default.edj"); + + evas_object_size_hint_weight_set(td->web_inspector, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(td->web_inspector, EVAS_HINT_FILL, EVAS_HINT_FILL); + + ewk_view_web_inspector_view_set(view, td->web_inspector); + + evas_object_show(td->web_inspector); + elm_box_pack_end(ad->web_inspector, td->web_inspector); + + evas_object_size_hint_weight_set(ad->web_inspector, EVAS_HINT_EXPAND, 1.0); + evas_object_show(ad->web_inspector); + + td->inspector_enabled = EINA_TRUE; +} + +static void +webview_inspector_close_cb(void *data, Evas_Object *obj, void *event_info) +{ + Tab_Data *td = data; + App_Data *ad = td->app; + Evas_Object *view = elm_web_webkit_view_get(td->web); + + ewk_view_setting_enable_developer_extras_set(view, EINA_FALSE); + elm_box_clear(ad->web_inspector); + evas_object_size_hint_weight_set(ad->web_inspector, EVAS_HINT_EXPAND, 0.0); + ewk_view_web_inspector_view_set(view, NULL); + + td->web_inspector = NULL; + td->inspector_enabled = EINA_FALSE; +} + void webview_uri_changed_cb(void *data, Evas_Object *obj, void *event_info) { @@ -295,11 +335,12 @@ webview_uri_changed_cb(void *data, Evas_Object *obj, void *event_info) if (td->web != td->app->current_web) return; - printf("load_committed()\n"); - - // Evas_Object *view = elm_web_webkit_view_get(td->web); + Evas_Object *view = elm_web_webkit_view_get(td->web); // Evas_Object *frame = ewk_view_frame_main_get(view); + evas_object_smart_callback_add(view, "inspector,view,create", webview_inspector_cb, td); + evas_object_smart_callback_add(view, "inspector,view,close", webview_inspector_close_cb, td); + // userscript_hooks_start(elm_web_uri_get(td->web)); script(&a, td->app); @@ -526,15 +567,6 @@ inspector_inspect_web_view_cb(gpointer inspector, WebKitWebView* web_view) { */ -static void -webview_inspector_cb(void *data, Evas_Object *obj, void *event_info) -{ - // Tab_Data *td = data; - - printf("would have show inspector!\n"); - -} - void download_complete_cb(void *data, const char *file, int status) { @@ -1305,11 +1337,6 @@ tab_add(App_Data *ad) evas_object_size_hint_align_set(td->web, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_naviframe_item_simple_push(ad->naviframe, td->web); - // elm_object_item_del_cb_set(td->tab, _tb_item_del_cb); - - // Evas_Object *view = elm_web_webkit_view_get(ad->current_web); - // ewk_view_setting_enable_developer_extras_set(view, EINA_TRUE); - // ewk_view_setting_include_links_in_focus_chain_set(view, EINA_FALSE); evas_object_data_set(td->web, "tab_data", td); @@ -1323,20 +1350,14 @@ tab_add(App_Data *ad) evas_object_smart_callback_add(td->web, "link,hover,in", webview_hoverlink_cb, td); evas_object_smart_callback_add(td->web, "link,hover,out", webview_hoverlink_out_cb, td); evas_object_smart_callback_add(td->web, "inputmethod,changed", inputmethod_changed_cb, td); - // evas_object_smart_callback_add(td->web, "xss,detected", xss_detected_cb, td); - evas_object_smart_callback_add(td->web, "icon,changed", icon_received_cb, td); - evas_object_smart_callback_add(td->web, "inspector,view,create", webview_inspector_cb, td); - // evas_object_smart_callback_add(td->web, "inspector,view,close", webview_inspector_close_cb, td); + evas_object_smart_callback_add(td->web, "icon,received", icon_received_cb, td); evas_object_event_callback_add(td->web, EVAS_CALLBACK_FREE, _web_free_cb, td); evas_object_event_callback_add(td->web, EVAS_CALLBACK_KEY_DOWN, webview_keypress_cb, td); // evas_object_event_callback_add(td->web, EVAS_CALLBACK_MOUSE_UP, notify_event_cb, td); evas_object_event_callback_add(td->web, EVAS_CALLBACK_MOUSE_WHEEL, webview_mousewheel_cb, td); - - - // static Ewk_View_Smart_Class api = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("evi"); - // ewk_view_tiled_smart_set(&api); + buffer_current_set(td); return td; } diff --git a/viking.h b/viking.h @@ -89,7 +89,7 @@ enum { DirectionBackwards = DirectionAbsolute, DirectionForward = (1 << 0) | DirectionAbsolute }; enum { CaseInsensitive, CaseSensitive = 1 << 2 }; enum { Wrapping = 1 << 3 }; -enum { HideInspector, ShowInspector }; + /* structs here */ typedef struct {