2013-02-18 29 views
0

我在Vala和WebKitGTK +中編寫了一個簡單的瀏覽器。 我需要做的事情之一是將窗口的標題設置爲網頁標題的標題,因此我使用web_view.notify["title"].connect監視標題更改。但是,有時標題的價值是null,顯然不應該。我WebView標題有時不應該爲空

一些例子記住:

在任何情況下,使用Web檢查顯示的頁面確實有一個標題集。

這是我應該報告的錯誤嗎?或者,也許我做錯了什麼?下面是我使用的代碼:

//valac --thread --pkg webkitgtk-3.0 --pkg gtk+-3.0 --vapidir=./ test.vala 
//The vapidir folder should have webkitgtk-3.0.vapi and webkitgtk-3.0.deps 

using WebKit; 
using Gtk; 

public class Test : Gtk.Window { 
    public WebView webview; 
    public Test() { 
     this.title = "Test"; 
     this.window_position = Gtk.WindowPosition.CENTER; 
     this.set_default_size (800, 600); 
     this.hide_titlebar_when_maximized = false; 

     this.destroy.connect (() => { 
      Gtk.main_quit(); 
     }); 

     var scroll = new ScrolledWindow (null, null); 
     this.webview = new WebView(); 
     this.add (scroll); 
     scroll.add (webview); 

     webview.settings.enable_developer_extras = true; 
     webview.notify["title"].connect ((sender, property) => { 
      if (webview.title != null) { 
       this.title = webview.title; 
       stdout.printf (webview.title + "\n"); 
      } else { 
       stdout.printf ("(null)\n"); 
      } 
     }); 

     webview.web_inspector.inspect_web_view.connect ((p0) => { 
      var w = new Window(); 
      w.window_position = WindowPosition.CENTER; 
      w.title = "Inspector"; 
      w.set_default_size (800,600); 
      WebView view = new WebView(); 
      unowned WebView view2 = view; 
      w.add (view2); 
      w.show_all(); 
      return view2; 
     }); 
    } 

    public static int main (string[] args) { 
     Gtk.init (ref args); 

     Test app = new Test(); 
     app.webview.load_uri ("http://google.com"); 
     app.show_all(); 
     Gtk.main(); 
     return 0; 
    } 
} 
+0

你可能想試着問特定webkitgtk定位(我不知道任何webkitgtk人都會關注堆棧溢出)。如果我是你,我會在freenode上嘗試#webkitgtk +。 – nemequ 2013-02-20 13:06:23

+0

謝謝,我會嘗試。 – 2013-02-20 16:29:47

回答

0

有一個名爲title_changed爲目的的信號,你應該總是使用由webkitgtk而不是GLib的notify功能提供的信號。
(GLib的notify每次值變化發出,即使更改只是爲了清除舊值,如你的情況的目的。)