Changeset 34249 in webkit
- Timestamp:
- May 29, 2008 8:44:11 PM (16 years ago)
- Location:
- trunk/WebKit/gtk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/gtk/ChangeLog
r34176 r34249 1 2008-05-29 Marco Barisione <marco@collabora.co.uk> 2 3 Reviewed (and tweaked) by Alp Toker. 4 5 http://bugs.webkit.org/show_bug.cgi?id=18281 6 [GTK] add functions to set/get the zoom level 7 8 * webkit/webkitwebsettings.cpp: 9 (_WebKitWebSettingsPrivate::): 10 (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): 11 (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): 12 (_WebKitWebSettingsPrivate::webkit_web_settings_get_property): 13 * webkit/webkitwebview.cpp: Add functions to get and set the zoom 14 level. 15 * webkit/webkitwebview.h: Ditto. 16 * webkit/webkitprivate.h: 17 1 18 2008-05-28 Alp Toker <alp@nuanti.com> 2 19 -
trunk/WebKit/gtk/webkit/webkitprivate.h
r32914 r34249 89 89 GtkAdjustment* horizontalAdjustment; 90 90 GtkAdjustment* verticalAdjustment; 91 92 gboolean zoomFullContent; 91 93 }; 92 94 -
trunk/WebKit/gtk/webkit/webkitwebsettings.cpp
r29898 r34249 1 1 /* 2 2 * Copyright (C) 2008 Christian Dywan <christian@imendio.com> 3 * Copyright (C) 2008 Nuanti Ltd. 4 * Copyright (C) 2008 Collabora Ltd. 3 5 * 4 6 * This library is free software; you can redistribute it and/or … … 46 48 gboolean resizable_text_areas; 47 49 gchar* user_stylesheet_uri; 50 gfloat zoom_step; 48 51 }; 49 52 … … 70 73 PROP_ENABLE_PLUGINS, 71 74 PROP_RESIZABLE_TEXT_AREAS, 72 PROP_USER_STYLESHEET_URI 75 PROP_USER_STYLESHEET_URI, 76 PROP_ZOOM_STEP 73 77 }; 74 78 … … 247 251 "The URI of a stylesheet that is applied to every page.", 248 252 0, 253 flags)); 254 255 g_object_class_install_property(gobject_class, 256 PROP_ZOOM_STEP, 257 g_param_spec_float( 258 "zoom-step", 259 "Zoom Stepping Value", 260 "How much the zoom level is changed when zooming in or out.", 261 0, G_MAXFLOAT, 0.1, 249 262 flags)); 250 263 … … 342 355 priv->user_stylesheet_uri = g_strdup(g_value_get_string(value)); 343 356 break; 357 case PROP_ZOOM_STEP: 358 priv->zoom_step = g_value_get_float(value); 359 break; 344 360 default: 345 361 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); … … 407 423 case PROP_USER_STYLESHEET_URI: 408 424 g_value_set_string(value, priv->user_stylesheet_uri); 425 break; 426 case PROP_ZOOM_STEP: 427 g_value_set_float(value, priv->zoom_step); 409 428 break; 410 429 default: … … 457 476 "resizable-text-areas", priv->resizable_text_areas, 458 477 "user-stylesheet-uri", priv->user_stylesheet_uri, 478 "zoom-step", priv->zoom_step, 459 479 NULL)); 460 480 -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r34176 r34249 6 6 * Copyright (C) 2008 Jan Alonzo <jmalonzo@unpluggable.com> 7 7 * Copyright (C) 2008 Nuanti Ltd. 8 * Copyright (C) 2008 Collabora Ltd. 8 9 * 9 10 * This library is free software; you can redistribute it and/or … … 99 100 PROP_EDITABLE, 100 101 PROP_SETTINGS, 101 PROP_TRANSPARENT 102 PROP_TRANSPARENT, 103 PROP_ZOOM_LEVEL, 104 PROP_ZOOM_TEXT_ONLY 102 105 }; 103 106 … … 235 238 g_value_set_boolean(value, webkit_web_view_get_transparent(webView)); 236 239 break; 240 case PROP_ZOOM_LEVEL: 241 g_value_set_float(value, webkit_web_view_get_zoom_level(webView)); 242 break; 243 case PROP_ZOOM_TEXT_ONLY: 244 g_value_set_boolean(value, webkit_web_view_get_full_content_zoom(webView)); 245 break; 237 246 default: 238 247 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); … … 253 262 case PROP_TRANSPARENT: 254 263 webkit_web_view_set_transparent(webView, g_value_get_boolean(value)); 264 break; 265 case PROP_ZOOM_LEVEL: 266 webkit_web_view_set_zoom_level(webView, g_value_get_float(value)); 267 break; 268 case PROP_ZOOM_TEXT_ONLY: 269 webkit_web_view_set_full_content_zoom(webView, g_value_get_boolean(value)); 255 270 break; 256 271 default: … … 1195 1210 "Transparent", 1196 1211 "Whether content has a transparent background", 1212 FALSE, 1213 WEBKIT_PARAM_READWRITE)); 1214 1215 g_object_class_install_property(objectClass, PROP_ZOOM_LEVEL, 1216 g_param_spec_float("zoom-level", 1217 "Zoom level", 1218 "The level of zoom of the content", 1219 G_MINFLOAT, 1220 G_MAXFLOAT, 1221 1, 1222 WEBKIT_PARAM_READWRITE)); 1223 1224 g_object_class_install_property(objectClass, PROP_ZOOM_TEXT_ONLY, 1225 g_param_spec_boolean("full-content-zoom", 1226 "Text-only zoom", 1227 "Whether only the text size is changed when zooming", 1197 1228 FALSE, 1198 1229 WEBKIT_PARAM_READWRITE)); … … 1364 1395 priv->backForwardList = webkit_web_back_forward_list_new_with_web_view(webView); 1365 1396 1397 priv->zoomFullContent = FALSE; 1398 1366 1399 #if GTK_CHECK_VERSION(2,10,0) 1367 1400 GdkAtom textHtml = gdk_atom_intern_static_string("text/html"); … … 2044 2077 } 2045 2078 2046 } 2079 /** 2080 * webkit_web_view_get_zoom_level: 2081 * @web_view: a #WebKitWebView 2082 * 2083 * Returns the zoom level of @web_view, i.e. the factor by which elements in 2084 * the page are scaled with respect to their original size. 2085 * If the "full-content-zoom" property is set to %FALSE (the default) 2086 * the zoom level changes the text size, or if %TRUE, scales all 2087 * elements in the page. 2088 * 2089 * Return value: the zoom level of @web_view 2090 */ 2091 gfloat webkit_web_view_get_zoom_level(WebKitWebView* webView) 2092 { 2093 g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1.0f); 2094 2095 Frame* frame = core(webView)->mainFrame(); 2096 if (!frame) 2097 return 1.0f; 2098 2099 return frame->zoomFactor(); 2100 } 2101 2102 static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoomLevel) 2103 { 2104 Frame* frame = core(webView)->mainFrame(); 2105 if (!frame) 2106 return; 2107 2108 WebKitWebViewPrivate* priv = webView->priv; 2109 frame->setZoomFactor(zoomLevel, !priv->zoomFullContent); 2110 } 2111 2112 /** 2113 * webkit_web_view_set_zoom_level: 2114 * @web_view: a #WebKitWebView 2115 * @zoom_level: the new zoom level 2116 * 2117 * Sets the zoom level of @web_view, i.e. the factor by which elements in 2118 * the page are scaled with respect to their original size. 2119 * If the "full-content-zoom" property is set to %FALSE (the default) 2120 * the zoom level changes the text size, or if %TRUE, scales all 2121 * elements in the page. 2122 */ 2123 void webkit_web_view_set_zoom_level(WebKitWebView* webView, gfloat zoomLevel) 2124 { 2125 g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); 2126 2127 webkit_web_view_apply_zoom_level(webView, zoomLevel); 2128 g_object_notify(G_OBJECT(webView), "zoom-level"); 2129 } 2130 2131 /** 2132 * webkit_web_view_zoom_in: 2133 * @web_view: a #WebKitWebView 2134 * 2135 * Increases the zoom level of @web_view. The current zoom 2136 * level is incremented by the value of the "zoom-step" 2137 * property of the #WebKitWebSettings associated with @web_view. 2138 */ 2139 void webkit_web_view_zoom_in(WebKitWebView* webView) 2140 { 2141 g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); 2142 2143 WebKitWebViewPrivate* priv = webView->priv; 2144 gfloat zoomMultiplierRatio; 2145 g_object_get(priv->webSettings, "zoom-step", &zoomMultiplierRatio, NULL); 2146 2147 webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) + zoomMultiplierRatio); 2148 } 2149 2150 /** 2151 * webkit_web_view_zoom_out: 2152 * @web_view: a #WebKitWebView 2153 * 2154 * Decreases the zoom level of @web_view. The current zoom 2155 * level is decremented by the value of the "zoom-step" 2156 * property of the #WebKitWebSettings associated with @web_view. 2157 */ 2158 void webkit_web_view_zoom_out(WebKitWebView* webView) 2159 { 2160 g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); 2161 2162 WebKitWebViewPrivate* priv = webView->priv; 2163 gfloat zoomMultiplierRatio; 2164 g_object_get(priv->webSettings, "zoom-step", &zoomMultiplierRatio, NULL); 2165 2166 webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) - zoomMultiplierRatio); 2167 } 2168 2169 /** 2170 * webkit_web_view_get_full_content_zoom: 2171 * @web_view: a #WebKitWebView 2172 * 2173 * Returns whether the zoom level affects only text or all elements. 2174 * 2175 * Return value: %FALSE if only text should be scaled (the default), 2176 * %TRUE if the full content of the view should be scaled. 2177 */ 2178 gboolean webkit_web_view_get_full_content_zoom(WebKitWebView* webView) 2179 { 2180 g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE); 2181 2182 WebKitWebViewPrivate* priv = webView->priv; 2183 return priv->zoomFullContent; 2184 } 2185 2186 /** 2187 * webkit_web_view_set_full_content_zoom: 2188 * @web_view: a #WebKitWebView 2189 * @full_content_zoom: %FALSE if only text should be scaled (the default), 2190 * %TRUE if the full content of the view should be scaled. 2191 * 2192 * Sets whether the zoom level affects only text or all elements. 2193 */ 2194 void webkit_web_view_set_full_content_zoom(WebKitWebView* webView, gboolean zoomFullContent) 2195 { 2196 g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); 2197 2198 WebKitWebViewPrivate* priv = webView->priv; 2199 if (priv->zoomFullContent == zoomFullContent) 2200 return; 2201 2202 priv->zoomFullContent = zoomFullContent; 2203 webkit_web_view_apply_zoom_level(webView, webkit_web_view_get_zoom_level(webView)); 2204 2205 g_object_notify(G_OBJECT(webView), "full-content-zoom"); 2206 } 2207 2208 } -
trunk/WebKit/gtk/webkit/webkitwebview.h
r32914 r34249 218 218 webkit_web_view_set_transparent (WebKitWebView* web_view, gboolean flag); 219 219 220 WEBKIT_API gfloat 221 webkit_web_view_get_zoom_level (WebKitWebView* web_view); 222 223 WEBKIT_API void 224 webkit_web_view_set_zoom_level (WebKitWebView* web_view, gfloat zoom_level); 225 226 WEBKIT_API void 227 webkit_web_view_zoom_in (WebKitWebView* web_view); 228 229 WEBKIT_API void 230 webkit_web_view_zoom_out (WebKitWebView* web_view); 231 232 WEBKIT_API gboolean 233 webkit_web_view_get_full_content_zoom (WebKitWebView* web_view); 234 235 WEBKIT_API void 236 webkit_web_view_set_full_content_zoom (WebKitWebView* web_view, gboolean full_content_zoom); 237 220 238 G_END_DECLS 221 239
Note: See TracChangeset
for help on using the changeset viewer.