diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 38151ede..66a6c88d 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -257,9 +257,8 @@ _midori_browser_update_interface (MidoriBrowser* browser) _action_set_sensitive (browser, "ZoomOut", web_view != NULL); _action_set_sensitive (browser, "ZoomNormal", web_view != NULL && webkit_web_view_get_zoom_level (WEBKIT_WEB_VIEW (web_view)) != 1.0); - #if GLIB_CHECK_VERSION (2, 16, 0) - _action_set_sensitive (browser, "SourceView", web_view != NULL); - #endif + if (sokoke_gio_supports_http ()) + _action_set_sensitive (browser, "SourceView", web_view != NULL); _action_set_sensitive (browser, "FindNext", web_view != NULL); _action_set_sensitive (browser, "FindPrevious", web_view != NULL); /* _action_set_sensitive (browser, "FindQuick", web_view != NULL); */ @@ -3602,9 +3601,8 @@ midori_browser_init (MidoriBrowser* browser) g_object_unref (ui_manager); - #if !GLIB_CHECK_VERSION (2, 16, 0) - _action_set_sensitive (browser, "SourceView", FALSE); - #endif + _action_set_sensitive (browser, "SourceView", sokoke_gio_supports_http ()); + #ifndef WEBKIT_CHECK_VERSION _action_set_sensitive (browser, "ZoomIn", FALSE); _action_set_sensitive (browser, "ZoomOut", FALSE); diff --git a/midori/sokoke.c b/midori/sokoke.c index ea476f93..0ab823de 100644 --- a/midori/sokoke.c +++ b/midori/sokoke.c @@ -625,3 +625,26 @@ sokoke_action_create_popup_menu_item (GtkAction* action) return menuitem; } + +gboolean +sokoke_gio_supports_http (void) +{ + #if HAVE_GIO + static gboolean supports_http; + static gboolean tested; + const gchar* const* schemes = g_vfs_get_supported_uri_schemes (g_vfs_get_default ()); + + if (tested) + return supports_http; + while (*schemes) + { + if (!strcmp (*schemes, "http")) + supports_http = TRUE; + schemes++; + } + tested = TRUE; + return supports_http; + #else + return FALSE; + #endif +} diff --git a/midori/sokoke.h b/midori/sokoke.h index 616c601f..873e3704 100644 --- a/midori/sokoke.h +++ b/midori/sokoke.h @@ -131,4 +131,7 @@ sokoke_object_get_boolean (gpointer object, GtkWidget* sokoke_action_create_popup_menu_item (GtkAction* action); +gboolean +sokoke_gio_supports_http (void ); + #endif /* !__SOKOKE_H__ */