diff --git a/midori/Makefile.am b/midori/Makefile.am index bda06d22..5f72dc2f 100644 --- a/midori/Makefile.am +++ b/midori/Makefile.am @@ -30,4 +30,5 @@ midori_SOURCES = \ webSearch.c webSearch.h \ gjs.c gjs.h \ sokoke.c sokoke.h \ - search.c search.h + search.c search.h \ + compat.c compat.h diff --git a/midori/compat.c b/midori/compat.c new file mode 100644 index 00000000..d9ff8bb7 --- /dev/null +++ b/midori/compat.c @@ -0,0 +1,102 @@ +/* + Copyright (C) 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 + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + See the file COPYING for the full license text. +*/ + +#include "compat.h" + +#ifndef WEBKIT_CHECK_VERSION + +/** + * webkit_web_view_get_zoom_level: + * @web_view: a #WebKitWebView + * + * Retrieves the current zoom level. + * + * Return value: the zoom level, always 1.0 if not supported + **/ +gfloat +webkit_web_view_get_zoom_level (WebKitWebView* web_view) +{ + g_return_val_if_fail (WEBKIT_IS_WEB_VIEW (web_view), 1.0); + + if (g_object_class_find_property (G_OBJECT_GET_CLASS (web_view), + "zoom-level")) + { + gfloat zoom_level; + g_object_get (web_view, "zoom-level", &zoom_level, NULL); + return zoom_level; + } + return 1.0; +} + +/** + * webkit_web_view_set_zoom_level: + * @web_view: a #WebKitWebView + * + * Sets the current zoom level. + * + * Does nothing if not supported. + **/ +void +webkit_web_view_set_zoom_level (WebKitWebView* web_view, + gfloat zoom_level) +{ + g_return_if_fail (WEBKIT_IS_WEB_VIEW (web_view)); + + if (g_object_class_find_property (G_OBJECT_GET_CLASS (web_view), + "zoom-level")) + g_object_set (web_view, "zoom-level", zoom_level, NULL); +} + +/** + * webkit_web_view_zoom_in: + * @web_view: a #WebKitWebView + * + * Increases the current zoom level. + * + * Does nothing if not supported. + **/ +void +webkit_web_view_zoom_in (WebKitWebView* web_view) +{ + g_return_if_fail (WEBKIT_IS_WEB_VIEW (web_view)); + + gfloat zoom_level = webkit_web_view_get_zoom_level (web_view); + WebKitWebSettings* settings = webkit_web_view_get_settings (web_view); + gfloat zoom_step; + g_object_get (settings, "zoom-step", &zoom_step, NULL); + webkit_web_view_set_zoom_level (web_view, zoom_level + zoom_step); +} + +/** + * webkit_web_view_zoom_out: + * @web_view: a #WebKitWebView + * + * Decreases the current zoom level. + * + * Does nothing if not supported. + **/ +void +webkit_web_view_zoom_out (WebKitWebView* web_view) +{ + g_return_if_fail (WEBKIT_IS_WEB_VIEW (web_view)); + + gfloat zoom_level = webkit_web_view_get_zoom_level (web_view); + WebKitWebSettings* settings = webkit_web_view_get_settings (web_view); + if (g_object_class_find_property (G_OBJECT_GET_CLASS (settings), + "zoom-step")) + { + gfloat zoom_step; + g_object_get (settings, "zoom-step", &zoom_step, NULL); + webkit_web_view_set_zoom_level (web_view, zoom_level - zoom_step); + } +} + +#endif diff --git a/midori/compat.h b/midori/compat.h new file mode 100644 index 00000000..1547b11d --- /dev/null +++ b/midori/compat.h @@ -0,0 +1,37 @@ +/* + Copyright (C) 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 + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + See the file COPYING for the full license text. +*/ + +#ifndef __COMPAT_H__ +#define __COMPAT_H__ + +#include + +G_BEGIN_DECLS + +#ifndef WEBKIT_CHECK_VERSION + +gfloat +webkit_web_view_get_zoom_level (WebKitWebView* web_view); + +void +webkit_web_view_set_zoom_level (WebKitWebView* web_view); + +void +webkit_web_view_zoom_in (WebKitWebView* web_view); + +void +webkit_web_view_zoom_out (WebKitWebView* web_view); + +#endif + +G_END_DECLS + +#endif /* __COMPAT_H__ */ diff --git a/midori/midori-app.c b/midori/midori-app.c index ae36b150..a77fd630 100644 --- a/midori/midori-app.c +++ b/midori/midori-app.c @@ -379,8 +379,6 @@ midori_app_set_settings (MidoriApp* app, { g_return_if_fail (MIDORI_IS_APP (app)); - MidoriAppPrivate* priv = app->priv; - g_object_set (app, "settings", settings, NULL); } diff --git a/midori/midori-browser.c b/midori/midori-browser.c index bd055d83..2fa5c5eb 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -179,7 +179,7 @@ _midori_browser_update_interface (MidoriBrowser* browser) { loading = midori_web_view_is_loading (MIDORI_WEB_VIEW (web_view)); _action_set_sensitive (browser, "ZoomNormal", - midori_web_view_get_zoom_level (MIDORI_WEB_VIEW (web_view)) != 1.0); + webkit_web_view_get_zoom_level (WEBKIT_WEB_VIEW (web_view)) != 1.0); if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_view), "zoom-level")) { @@ -1248,16 +1248,8 @@ _action_zoom_in_activate (GtkAction* action, MidoriBrowser* browser) { GtkWidget* web_view = midori_browser_get_current_web_view (browser); - if (web_view && g_object_class_find_property ( - G_OBJECT_GET_CLASS (web_view), "zoom-level")) - { - MidoriBrowserPrivate* priv = browser->priv; - - gfloat zoom_level, zoom_step; - g_object_get (web_view, "zoom-level", &zoom_level, NULL); - g_object_get (priv->settings, "zoom-step", &zoom_step, NULL); - g_object_set (web_view, "zoom-level", zoom_level + zoom_step, NULL); - } + if (web_view) + webkit_web_view_zoom_in (WEBKIT_WEB_VIEW (web_view)); } static void @@ -1265,16 +1257,8 @@ _action_zoom_out_activate (GtkAction* action, MidoriBrowser* browser) { GtkWidget* web_view = midori_browser_get_current_web_view (browser); - if (web_view && g_object_class_find_property ( - G_OBJECT_GET_CLASS (web_view), "zoom-level")) - { - MidoriBrowserPrivate* priv = browser->priv; - - gfloat zoom_level, zoom_step; - g_object_get (web_view, "zoom-level", &zoom_level, NULL); - g_object_get (priv->settings, "zoom-step", &zoom_step, NULL); - g_object_set (web_view, "zoom-level", zoom_level - zoom_step, NULL); - } + if (web_view) + webkit_web_view_zoom_out (WEBKIT_WEB_VIEW (web_view)); } static void @@ -1282,9 +1266,8 @@ _action_zoom_normal_activate (GtkAction* action, MidoriBrowser* browser) { GtkWidget* web_view = midori_browser_get_current_web_view (browser); - if (web_view && g_object_class_find_property ( - G_OBJECT_GET_CLASS (web_view), "zoom-level")) - g_object_set (web_view, "zoom-level", 1.0, NULL); + if (web_view) + webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW (web_view), 1.0); } /*static void diff --git a/midori/midori-webview.c b/midori/midori-webview.c index ec015ea1..0c68b26b 100644 --- a/midori/midori-webview.c +++ b/midori/midori-webview.c @@ -1080,26 +1080,3 @@ midori_web_view_get_link_uri (MidoriWebView* web_view) MidoriWebViewPrivate* priv = web_view->priv; return priv->link_uri; } - -/** - * midori_web_view_get_zoom_level: - * @web_view: a #MidoriWebView - * - * Retrieves the current zoom level. - * - * Return value: the zoom level, always 1 if not supported - **/ -gfloat -midori_web_view_get_zoom_level (MidoriWebView* web_view) -{ - g_return_val_if_fail (MIDORI_IS_WEB_VIEW (web_view), 1); - - if (g_object_class_find_property (G_OBJECT_GET_CLASS (web_view), - "zoom-level")) - { - gfloat zoom_level; - g_object_get (web_view, "zoom-level", &zoom_level, NULL); - return zoom_level; - } - return 1; -} diff --git a/midori/midori-webview.h b/midori/midori-webview.h index 6117ccc9..0905ce68 100644 --- a/midori/midori-webview.h +++ b/midori/midori-webview.h @@ -107,9 +107,6 @@ midori_web_view_get_display_title (MidoriWebView* web_view); const gchar* midori_web_view_get_link_uri (MidoriWebView* web_view); -gfloat -midori_web_view_get_zoom_level (MidoriWebView* web_view); - G_END_DECLS #endif /* __MIDORI_WEB_VIEW_H__ */