diff options
| author | Joakim Verona | 2011-11-03 14:58:05 +0100 |
|---|---|---|
| committer | Joakim Verona | 2011-11-03 14:58:05 +0100 |
| commit | fe118e06d872fd1149a273282cb082250346e89f (patch) | |
| tree | dcc20533851158dd0457f093918f95bc02d0f79f | |
| parent | 1722eccee3d963c08d91afcdeebdc152d867e7bf (diff) | |
| download | emacs-fe118e06d872fd1149a273282cb082250346e89f.tar.gz emacs-fe118e06d872fd1149a273282cb082250346e89f.zip | |
attempt to make relative urls work, but it doesnt. contains some bugfixes anyway
| -rw-r--r-- | lisp/xwidget.el | 31 | ||||
| -rw-r--r-- | src/xwidget.c | 16 |
2 files changed, 30 insertions, 17 deletions
diff --git a/lisp/xwidget.el b/lisp/xwidget.el index 159ba5d12b0..c49b1c6738e 100644 --- a/lisp/xwidget.el +++ b/lisp/xwidget.el | |||
| @@ -148,19 +148,32 @@ defaults to the string looking like a url around the cursor position." | |||
| 148 | (let* | 148 | (let* |
| 149 | ((xwidget-event-type (nth 1 last-input-event)) | 149 | ((xwidget-event-type (nth 1 last-input-event)) |
| 150 | (xwidget (nth 2 last-input-event)) | 150 | (xwidget (nth 2 last-input-event)) |
| 151 | (xwidget-callback (xwidget-get xwidget 'callback))) | 151 | ;(xwidget-callback (xwidget-get xwidget 'callback));;TODO stopped working for some reason |
| 152 | (funcall xwidget-callback xwidget xwidget-event-type))) | 152 | ) |
| 153 | ;(funcall xwidget-callback xwidget xwidget-event-type) | ||
| 154 | (funcall 'xwidget-webkit-callback xwidget xwidget-event-type) | ||
| 155 | )) | ||
| 153 | 156 | ||
| 154 | (defun xwidget-webkit-callback (xwidget xwidget-event-type) | 157 | (defun xwidget-webkit-callback (xwidget xwidget-event-type) |
| 155 | (save-excursion | 158 | (save-excursion |
| 156 | (set-buffer (xwidget-buffer xwidget)) | 159 | (set-buffer (xwidget-buffer xwidget)) |
| 157 | (cond ((eq xwidget-event-type 'document-load-finished) | 160 | (let* ( (strarg (nth 3 last-input-event))) |
| 158 | (message "webkit finished loading: '%s'" (xwidget-webkit-get-title xwidget)) | 161 | (cond ((eq xwidget-event-type 'document-load-finished) |
| 159 | (xwidget-adjust-size-to-content xwidget) | 162 | (message "webkit finished loading: '%s'" (xwidget-webkit-get-title xwidget)) |
| 160 | (rename-buffer (format "*xwidget webkit: %s *" (xwidget-webkit-get-title xwidget))) | 163 | (xwidget-adjust-size-to-content xwidget) |
| 161 | (pop-to-buffer (current-buffer)) | 164 | (rename-buffer (format "*xwidget webkit: %s *" (xwidget-webkit-get-title xwidget))) |
| 162 | ) | 165 | (pop-to-buffer (current-buffer)) |
| 163 | ))) | 166 | ) |
| 167 | |||
| 168 | ((eq xwidget-event-type 'navigation-policy-decision-requested) | ||
| 169 | (let ((elmname (progn (string-match ".*#\\(.*\\)" strarg)(match-string 1 strarg)))) | ||
| 170 | (message "navigation-policy-decision-requested: '%s' %s" strarg elmname ) | ||
| 171 | |||
| 172 | (xwidget-webkit-show-named-element xwidget elmname) | ||
| 173 | ) | ||
| 174 | |||
| 175 | ) | ||
| 176 | )))) | ||
| 164 | 177 | ||
| 165 | (define-derived-mode xwidget-webkit-mode | 178 | (define-derived-mode xwidget-webkit-mode |
| 166 | special-mode "xwidget-webkit" "xwidget webkit view mode" | 179 | special-mode "xwidget-webkit" "xwidget webkit view mode" |
diff --git a/src/xwidget.c b/src/xwidget.c index 2c87959b21d..848e95fca1a 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -462,7 +462,7 @@ void store_xwidget_event_string(struct xwidget* xw, char* eventname,char* events | |||
| 462 | 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 |
| 463 | 463 | ||
| 464 | event.arg = Qnil; | 464 | event.arg = Qnil; |
| 465 | event.arg = Fcons (intern (eventstr), event.arg); //intern? | 465 | event.arg = Fcons (build_string(eventstr), event.arg); //string so dont intern |
| 466 | event.arg = Fcons ((Lisp_Object)xw, event.arg); //TODO | 466 | event.arg = Fcons ((Lisp_Object)xw, event.arg); //TODO |
| 467 | event.arg = Fcons (intern (eventname), event.arg);//interning should be ok | 467 | event.arg = Fcons (intern (eventname), event.arg);//interning should be ok |
| 468 | kbd_buffer_store_event (&event); | 468 | kbd_buffer_store_event (&event); |
| @@ -479,8 +479,8 @@ void webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebvi | |||
| 479 | struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET); | 479 | struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webkitwebview), XG_XWIDGET); |
| 480 | printf("webkit finished loading\n"); | 480 | printf("webkit finished loading\n"); |
| 481 | 481 | ||
| 482 | store_xwidget_event_string(xw, "", | 482 | store_xwidget_event_string(xw, |
| 483 | "document-load-finished"); | 483 | "document-load-finished", ""); |
| 484 | } | 484 | } |
| 485 | 485 | ||
| 486 | gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview, | 486 | gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview, |
| @@ -494,7 +494,7 @@ gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview, | |||
| 494 | 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); |
| 495 | printf("webkit finished loading\n"); | 495 | printf("webkit finished loading\n"); |
| 496 | 496 | ||
| 497 | store_xwidget_event_string(xw, webkit_download_get_uri (arg1), "download-requested"); | 497 | store_xwidget_event_string(xw, "download-requested", webkit_download_get_uri (arg1)); |
| 498 | 498 | ||
| 499 | return FALSE; | 499 | return FALSE; |
| 500 | } | 500 | } |
| @@ -529,8 +529,8 @@ gboolean webkit_osr_new_window_policy_decision_requested_callback(WebKitWebView | |||
| 529 | printf("webkit_osr_new_window_policy_decision_requested_callback %s\n", | 529 | printf("webkit_osr_new_window_policy_decision_requested_callback %s\n", |
| 530 | webkit_web_navigation_action_get_original_uri (navigation_action)); | 530 | webkit_web_navigation_action_get_original_uri (navigation_action)); |
| 531 | 531 | ||
| 532 | store_xwidget_event_string(xw, webkit_web_navigation_action_get_original_uri (navigation_action), | 532 | store_xwidget_event_string(xw, "new-window-policy-decision-requested", webkit_web_navigation_action_get_original_uri (navigation_action) |
| 533 | "new-window-policy-decision-requested"); | 533 | ); |
| 534 | return FALSE; | 534 | return FALSE; |
| 535 | } | 535 | } |
| 536 | 536 | ||
| @@ -544,8 +544,8 @@ gboolean webkit_osr_navigation_policy_decision_requested_callback(WebKitWebView | |||
| 544 | struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webView), XG_XWIDGET); | 544 | struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (webView), XG_XWIDGET); |
| 545 | printf("webkit_osr_navigation_policy_decision_requested_callback %s\n", | 545 | printf("webkit_osr_navigation_policy_decision_requested_callback %s\n", |
| 546 | 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), | 547 | store_xwidget_event_string(xw, "navigation-policy-decision-requested", webkit_web_navigation_action_get_original_uri (navigation_action) |
| 548 | "navigation-policy-decision-requested"); | 548 | ); |
| 549 | return FALSE; | 549 | return FALSE; |
| 550 | } | 550 | } |
| 551 | 551 | ||