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 + Copyright (C) 2007-2008 Christian Dywan 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 + Copyright (C) 2007-2008 Christian Dywan 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 + Copyright (C) 2007-2008 Christian Dywan 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 -#include +#include // -- 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 -#include +#include 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 + Copyright (C) 2007-2008 Christian Dywan 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 #include +#include #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 + Copyright (C) 2007-2008 Christian Dywan 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 +#include 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 @@ "" "" "" - "" "" - "" + "" "" "" "" 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 #include -#include +#include // -- 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 + Copyright (C) 2007-2008 Christian Dywan 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 +#include 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)