text: get the right DOM on msg - surf - customized build of surf, the suckless webkit browser
 (HTM) git clone git://src.adamsgaard.dk/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 660413256f4c1cc916e6f96b9156a4f5a85dfcc4
 (DIR) parent 1901359efa10fe2e18794df34fc33b81da03a6f5
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Mon, 12 Jun 2017 18:19:58 +0200
       
       ext: get the right DOM on msg
       
       When navigating history, the document-loaded signal isn't triggered and
       we can't directly get back the previous webview, so we have no other
       choice than to look it up everytime a new message is received.
       
       Diffstat:
         M libsurf-webext.c                    |      22 +++++++---------------
       
       1 file changed, 7 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/libsurf-webext.c b/libsurf-webext.c
       t@@ -15,7 +15,6 @@
        typedef struct Page {
                guint64 id;
                WebKitWebPage *webpage;
       -        WebKitDOMDOMWindow *view;
                struct Page *next;
        } Page;
        
       t@@ -63,6 +62,7 @@ readpipe(GIOChannel *s, GIOCondition c, gpointer unused)
        {
                char msg[MSGBUFSZ];
                gsize msgsz;
       +        WebKitDOMDOMWindow *view;
                GError *gerr = NULL;
                glong wh, ww;
                Page *p;
       t@@ -80,18 +80,19 @@ readpipe(GIOChannel *s, GIOCondition c, gpointer unused)
                        if (p->id == msg[0])
                                break;
                }
       -        if (!p || !p->view)
       +        if (!p || !(view = webkit_dom_document_get_default_view(
       +                    webkit_web_page_get_dom_document(p->webpage))))
                        return TRUE;
        
                switch (msg[1]) {
                case 'h':
       -                ww = webkit_dom_dom_window_get_inner_width(p->view);
       -                webkit_dom_dom_window_scroll_by(p->view,
       +                ww = webkit_dom_dom_window_get_inner_width(view);
       +                webkit_dom_dom_window_scroll_by(view,
                                                        (ww / 100) * msg[2], 0);
                        break;
                case 'v':
       -                wh = webkit_dom_dom_window_get_inner_height(p->view);
       -                webkit_dom_dom_window_scroll_by(p->view,
       +                wh = webkit_dom_dom_window_get_inner_height(view);
       +                webkit_dom_dom_window_scroll_by(view,
                                                        0, (wh / 100) * msg[2]);
                        break;
                }
       t@@ -100,18 +101,9 @@ readpipe(GIOChannel *s, GIOCondition c, gpointer unused)
        }
        
        static void
       -documentloaded(WebKitWebPage *wp, Page *p)
       -{
       -        p->view = webkit_dom_document_get_default_view(
       -                  webkit_web_page_get_dom_document(wp));
       -}
       -
       -static void
        webpagecreated(WebKitWebExtension *e, WebKitWebPage *wp, gpointer unused)
        {
                Page *p = newpage(wp);
       -
       -        g_signal_connect(wp, "document-loaded", G_CALLBACK(documentloaded), p);
        }
        
        G_MODULE_EXPORT void