diff options
| -rw-r--r-- | README.xwidget | 19 | ||||
| -rw-r--r-- | src/xwidget.c | 51 |
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: | |||
| 1144 | we need the event handler at some level because we can't call lisp | 1144 | we need the event handler at some level because we can't call lisp |
| 1145 | asynchronously. | 1145 | asynchronously. |
| 1146 | 1146 | ||
| 1147 | **** TODO navigation signal | ||
| 1148 | **** TODO new window signal | ||
| 1147 | *** TODO console messages | 1149 | *** TODO console messages |
| 1148 | http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#WebKitWebView-console-message | 1150 | http://webkitgtk.org/reference/webkitgtk-webkitwebview.html#WebKitWebView-console-message |
| 1149 | http://getfirebug.com/wiki/index.php/Console_API#console.count.28.5Btitle.5D.29 | 1151 | http://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 |
| 1242 | see xwidget-webkit-show-named-element | 1244 | see xwidget-webkit-show-named-element |
| 1243 | 1245 | ||
| 1244 | *** TODO sindicat notes | 1246 | also did some preliminary webkit signal work for this |
| 1245 | Here are some comments from user "sindikat" and my replies | 1247 | *** TODO url-browse improvement |
| 1246 | 1248 | sindikat: 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 | ||
| 1250 | Yes, but its unclear at what level in Emacs to do this | 1251 | Yes, but its unclear at what level in Emacs to do this |
| 1251 | properly. I added a url-tidy function as a start. | 1252 | properly. I added a url-tidy function as a start. |
| 1252 | 1253 | ||
| 1254 | this 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 | ||
| 1262 | Here 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 | ||
| 457 | void 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 | ||
| 457 | void 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 |
| 473 | void 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 | ||
| 480 | gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview, | 486 | gboolean 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 | ||