aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.xwidget19
-rw-r--r--src/xwidget.c51
2 files changed, 42 insertions, 28 deletions
diff --git a/README.xwidget b/README.xwidget
index d199b4fe854..f1b3e245dc5 100644
--- a/README.xwidget
+++ b/README.xwidget
@@ -1144,6 +1144,8 @@ anyway, seems it'll turn out like this:
1144we need the event handler at some level because we can't call lisp 1144we need the event handler at some level because we can't call lisp
1145asynchronously. 1145asynchronously.
1146 1146
1147**** TODO navigation signal
1148**** TODO new window signal
1147*** TODO console messages 1149*** TODO console messages
1148http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#WebKitWebView-console-message 1150http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#WebKitWebView-console-message
1149http://getfirebug.com/wiki/index.php/Console_API#console.count.28.5Btitle.5D.29 1151http://getfirebug.com/wiki/index.php/Console_API#console.count.28.5Btitle.5D.29
@@ -1241,15 +1243,24 @@ I made some delegation code frrom webkit mode to image mode.
1241*** TODO internal links (page.html#section) do not work 1243*** TODO internal links (page.html#section) do not work
1242see xwidget-webkit-show-named-element 1244see xwidget-webkit-show-named-element
1243 1245
1244*** TODO sindicat notes 1246also did some preliminary webkit signal work for this
1245Here are some comments from user "sindikat" and my replies 1247*** TODO url-browse improvement
1246 1248sindikat: site.com and http://site.com should be equivalent (simple site.com
1247- site.com and http://site.com should be equivalent (simple site.com
1248 throws error) 1249 throws error)
1249 1250
1250Yes, but its unclear at what level in Emacs to do this 1251Yes, but its unclear at what level in Emacs to do this
1251properly. I added a url-tidy function as a start. 1252properly. I added a url-tidy function as a start.
1252 1253
1254this should be further improved:
1255- change the call to url-tidy so its a hook
1256- provide a couple of demonstration hooks:
1257 - url-tidy, which just prepends http://
1258 - youtube which appends &html5=1 to urls looking like http://www.youtube.com/watch?v=DZdUgjEx_dQ
1259 - history which logs all visited urls like a traditional browser
1260
1261*** TODO sindicat notes
1262Here are some comments from user "sindikat" and my replies
1263
1253- http://ya.ru renders inadequatly (compare with any other browser) - 1264- http://ya.ru renders inadequatly (compare with any other browser) -
1254 the search text-input is way below 1265 the search text-input is way below
1255 1266
diff --git a/src/xwidget.c b/src/xwidget.c
index 8990e7d4b49..2c87959b21d 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -453,28 +453,34 @@ gboolean webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, g
453 return TRUE; 453 return TRUE;
454} 454}
455 455
456//TODO deprecated, use load-status
457void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview,
458 WebKitWebFrame *arg1,
459 gpointer data)
460{
461 //TODO this event sending code should be refactored
462 struct input_event event;
463 // struct xwidget *xw = (struct xwidget *) data;
464 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET);
465 printf("webkit finished loading\n");
466 456
457void store_xwidget_event_string(struct xwidget* xw, char* eventname,char* eventstr){
458 //refactor attempt
459 struct input_event event;
467 EVENT_INIT (event); 460 EVENT_INIT (event);
468 event.kind = XWIDGET_EVENT; 461 event.kind = XWIDGET_EVENT;
469 event.frame_or_window = Qnil; //frame; //how to get the frame here? //TODO i store it in the xwidget now 462 event.frame_or_window = Qnil; //frame; //how to get the frame here? //TODO i store it in the xwidget now
470 463
471 event.arg = Qnil; 464 event.arg = Qnil;
465 event.arg = Fcons (intern (eventstr), event.arg); //intern?
472 event.arg = Fcons ((Lisp_Object)xw, event.arg); //TODO 466 event.arg = Fcons ((Lisp_Object)xw, event.arg); //TODO
473 event.arg = Fcons (intern ("document-load-finished"), event.arg); 467 event.arg = Fcons (intern (eventname), event.arg);//interning should be ok
468 kbd_buffer_store_event (&event);
474 469
470}
475 471
476 kbd_buffer_store_event (&event); 472//TODO deprecated, use load-status
473void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview,
474 WebKitWebFrame *arg1,
475 gpointer data)
476{
477 //TODO this event sending code should be refactored
478 // struct xwidget *xw = (struct xwidget *) data;
479 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET);
480 printf("webkit finished loading\n");
477 481
482 store_xwidget_event_string(xw, "",
483 "document-load-finished");
478} 484}
479 485
480gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview, 486gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview,
@@ -488,18 +494,7 @@ gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview,
488 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET); 494 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET);
489 printf("webkit finished loading\n"); 495 printf("webkit finished loading\n");
490 496
491 EVENT_INIT (event); 497 store_xwidget_event_string(xw, webkit_download_get_uri (arg1), "download-requested");
492 event.kind = XWIDGET_EVENT;
493 event.frame_or_window = Qnil; //frame; //how to get the frame here? //TODO i store it in the xwidget now
494
495 event.arg = Qnil;
496 event.arg = Fcons (intern (webkit_download_get_uri (arg1)), event.arg);
497 event.arg = Fcons ((Lisp_Object)xw, event.arg); //TODO
498 event.arg = Fcons (intern ("download-requested"), event.arg);
499
500
501 kbd_buffer_store_event (&event);
502
503 498
504 return FALSE; 499 return FALSE;
505} 500}
@@ -512,6 +507,8 @@ gboolean webkit_osr_mime_type_policy_typedecision_requested_callback(WebKitWebV
512 gpointer user_data) 507 gpointer user_data)
513{ 508{
514 printf("mime policy requested\n"); 509 printf("mime policy requested\n");
510 // this function makes webkit send a download signal for all unknown mime types
511 // TODO defer the decision to lisp, so that its possible to make Emacs handle text mime for instance
515 if(!webkit_web_view_can_show_mime_type(webView, mimetype)){ 512 if(!webkit_web_view_can_show_mime_type(webView, mimetype)){
516 webkit_web_policy_decision_download (policy_decision); 513 webkit_web_policy_decision_download (policy_decision);
517 return TRUE; 514 return TRUE;
@@ -528,9 +525,12 @@ gboolean webkit_osr_new_window_policy_decision_requested_callback(WebKitWebView
528 WebKitWebPolicyDecision *policy_decision, 525 WebKitWebPolicyDecision *policy_decision,
529 gpointer user_data) 526 gpointer user_data)
530{ 527{
528 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webView), XG_XWIDGET);
531 printf("webkit_osr_new_window_policy_decision_requested_callback %s\n", 529 printf("webkit_osr_new_window_policy_decision_requested_callback %s\n",
532 webkit_web_navigation_action_get_original_uri (navigation_action)); 530 webkit_web_navigation_action_get_original_uri (navigation_action));
533 531
532 store_xwidget_event_string(xw, webkit_web_navigation_action_get_original_uri (navigation_action),
533 "new-window-policy-decision-requested");
534 return FALSE; 534 return FALSE;
535} 535}
536 536
@@ -541,8 +541,11 @@ gboolean webkit_osr_navigation_policy_decision_requested_callback(WebKitWebView
541 WebKitWebPolicyDecision *policy_decision, 541 WebKitWebPolicyDecision *policy_decision,
542 gpointer user_data) 542 gpointer user_data)
543{ 543{
544 struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webView), XG_XWIDGET);
544 printf("webkit_osr_navigation_policy_decision_requested_callback %s\n", 545 printf("webkit_osr_navigation_policy_decision_requested_callback %s\n",
545 webkit_web_navigation_action_get_original_uri (navigation_action)); 546 webkit_web_navigation_action_get_original_uri (navigation_action));
547 store_xwidget_event_string(xw, webkit_web_navigation_action_get_original_uri (navigation_action),
548 "navigation-policy-decision-requested");
546 return FALSE; 549 return FALSE;
547} 550}
548 551