viking

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

commit 8bc57f0f0a9362e2453ffc009e3b26e39e020d59
parent eeb7f5cfd504718f6ee730a09a371bd9be149798
Author: Kyle Milz <kmilz@ucalgary.ca>
Date:   Mon,  1 Oct 2012 16:26:46 -0600

consolidate callback usage.

Diffstat:
Msrc/callbacks.c | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Msrc/callbacks.h | 34++--------------------------------
Msrc/utilities.c | 36+++---------------------------------
3 files changed, 72 insertions(+), 83 deletions(-)

diff --git a/src/callbacks.c b/src/callbacks.c @@ -10,6 +10,35 @@ #include "commands.h" #include "callbacks.h" + +void inputbox_activate_cb (void *, Evas_Object *, void *); +void inputbox_changed_cb (void *, Evas_Object *, void *); +void inputbox_keypress_cb (void *, Evas *, Evas_Object *, void *); +void inputbox_keyrelease_cb (void *, Evas *, Evas_Object *, void *); + +void webview_console_cb(void *, Evas_Object *, const char *, unsigned int, const char *); +void webview_hoverlink_cb (void *, Evas_Object *, void*); +void webview_hoverlink_out_cb (void *, Evas_Object *, void*); +void webview_uri_changed_cb (void *, Evas_Object *, void*); +void webview_load_finished_cb (void *, Evas_Object *, void*); +void webview_progress_changed_cb(void *, Evas_Object *, void *); +void webview_title_changed_cb (void *, Evas_Object *, void *); +void webview_download_cb (void *, Evas_Object *, void *); +void inputmethod_changed_cb (void *, Evas_Object *, void *); +void webview_inspector_cb (void *, Evas_Object *, void *); +void webview_inspector_close_cb (void *, Evas_Object *, void *); +void load_error_cb (void *, Evas_Object *, void *); +void webview_keypress_cb (void *, Evas *, Evas_Object *, void *); +void webview_focus_in_cb (void *, Evas *, Evas_Object *, void *); +void webview_focus_out_cb (void *, Evas *, Evas_Object *, void *); +void webview_mousewheel_cb (void *, Evas *, Evas_Object *, void *); +void _web_free_cb (void *, Evas *, Evas_Object *, void *); +void _win_del_request_cb (void *, Evas_Object *, void *); +void webview_create_window_cb(void*, Evas_Object*, Eina_Bool, const Elm_Web_Window_Features*); +void populate_visited_links_cb(void *data, Evas_Object *obj, void *event_info); + + + static Eina_Bool commandhistoryfetch (const Arg *, void *); static Eina_Bool process_keypress (void *, void*); @@ -52,12 +81,6 @@ webview_progress_changed_cb(void *data, Evas_Object *obj, void *event_info) } void -protocol_register_cb(void *data, Evas_Object *obj, void *event_info) -{ - printf("protocol_register()\n"); -} - -void load_error_cb(void *data, Evas_Object *obj, void *event_info) { /* @@ -536,18 +559,6 @@ webview_keypress_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) } void -xss_detected_cb(void *data, Evas_Object *obj, void *event_info) -{ - printf("xss_detected()\n"); -} - -void -icon_received_cb(void *data, Evas_Object *obj, void *event_info) -{ - printf("icon_received_cb()\n"); -} - -void webview_hoverlink_cb(void *data, Evas_Object *obj, void *event_info) { Buffer_Data *td = data; @@ -1076,3 +1087,41 @@ webview_create_window_cb(void *data, Evas_Object *obj, Eina_Bool js, const Elm_W buffer_add(&a, wd); } +void +setup_buffer_callbacks(Buffer_Data *td) +{ + evas_object_smart_callback_add(td->view, "title,changed", webview_title_changed_cb, td); + evas_object_smart_callback_add(td->view, "uri,changed", webview_uri_changed_cb, td); + evas_object_smart_callback_add(td->view, "load,progress", webview_progress_changed_cb, td); + // evas_object_smart_callback_add(td->web, "load,started", webview_load_committed_cb, td); + // evas_object_smart_callback_add(td->view, "load,document,finished", webview_document_finished_cb, td); + evas_object_smart_callback_add(td->view, "load,finished", webview_load_finished_cb, td); + evas_object_smart_callback_add(td->view, "download,request", webview_download_cb, td); + // evas_object_smart_callback_add(td->view, "link,hover,in", webview_hoverlink_cb, td); + // evas_object_smart_callback_add(td->view, "link,hover,out", webview_hoverlink_out_cb, td); + evas_object_smart_callback_add(td->view, "inputmethod,changed", inputmethod_changed_cb, td); + + /* these signals are not offered by elm_web */ + // evas_object_smart_callback_add(td->view, "load,error", load_error_cb, td); + // evas_object_smart_callback_add(td->view, "inspector,view,create", webview_inspector_cb, td); + // evas_object_smart_callback_add(td->view, "inspector,view,close", webview_inspector_close_cb, td); + // evas_object_smart_callback_add(td->view, "populate,visited,links", populate_visited_links_cb, td); + + evas_object_event_callback_add(td->view, EVAS_CALLBACK_FREE, _web_free_cb, td); + evas_object_event_callback_add(td->view, EVAS_CALLBACK_KEY_DOWN, webview_keypress_cb, td); + evas_object_event_callback_add(td->view, EVAS_CALLBACK_KEY_DOWN, webview_keypress_cb, td); + evas_object_event_callback_add(td->view, EVAS_CALLBACK_FOCUS_IN, webview_focus_in_cb, td); + evas_object_event_callback_add(td->view, EVAS_CALLBACK_FOCUS_OUT, webview_focus_out_cb, td); + // evas_object_event_callback_add(td->web, EVAS_CALLBACK_MOUSE_UP, notify_event_cb, td); + evas_object_event_callback_add(td->view, EVAS_CALLBACK_MOUSE_WHEEL, webview_mousewheel_cb, td); +} + +void +setup_window_callbacks(Window_Data *wd) +{ + evas_object_smart_callback_add(wd->url, "activated", inputbox_activate_cb, wd); + evas_object_smart_callback_add(wd->url, "changed", inputbox_changed_cb, wd); + evas_object_event_callback_add(wd->url, EVAS_CALLBACK_KEY_DOWN, inputbox_keypress_cb, wd); + evas_object_event_callback_add(wd->url, EVAS_CALLBACK_KEY_UP, inputbox_keyrelease_cb, wd); +} + diff --git a/src/callbacks.h b/src/callbacks.h @@ -1,36 +1,6 @@ - -void inputbox_activate_cb (void *, Evas_Object *, void *); -void inputbox_changed_cb (void *, Evas_Object *, void *); -void inputbox_keypress_cb (void *, Evas *, Evas_Object *, void *); -void inputbox_keyrelease_cb (void *, Evas *, Evas_Object *, void *); - -void webview_console_cb(void *, Evas_Object *, const char *, unsigned int, const char *); -void webview_hoverlink_cb (void *, Evas_Object *, void*); -void webview_hoverlink_out_cb (void *, Evas_Object *, void*); -void webview_uri_changed_cb (void *, Evas_Object *, void*); -void webview_load_finished_cb (void *, Evas_Object *, void*); -void webview_progress_changed_cb(void *, Evas_Object *, void *); -void webview_title_changed_cb (void *, Evas_Object *, void *); -void webview_download_cb (void *, Evas_Object *, void *); -void inputmethod_changed_cb (void *, Evas_Object *, void *); -void icon_received_cb (void *, Evas_Object *, void *); -void xss_detected_cb (void *, Evas_Object *, void *); -void webview_inspector_cb (void *, Evas_Object *, void *); -void webview_inspector_close_cb (void *, Evas_Object *, void *); -void protocol_register_cb (void *, Evas_Object *, void *); -void load_error_cb (void *, Evas_Object *, void *); -void webview_keypress_cb (void *, Evas *, Evas_Object *, void *); -void webview_focus_in_cb (void *, Evas *, Evas_Object *, void *); -void webview_focus_out_cb (void *, Evas *, Evas_Object *, void *); -void webview_mousewheel_cb (void *, Evas *, Evas_Object *, void *); -void _web_free_cb (void *, Evas *, Evas_Object *, void *); -void _win_del_request_cb (void *, Evas_Object *, void *); -void webview_create_window_cb(void*, Evas_Object*, Eina_Bool, const Elm_Web_Window_Features*); - -void populate_visited_links_cb(void *data, Evas_Object *obj, void *event_info); - -// void download_entry_free_cb(void *); +void setup_buffer_callbacks(Buffer_Data*); +void setup_window_callbacks(Window_Data*); /* static Eina_Bool webview_mimetype_cb(WebKitWebView *webview, WebKitWebFrame *frame, WebKitNetworkRequest *request, char *mime_type, WebKitWebPolicyDecision *decision, gpointer user_data); diff --git a/src/utilities.c b/src/utilities.c @@ -1140,34 +1140,7 @@ buffer_add(const Arg *arg, Window_Data *wd) evas_object_data_set(td->view, "buffer_data", td); - /* signals */ - evas_object_smart_callback_add(td->view, "title,changed", webview_title_changed_cb, td); - evas_object_smart_callback_add(td->view, "uri,changed", webview_uri_changed_cb, td); - evas_object_smart_callback_add(td->view, "load,progress", webview_progress_changed_cb, td); - // evas_object_smart_callback_add(td->web, "load,started", webview_load_committed_cb, td); - // evas_object_smart_callback_add(td->view, "load,document,finished", webview_document_finished_cb, td); - evas_object_smart_callback_add(td->view, "load,finished", webview_load_finished_cb, td); - evas_object_smart_callback_add(td->view, "download,request", webview_download_cb, td); - evas_object_smart_callback_add(td->view, "link,hover,in", webview_hoverlink_cb, td); - evas_object_smart_callback_add(td->view, "link,hover,out", webview_hoverlink_out_cb, td); - evas_object_smart_callback_add(td->view, "inputmethod,changed", inputmethod_changed_cb, td); - - /* these signals are not offered by elm_web */ - // evas_object_smart_callback_add(td->view, "load,error", load_error_cb, td); - evas_object_smart_callback_add(td->view, "inspector,view,create", webview_inspector_cb, td); - evas_object_smart_callback_add(td->view, "inspector,view,close", webview_inspector_close_cb, td); - evas_object_smart_callback_add(td->view, "protocolhandler,isregistered", protocol_register_cb, td); - evas_object_smart_callback_add(td->view, "icon,received", icon_received_cb, td); - evas_object_smart_callback_add(td->view, "xss,detected", xss_detected_cb, td); - evas_object_smart_callback_add(td->view, "populate,visited,links", populate_visited_links_cb, td); - - evas_object_event_callback_add(td->view, EVAS_CALLBACK_FREE, _web_free_cb, td); - evas_object_event_callback_add(td->view, EVAS_CALLBACK_KEY_DOWN, webview_keypress_cb, td); - evas_object_event_callback_add(td->view, EVAS_CALLBACK_KEY_DOWN, webview_keypress_cb, td); - evas_object_event_callback_add(td->view, EVAS_CALLBACK_FOCUS_IN, webview_focus_in_cb, td); - evas_object_event_callback_add(td->view, EVAS_CALLBACK_FOCUS_OUT, webview_focus_out_cb, td); - // evas_object_event_callback_add(td->web, EVAS_CALLBACK_MOUSE_UP, notify_event_cb, td); - evas_object_event_callback_add(td->view, EVAS_CALLBACK_MOUSE_WHEEL, webview_mousewheel_cb, td); + setup_buffer_callbacks(td); if (arg->i & CustomUrl) ewk_view_uri_set(td->view, arg->s); @@ -1320,11 +1293,6 @@ window_add(const Arg *arg, App_Data *ad) elm_entry_text_style_user_push(url, "DEFAULT='font=Monospace font_size=12'"); evas_object_show(url); - evas_object_smart_callback_add(url, "activated", inputbox_activate_cb, wd); - evas_object_smart_callback_add(url, "changed", inputbox_changed_cb, wd); - evas_object_event_callback_add(url, EVAS_CALLBACK_KEY_DOWN, inputbox_keypress_cb, wd); - evas_object_event_callback_add(url, EVAS_CALLBACK_KEY_UP, inputbox_keyrelease_cb, wd); - wd->win = win; wd->main_box = box; wd->naviframe = naviframe; @@ -1336,6 +1304,8 @@ window_add(const Arg *arg, App_Data *ad) wd->progress_bar = progress; wd->app = ad; + setup_window_callbacks(wd); + wd->mode = ModeNormal; wd->echo_active = EINA_TRUE;