summaryrefslogtreecommitdiff
path: root/packages/gtk-webcore
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2008-03-05 11:20:44 +0000
committerKoen Kooi <koen@openembedded.org>2008-03-05 11:20:44 +0000
commit4267e234855d1bd2607b348be2c9321f82cf0b9b (patch)
treeb7c2c75a80d7936b13a71d8b90dc7794e6846156 /packages/gtk-webcore
parent586805cbe45f4545d263c3c38111e4295f8c81b9 (diff)
midori: update to new webkit api
Diffstat (limited to 'packages/gtk-webcore')
-rw-r--r--packages/gtk-webcore/midori-0.0.17/.mtn2git_empty0
-rw-r--r--packages/gtk-webcore/midori-0.0.17/webkit-update.patch676
2 files changed, 676 insertions, 0 deletions
diff --git a/packages/gtk-webcore/midori-0.0.17/.mtn2git_empty b/packages/gtk-webcore/midori-0.0.17/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk-webcore/midori-0.0.17/.mtn2git_empty
diff --git a/packages/gtk-webcore/midori-0.0.17/webkit-update.patch b/packages/gtk-webcore/midori-0.0.17/webkit-update.patch
new file mode 100644
index 0000000000..d3d19123cf
--- /dev/null
+++ b/packages/gtk-webcore/midori-0.0.17/webkit-update.patch
@@ -0,0 +1,676 @@
+Update midori 0.17 to the new pkgconfig and header location. Taken from upstream git
+
+diff -Nurd midori-0.0.17/src/browser.c midori/src/browser.c
+--- midori-0.0.17/src/browser.c 2008-01-23 02:20:22.000000000 +0100
++++ midori/src/browser.c 2008-03-05 10:43:08.028499025 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -290,6 +290,15 @@
+ g_free(source);*/
+ }
+
++void on_action_fullscreen_activate(GtkAction* action, CBrowser* browser)
++{
++ GdkWindowState state = gdk_window_get_state(browser->window->window);
++ if(state & GDK_WINDOW_STATE_FULLSCREEN)
++ gtk_window_unfullscreen(GTK_WINDOW(browser->window));
++ else
++ gtk_window_fullscreen(GTK_WINDOW(browser->window));
++}
++
+ void on_action_back_activate(GtkAction* action, CBrowser* browser)
+ {
+ webkit_web_view_go_back(WEBKIT_WEB_VIEW(get_nth_webView(-1, browser)));
+@@ -1125,13 +1134,35 @@
+ update_search_engines(browser);
+ }
+
++static void on_window_state_changed(GtkWidget* widget
++ , GdkEventWindowState* event, CBrowser* browser)
++{
++ if(event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
++ {
++ if(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
++ {
++ gtk_widget_hide(browser->menubar);
++ g_object_set(browser->fullscreen, "stock-id"
++ , GTK_STOCK_LEAVE_FULLSCREEN, NULL);
++ gtk_widget_show(browser->fullscreen);
++ }
++ else
++ {
++ gtk_widget_show(browser->menubar);
++ gtk_widget_hide(browser->fullscreen);
++ g_object_set(browser->fullscreen, "stock-id"
++ , GTK_STOCK_FULLSCREEN, NULL);
++ }
++ }
++}
++
+ static void on_window_size_allocate(GtkWidget* widget, GtkAllocation* allocation
+ , CBrowser* browser)
+ {
+ if(GTK_WIDGET_REALIZED(widget))
+ {
+- if(!(gdk_window_get_state(widget->window)
+- & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)))
++ GdkWindowState state = gdk_window_get_state(widget->window);
++ if(!(state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)))
+ {
+ config->winWidth = allocation->width;
+ config->winHeight = allocation->height;
+@@ -1180,6 +1211,8 @@
+
+ // Setup the window metrics
+ browser->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
++ g_signal_connect(browser->window, "window-state-event"
++ , G_CALLBACK(on_window_state_changed), browser);
+ GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(browser->window));
+ const gint defaultWidth = (gint)gdk_screen_get_width(screen) / 1.7;
+ const gint defaultHeight = (gint)gdk_screen_get_height(screen) / 1.7;
+@@ -1351,6 +1384,13 @@
+ gtk_toolbar_insert(GTK_TOOLBAR(browser->navibar)
+ , GTK_TOOL_ITEM(browser->closedTabs), -1);
+ sokoke_container_show_children(GTK_CONTAINER(browser->navibar));
++ action = gtk_action_group_get_action(browser->actiongroup, "Fullscreen");
++ browser->fullscreen = gtk_action_create_tool_item(action);
++ gtk_widget_hide(browser->fullscreen);
++ g_signal_connect(browser->fullscreen, "clicked"
++ , G_CALLBACK(on_action_fullscreen_activate), browser);
++ gtk_toolbar_insert(GTK_TOOLBAR(browser->navibar)
++ , GTK_TOOL_ITEM(browser->fullscreen), -1);
+ action_set_active("ToolbarNavigation", config->toolbarNavigation, browser);
+
+ // Bookmarkbar
+@@ -1605,6 +1645,7 @@
+ browser->location = oldBrowser->location;
+ browser->webSearch = oldBrowser->webSearch;
+ browser->closedTabs = oldBrowser->closedTabs;
++ browser->fullscreen = oldBrowser->fullscreen;
+ browser->bookmarkbar = oldBrowser->bookmarkbar;
+ browser->panels = oldBrowser->panels;
+ browser->panels_notebook = oldBrowser->panels_notebook;
+@@ -1691,7 +1732,9 @@
+
+ // Connect signals
+ #define DOC_CONNECT(__sig, __func) g_signal_connect \
+- (G_OBJECT(browser->webView), __sig, G_CALLBACK(__func), browser);
++ (browser->webView, __sig, G_CALLBACK(__func), browser);
++ #define DOC_CONNECTA(__sig, __func) g_signal_connect_after \
++ (browser->webView, __sig, G_CALLBACK(__func), browser);
+ DOC_CONNECT ("navigation-requested" , on_webView_navigation_requested)
+ DOC_CONNECT ("title-changed" , on_webView_title_changed)
+ DOC_CONNECT ("icon-loaded" , on_webView_icon_changed)
+@@ -1704,11 +1747,13 @@
+ DOC_CONNECT ("console-message" , on_webView_console_message)
+
+ DOC_CONNECT ("button-press-event" , on_webView_button_press)
++ DOC_CONNECTA ("button-press-event" , on_webView_button_press_after)
+ DOC_CONNECT ("popup-menu" , on_webView_popup);
+ DOC_CONNECT ("scroll-event" , on_webView_scroll);
+ DOC_CONNECT ("leave-notify-event" , on_webView_leave)
+ DOC_CONNECT ("destroy" , on_webView_destroy)
+ #undef DOC_CONNECT
++ #undef DOC_CONNECTA
+
+ webkit_web_view_set_settings(WEBKIT_WEB_VIEW(browser->webView), webSettings);
+
+diff -Nurd midori-0.0.17/src/browser.h midori/src/browser.h
+--- midori-0.0.17/src/browser.h 2008-01-20 19:16:17.000000000 +0100
++++ midori/src/browser.h 2008-03-05 10:43:08.028499025 +0100
+@@ -39,6 +39,7 @@
+ GtkWidget* location;
+ GtkWidget* webSearch;
+ GtkWidget* closedTabs;
++ GtkWidget* fullscreen;
+ GtkWidget* bookmarkbar;
+ // panels
+ GtkWidget* panels;
+@@ -161,6 +162,9 @@
+ on_action_source_view_activate(GtkAction*, CBrowser*);
+
+ void
++on_action_fullscreen_activate(GtkAction*, CBrowser*);
++
++void
+ on_action_back_activate(GtkAction*, CBrowser*);
+
+ void
+@@ -364,6 +368,9 @@
+ { "Properties", GTK_STOCK_PROPERTIES
+ , NULL, ""
+ , "hm?", NULL/*G_CALLBACK(on_action_properties_activate)*/ },
++ { "Fullscreen", GTK_STOCK_FULLSCREEN
++ , NULL, "F11"
++ , "Toggle fullscreen view", G_CALLBACK(on_action_fullscreen_activate) },
+
+ { "Go", NULL, "_Go" },
+ { "Back", GTK_STOCK_GO_BACK
+diff -Nurd midori-0.0.17/src/conf.c midori/src/conf.c
+--- midori-0.0.17/src/conf.c 2008-01-23 05:12:24.000000000 +0100
++++ midori/src/conf.c 2008-03-05 10:43:08.028499025 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -64,6 +64,7 @@
+ GET_INT(config->newPages, "NewPages", CONFIG_NEWPAGES_TAB_NEW);
+ GET_INT(config->openTabsInTheBackground, "OpenTabsInTheBackground", FALSE);
+ GET_INT(config->openPopupsInTabs, "OpenPopupsInTabs", FALSE);
++ GET_INT(config->middleClickGoto, "MiddleClickGoto", FALSE);
+ #undef GET_INT
+ #undef GET_STR
+
+@@ -73,6 +74,10 @@
+ #define GET_STR(var, key, default) \
+ var = sokoke_key_file_get_string_default( \
+ keyFile, "content", key, default, NULL)
++ GET_STR(config->defaultFontFamily, "DefaultFontFamily", "Sans");
++ GET_INT(config->defaultFontSize, "DefaultFontSize", 10);
++ GET_INT(config->minimumFontSize, "MinimumFontSize", 5);
++ GET_STR(config->defaultEncoding, "DefaultEncoding", "UTF-8");
+ GET_INT(config->autoLoadImages, "AutoLoadImages", TRUE);
+ GET_INT(config->autoShrinkImages, "AutoShrinkImages", TRUE);
+ GET_INT(config->printBackgrounds, "PrintBackgrounds", FALSE);
+@@ -143,7 +148,12 @@
+ g_key_file_set_integer(keyFile, "browser", "NewPages", config->newPages);
+ g_key_file_set_integer(keyFile, "browser", "OpenTabsInTheBackground", config->openTabsInTheBackground);
+ g_key_file_set_integer(keyFile, "browser", "OpenPopupsInTabs", config->openPopupsInTabs);
++ g_key_file_set_integer(keyFile, "browser", "MiddleClickGoto", config->middleClickGoto);
+
++ g_key_file_set_string (keyFile, "content", "DefaultFontFamily", config->defaultFontFamily);
++ g_key_file_set_integer(keyFile, "content", "DefaultFontSize", config->defaultFontSize);
++ g_key_file_set_integer(keyFile, "content", "MinimumFontSize", config->minimumFontSize);
++ g_key_file_set_string (keyFile, "content", "DefaultEncoding", config->defaultEncoding);
+ g_key_file_set_integer(keyFile, "content", "AutoLoadImages", config->autoLoadImages);
+ g_key_file_set_integer(keyFile, "content", "AutoShrinkImages", config->autoShrinkImages);
+ g_key_file_set_integer(keyFile, "content", "PrintBackgrounds", config->printBackgrounds);
+diff -Nurd midori-0.0.17/src/conf.h midori/src/conf.h
+--- midori-0.0.17/src/conf.h 2008-01-23 05:11:13.000000000 +0100
++++ midori/src/conf.h 2008-03-05 10:43:08.028499025 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -36,8 +36,12 @@
+ guint newPages; // where to open new pages
+ gboolean openTabsInTheBackground;
+ gboolean openPopupsInTabs;
++ gboolean middleClickGoto;
+
+-
++ gchar* defaultFontFamily;
++ guint defaultFontSize;
++ guint minimumFontSize;
++ gchar* defaultEncoding;
+ gboolean autoLoadImages;
+ gboolean autoShrinkImages;
+ gboolean printBackgrounds;
+diff -Nurd midori-0.0.17/src/global.h midori/src/global.h
+--- midori-0.0.17/src/global.h 2008-01-23 03:13:40.000000000 +0100
++++ midori/src/global.h 2008-03-05 10:43:08.028499025 +0100
+@@ -16,7 +16,7 @@
+ #include "../katze/katze.h"
+
+ #include <gtk/gtk.h>
+-#include <webkit.h>
++#include <webkit/webkit.h>
+
+ // -- globals
+
+@@ -81,5 +81,9 @@
+ #if !GTK_CHECK_VERSION(2, 10, 0)
+ #define GTK_STOCK_SELECT_ALL "gtk-select-all"
+ #endif
++#if !GTK_CHECK_VERSION(2, 8, 0)
++#define GTK_STOCK_FULLSCREEN "gtk-fullscreen"
++#define GTK_STOCK_LEAVE_FULLSCREEN "gtk-leave-fullscreen"
++#endif
+
+ #endif /* !__GLOBAL_H__ */
+diff -Nurd midori-0.0.17/src/helpers.c midori/src/helpers.c
+--- midori-0.0.17/src/helpers.c 2008-01-20 17:46:16.000000000 +0100
++++ midori/src/helpers.c 2008-03-05 10:43:08.028499025 +0100
+@@ -16,7 +16,7 @@
+ #include "../katze/katze.h"
+
+ #include <string.h>
+-#include <webkit.h>
++#include <webkit/webkit.h>
+
+ GtkIconTheme* get_icon_theme(GtkWidget* widget)
+ {
+@@ -417,7 +417,7 @@
+ if(!strstr(uri, "://"))
+ {
+ // Do we have a domain, ip address or localhost?
+- if(strstr(uri, ".") != NULL || !strcmp(uri, "localhost"))
++ if(strchr(uri, '.') != NULL || !strcmp(uri, "localhost"))
+ return g_strconcat("http://", uri, NULL);
+ // We don't want to search? So return early.
+ if(!search)
+diff -Nurd midori-0.0.17/src/main.c midori/src/main.c
+--- midori-0.0.17/src/main.c 2008-01-23 05:13:21.000000000 +0100
++++ midori/src/main.c 2008-03-05 10:43:08.031832796 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -21,6 +21,7 @@
+
+ #include <string.h>
+ #include <gtk/gtk.h>
++#include <webkit/webkit.h>
+
+ #include "config.h"
+
+@@ -58,6 +59,10 @@
+ #if !GTK_CHECK_VERSION(2, 10, 0)
+ { GTK_STOCK_SELECT_ALL, "Select _All", 0, 0, (gchar*)"gtk20" },
+ #endif
++ #if !GTK_CHECK_VERSION(2, 8, 0)
++ { GTK_STOCK_FULLSCREEN, "_Fullscreen", 0, 0, (gchar*)"gtk20" },
++ { GTK_STOCK_FULLSCREEN, "_Leave Fullscreen", 0, 0, (gchar*)"gtk20" },
++ #endif
+ };
+ GtkIconFactory* factory = gtk_icon_factory_new();
+ guint i;
+@@ -244,8 +249,11 @@
+ stock_items_init();
+ browsers = NULL;
+
+- webSettings = webkit_web_settings_new();
+- g_object_set(webSettings
++ webSettings = g_object_new(WEBKIT_TYPE_WEB_SETTINGS
++ , "default-font-family" , config->defaultFontFamily
++ , "default-font-size" , config->defaultFontSize
++ , "minimum-font-size" , config->minimumFontSize
++ , "default-encoding" , config->defaultEncoding
+ , "auto-load-images" , config->autoLoadImages
+ , "auto-shrink-images" , config->autoShrinkImages
+ , "print-backgrounds" , config->printBackgrounds
+diff -Nurd midori-0.0.17/src/prefs.c midori/src/prefs.c
+--- midori-0.0.17/src/prefs.c 2008-01-23 05:10:45.000000000 +0100
++++ midori/src/prefs.c 2008-03-05 10:43:08.031832796 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -15,7 +15,8 @@
+ #include "global.h"
+ #include "sokoke.h"
+
+-#include "string.h"
++#include <stdlib.h>
++#include <string.h>
+
+ static gboolean on_prefs_homepage_focus_out(GtkWidget* widget
+ , GdkEventFocus event, CPrefs* prefs)
+@@ -29,11 +30,65 @@
+ config->startup = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+ }
+
++static void on_prefs_defaultFont_changed(GtkWidget* widget, CPrefs* prefs)
++{
++ const gchar* font = gtk_font_button_get_font_name(GTK_FONT_BUTTON(widget));
++ gchar** components = g_strsplit(font, " ", 0);
++ guint i, n = g_strv_length(components) - 1;
++ GString* fontName = g_string_new(NULL);
++ for(i = 0; i < n; i++)
++ g_string_append_printf(fontName, "%s ", components[i]);
++ katze_assign(config->defaultFontFamily, g_string_free(fontName, FALSE));
++ config->defaultFontSize = atoi(components[n]);
++ g_strfreev(components);
++ g_object_set(webSettings, "default-font-family", config->defaultFontFamily
++ , "default-font-size", config->defaultFontSize, NULL);
++}
++
++static void on_prefs_minimumFontSize_changed(GtkWidget* widget, CPrefs* prefs)
++{
++ config->minimumFontSize = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget));
++ g_object_set(webSettings, "minimum-font-size", config->minimumFontSize, NULL);
++}
++
++static void on_prefs_defaultEncoding_changed(GtkWidget* widget, CPrefs* prefs)
++{
++ gchar* encoding;
++ switch(gtk_combo_box_get_active(GTK_COMBO_BOX(widget)))
++ {
++ case 0:
++ encoding = g_strdup("BIG5");
++ break;
++ case 1:
++ encoding = g_strdup("SHIFT_JIS");
++ break;
++ case 2:
++ encoding = g_strdup("KOI8-R");
++ break;
++ case 3:
++ encoding = g_strdup("UTF-8");
++ break;
++ case 4:
++ encoding = g_strdup("ISO-8859-1");
++ break;
++ default:
++ encoding = g_strdup("UTF-8");
++ g_warning("Invalid default encoding");
++ }
++ katze_assign(config->defaultEncoding, encoding);
++ g_object_set(webSettings, "default-encoding", config->defaultEncoding, NULL);
++}
++
+ static void on_prefs_newpages_changed(GtkWidget* widget, CPrefs* prefs)
+ {
+ config->newPages = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+ }
+
++void on_prefs_middleClickGoto_toggled(GtkWidget* widget, CPrefs* prefs)
++{
++ config->middleClickGoto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
++}
++
+ void on_prefs_openTabsInTheBackground_toggled(GtkWidget* widget, CPrefs* prefs)
+ {
+ config->openTabsInTheBackground = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+@@ -302,7 +357,7 @@
+ #define WIDGET_ADD(__widget, __left, __right, __top, __bottom)\
+ gtk_table_attach(GTK_TABLE(table), __widget\
+ , __left, __right, __top, __bottom\
+- , 0, GTK_FILL, 8, 2)
++ , GTK_FILL, GTK_FILL, 8, 2)
+ #define FILLED_ADD(__widget, __left, __right, __top, __bottom)\
+ gtk_table_attach(GTK_TABLE(table), __widget\
+ , __left, __right, __top, __bottom\
+@@ -371,30 +426,42 @@
+ PAGE_NEW("Appearance");
+ FRAME_NEW("Font settings");
+ TABLE_NEW(5, 2);
+- INDENTED_ADD(gtk_label_new("Standard font"), 0, 1, 0, 1);
+- button = gtk_font_button_new_with_font("Sans 10"/*config->sFontStandard*/);
+- gtk_widget_set_sensitive(button, FALSE); //...
++ INDENTED_ADD(gtk_label_new_with_mnemonic("Default _font"), 0, 1, 0, 1);
++ gchar* defaultFont = g_strdup_printf("%s %d"
++ , config->defaultFontFamily, config->defaultFontSize);
++ button = gtk_font_button_new_with_font(defaultFont);
++ g_free(defaultFont);
++ g_signal_connect(button, "font-set", G_CALLBACK(on_prefs_defaultFont_changed), prefs);
+ FILLED_ADD(button, 1, 2, 0, 1);
+- INDENTED_ADD(gtk_label_new("Minimum font size"), 0, 1, 1, 2);
++ INDENTED_ADD(gtk_label_new_with_mnemonic("_Minimum font size"), 0, 1, 1, 2);
+ hbox = gtk_hbox_new(FALSE, 4);
+- spinbutton = gtk_spin_button_new_with_range(5, 12, 1);
+- gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), 5/*config->iFontSizeMin*/);
+- gtk_widget_set_sensitive(spinbutton, FALSE); //...
++ spinbutton = gtk_spin_button_new_with_range(1, G_MAXINT, 1);
++ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), config->minimumFontSize);
++ g_signal_connect(spinbutton, "value-changed"
++ , G_CALLBACK(on_prefs_minimumFontSize_changed), prefs);
+ gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
+ button = gtk_button_new_with_mnemonic("_Advanced");
+ gtk_widget_set_sensitive(button, FALSE); //...
+ gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 4);
+ FILLED_ADD(hbox, 1, 2, 1, 2);
+- INDENTED_ADD(gtk_label_new("Default encoding"), 0, 1, 2, 3);
++ INDENTED_ADD(gtk_label_new_with_mnemonic("Default _encoding"), 0, 1, 2, 3);
+ combobox = gtk_combo_box_new_text();
+- const gchar* encoding = NULL; g_get_charset(&encoding);
+- // TODO: Fallback to utf-8 if the encoding is not sane (e.g. when lang=C)
+- gchar* sEncodingDefault = g_strdup_printf("System (%s)", encoding);
+ sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
+- , sEncodingDefault, "Chinese", "Greek", "Japanese (SHIFT_JIS)"
+- , "Korean", "Russian", "Unicode (UTF-8)", "Western (ISO-8859-1)", NULL);
+- gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 0); //...
+- gtk_widget_set_sensitive(combobox, FALSE); //...
++ , "Chinese (BIG5)", "Japanese (SHIFT_JIS)", "Russian (KOI8-R)"
++ , "Unicode (UTF-8)", "Western (ISO-8859-1)", NULL);
++ if(!strcmp(config->defaultEncoding, "BIG5"))
++ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 0);
++ else if(!strcmp(config->defaultEncoding, "SHIFT_JIS"))
++ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 1);
++ else if(!strcmp(config->defaultEncoding, "KOI8-R"))
++ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 2);
++ else if(!strcmp(config->defaultEncoding, "UTF-8"))
++ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 3);
++ else if(!strcmp(config->defaultEncoding, "ISO-8859-1"))
++ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 4);
++ // FIXME: Provide a 'Custom' item
++ g_signal_connect(combobox, "changed"
++ , G_CALLBACK(on_prefs_defaultEncoding_changed), prefs);
+ FILLED_ADD(combobox, 1, 2, 2, 3);
+ button = gtk_button_new_with_label("Advanced settings");
+ gtk_widget_set_sensitive(button, FALSE); //...
+@@ -427,15 +494,19 @@
+ sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
+ , "New tab", "New window", "Current tab", NULL);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), config->newPages);
+- g_signal_connect(combobox, "changed"
+- , G_CALLBACK(on_prefs_newpages_changed), prefs);
++ g_signal_connect(combobox, "changed", G_CALLBACK(on_prefs_newpages_changed), prefs);
+ gtk_widget_set_sensitive(combobox, FALSE); //...
+ FILLED_ADD(combobox, 1, 2, 0, 1);
++ checkbutton = gtk_check_button_new_with_mnemonic("_Middle click goto");
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->middleClickGoto);
++ g_signal_connect(checkbutton, "toggled"
++ , G_CALLBACK(on_prefs_middleClickGoto_toggled), prefs);
++ INDENTED_ADD(checkbutton, 0, 1, 1, 2);
+ checkbutton = gtk_check_button_new_with_mnemonic("Open tabs in the _background");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->openTabsInTheBackground);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_openTabsInTheBackground_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 2, 1, 2);
++ SPANNED_ADD(checkbutton, 1, 2, 1, 2);
+ checkbutton = gtk_check_button_new_with_mnemonic("Open popups in _tabs");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->openPopupsInTabs);
+ g_signal_connect(checkbutton, "toggled"
+@@ -448,7 +519,7 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->autoLoadImages);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_loadImagesAutomatically_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 0, 1);
++ INDENTED_ADD(checkbutton, 0, 1, 0, 1);
+ checkbutton = gtk_check_button_new_with_mnemonic("_Shrink images to fit");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->autoShrinkImages);
+ g_signal_connect(checkbutton, "toggled"
+@@ -458,7 +529,7 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->printBackgrounds);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_printBackgrounds_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 1, 2);
++ INDENTED_ADD(checkbutton, 0, 1, 1, 2);
+ checkbutton = gtk_check_button_new_with_mnemonic("_Resizable textareas");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->resizableTextAreas);
+ g_signal_connect(checkbutton, "toggled"
+@@ -468,7 +539,7 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->enableScripts);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_enableJavaScript_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 2, 3);
++ INDENTED_ADD(checkbutton, 0, 1, 2, 3);
+ checkbutton = gtk_check_button_new_with_mnemonic("Enable _plugins");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->enablePlugins);
+ g_signal_connect(checkbutton, "toggled"
+@@ -504,7 +575,7 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarSmall);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_toolbarSmall_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 1, 2);
++ INDENTED_ADD(checkbutton, 0, 1, 1, 2);
+ checkbutton = gtk_check_button_new_with_mnemonic("Show web_search");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarWebSearch);
+ g_signal_connect(checkbutton, "toggled"
+@@ -514,42 +585,34 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarNewTab);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_toolbarNewTab_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 2, 3);
++ INDENTED_ADD(checkbutton, 0, 1, 2, 3);
+ checkbutton = gtk_check_button_new_with_mnemonic("Show _closed tabs button");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarClosedTabs);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_toolbarClosedTabs_toggled), prefs);
+ SPANNED_ADD(checkbutton, 1, 2, 2, 3);
+ FRAME_NEW("Miscellaneous");
+- TABLE_NEW(3, 2);
+- checkbutton = gtk_check_button_new_with_mnemonic
+- ("Show close _buttons on tabs");
++ TABLE_NEW(2, 2);
++ checkbutton = gtk_check_button_new_with_mnemonic("Close _buttons on tabs");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->tabClose);
+ g_signal_connect(checkbutton, "toggled"
+ , G_CALLBACK(on_prefs_tabClose_toggled), prefs);
+- SPANNED_ADD(checkbutton, 0, 1, 0, 1);
++ INDENTED_ADD(checkbutton, 0, 1, 0, 1);
+ hbox = gtk_hbox_new(FALSE, 4);
+ gtk_box_pack_start(GTK_BOX(hbox)
+- , gtk_label_new_with_mnemonic("Tab Si_ze"), FALSE, FALSE, 0);
++ , gtk_label_new_with_mnemonic("Tab Si_ze"), FALSE, FALSE, 4);
+ spinbutton = gtk_spin_button_new_with_range(0, 36, 1);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), config->tabSize);
+ g_signal_connect(spinbutton, "changed"
+ , G_CALLBACK(on_prefs_tabSize_changed), prefs);
+ gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
+ FILLED_ADD(hbox, 1, 2, 0, 1);
+- INDENTED_ADD(gtk_label_new_with_mnemonic("Tabbar _placement"), 0, 1, 1, 2);
+- combobox = gtk_combo_box_new_text();
+- sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
+- , "Left", "Top", "Right", "Bottom", NULL);
+- gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 1); //...
+- gtk_widget_set_sensitive(combobox, FALSE); //...
+- FILLED_ADD(combobox, 1, 2, 1, 2);
+- INDENTED_ADD(gtk_label_new_with_mnemonic("_Location search engine"), 0, 1, 2, 3);
++ INDENTED_ADD(gtk_label_new_with_mnemonic("_Location search engine"), 0, 1, 1, 2);
+ entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(entry), config->locationSearch);
+ g_signal_connect(entry, "focus-out-event"
+ , G_CALLBACK(on_prefs_locationsearch_focus_out), prefs);
+- FILLED_ADD(entry, 1, 2, 2, 3);
++ FILLED_ADD(entry, 1, 2, 1, 2);
+
+ // Page "Network"
+ PAGE_NEW("Network");
+diff -Nurd midori-0.0.17/src/ui.h midori/src/ui.h
+--- midori-0.0.17/src/ui.h 2008-01-20 19:16:17.000000000 +0100
++++ midori/src/ui.h 2008-03-05 10:43:08.071832738 +0100
+@@ -91,9 +91,8 @@
+ "<menuitem action='ZoomOut'/>"
+ "<menuitem action='ZoomNormal'/>"
+ "<separator/>"
+- "<menuitem action='BackgroundImage'/>"
+ "<menuitem action='SourceView'/>"
+- "<menuitem action='Properties'/>"
++ "<menuitem action='Fullscreen'/>"
+ "</menu>"
+ "<menu action='Go'>"
+ "<menuitem action='Back'/>"
+diff -Nurd midori-0.0.17/src/webSearch.h midori/src/webSearch.h
+--- midori-0.0.17/src/webSearch.h 2007-12-15 04:09:47.000000000 +0100
++++ midori/src/webSearch.h 2008-03-05 10:43:08.071832738 +0100
+@@ -16,7 +16,7 @@
+
+ #include <gtk/gtk.h>
+ #include <libsexy/sexy.h>
+-#include <webkit.h>
++#include <webkit/webkit.h>
+
+ // -- Types
+
+diff -Nurd midori-0.0.17/src/webView.c midori/src/webView.c
+--- midori-0.0.17/src/webView.c 2008-01-13 02:47:38.000000000 +0100
++++ midori/src/webView.c 2008-03-05 10:43:08.071832738 +0100
+@@ -1,5 +1,5 @@
+ /*
+- Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
++ Copyright (C) 2007-2008 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -251,6 +251,27 @@
+ return FALSE;
+ }
+
++gboolean on_webView_button_press_after(GtkWidget* webView, GdkEventButton* event
++ , CBrowser* browser)
++{
++ if(event->button == 2 && config->middleClickGoto)
++ {
++ GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
++ gchar* text = gtk_clipboard_wait_for_text(clipboard);
++ gchar* uri = NULL;
++ if(text && strchr(text, '.') && !strchr(text, ' '))
++ uri = magic_uri(text, FALSE);
++ g_free(text);
++ if(uri)
++ {
++ webkit_web_view_open(WEBKIT_WEB_VIEW(browser->webView), uri);
++ g_free(uri);
++ return TRUE;
++ }
++ }
++ return FALSE;
++}
++
+ void on_webView_popup(GtkWidget* webView, CBrowser* browser)
+ {
+ webView_popup(webView, NULL, browser);
+diff -Nurd midori-0.0.17/src/webView.h midori/src/webView.h
+--- midori-0.0.17/src/webView.h 2008-01-04 08:46:44.000000000 +0100
++++ midori/src/webView.h 2008-03-05 10:43:08.071832738 +0100
+@@ -16,7 +16,7 @@
+ #include "browser.h"
+ #include "debug.h"
+
+-#include <webkit.h>
++#include <webkit/webkit.h>
+
+ WebKitNavigationResponse
+ on_webView_navigation_requested(GtkWidget* webView, WebKitWebFrame* frame
+@@ -60,6 +60,9 @@
+ gboolean
+ on_webView_button_press(GtkWidget*, GdkEventButton*, CBrowser*);
+
++gboolean
++on_webView_button_press_after(GtkWidget*, GdkEventButton*, CBrowser*);
++
+ void
+ on_webView_popup(GtkWidget*, CBrowser*);
+
+--- midori-0.0.17/configure.in 2008-01-24 03:47:18.000000000 +0100
++++ midori/configure.in 2008-03-05 10:43:08.025165254 +0100
+@@ -52,15 +52,15 @@
+ GTK_VER=`pkg-config --modversion gtk+-2.0`
+ AC_DEFINE_UNQUOTED([GTK_VER], "$GTK_VER", [GTK+ version])
+
+-# Checks for WebKitGtk
+-PKG_CHECK_MODULES(WEBKIT, WebKitGtk, have_webkit=true, have_webkit=false)
++# Checks for WebKit
++PKG_CHECK_MODULES(WEBKIT, webkit-1.0, have_webkit=true, have_webkit=false)
+ if test "x${have_webkit}" = "xfalse" ; then
+- AC_MSG_ERROR([No WebKitGtk package information found])
++ AC_MSG_ERROR([No WebKit package information found])
+ fi
+ AC_SUBST(WEBKIT_CFLAGS)
+ AC_SUBST(WEBKIT_LIBS)
+-WEBKIT_VER=`pkg-config --modversion WebKitGtk`
+-AC_DEFINE_UNQUOTED([WEBKIT_VER], "$WEBKITGTK_VER", [WebKitGtk version])
++WEBKIT_VER=`pkg-config --modversion webkit-1.0`
++AC_DEFINE_UNQUOTED([WEBKIT_VER], "$WEBKIT_VER", [WebKit version])
+
+ # Checks for libsexy
+ PKG_CHECK_MODULES(LIBSEXY, libsexy, have_libsexy=true, have_libsexy=false)