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:
M | commands.c | | | 30 | ++---------------------------- |
M | keymap.h | | | 5 | ++--- |
M | main.c | | | 71 | ++++++++++++++++++++++++++++++++++++++++++++++------------------------- |
M | viking.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 {