Changeset 34249 in webkit


Ignore:
Timestamp:
May 29, 2008 8:44:11 PM (16 years ago)
Author:
alp@webkit.org
Message:

2008-05-29 Marco Barisione <marco@collabora.co.uk>

Reviewed (and tweaked) by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18281
[GTK] add functions to set/get the zoom level

  • webkit/webkitwebsettings.cpp: (_WebKitWebSettingsPrivate::): (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): (_WebKitWebSettingsPrivate::webkit_web_settings_set_property): (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
  • webkit/webkitwebview.cpp: Add functions to get and set the zoom level.
  • webkit/webkitwebview.h: Ditto.
  • webkit/webkitprivate.h:
Location:
trunk/WebKit/gtk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r34176 r34249  
     12008-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
    1182008-05-28  Alp Toker  <alp@nuanti.com>
    219
  • trunk/WebKit/gtk/webkit/webkitprivate.h

    r32914 r34249  
    8989        GtkAdjustment* horizontalAdjustment;
    9090        GtkAdjustment* verticalAdjustment;
     91
     92        gboolean zoomFullContent;
    9193    };
    9294
  • trunk/WebKit/gtk/webkit/webkitwebsettings.cpp

    r29898 r34249  
    11/*
    22 * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
     3 * Copyright (C) 2008 Nuanti Ltd.
     4 * Copyright (C) 2008 Collabora Ltd.
    35 *
    46 * This library is free software; you can redistribute it and/or
     
    4648    gboolean resizable_text_areas;
    4749    gchar* user_stylesheet_uri;
     50    gfloat zoom_step;
    4851};
    4952
     
    7073    PROP_ENABLE_PLUGINS,
    7174    PROP_RESIZABLE_TEXT_AREAS,
    72     PROP_USER_STYLESHEET_URI
     75    PROP_USER_STYLESHEET_URI,
     76    PROP_ZOOM_STEP
    7377};
    7478
     
    247251                                    "The URI of a stylesheet that is applied to every page.",
    248252                                    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,
    249262                                    flags));
    250263
     
    342355        priv->user_stylesheet_uri = g_strdup(g_value_get_string(value));
    343356        break;
     357    case PROP_ZOOM_STEP:
     358        priv->zoom_step = g_value_get_float(value);
     359        break;
    344360    default:
    345361        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     
    407423    case PROP_USER_STYLESHEET_URI:
    408424        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);
    409428        break;
    410429    default:
     
    457476                 "resizable-text-areas", priv->resizable_text_areas,
    458477                 "user-stylesheet-uri", priv->user_stylesheet_uri,
     478                 "zoom-step", priv->zoom_step,
    459479                 NULL));
    460480
  • trunk/WebKit/gtk/webkit/webkitwebview.cpp

    r34176 r34249  
    66 *  Copyright (C) 2008 Jan Alonzo <jmalonzo@unpluggable.com>
    77 *  Copyright (C) 2008 Nuanti Ltd.
     8 *  Copyright (C) 2008 Collabora Ltd.
    89 *
    910 *  This library is free software; you can redistribute it and/or
     
    99100    PROP_EDITABLE,
    100101    PROP_SETTINGS,
    101     PROP_TRANSPARENT
     102    PROP_TRANSPARENT,
     103    PROP_ZOOM_LEVEL,
     104    PROP_ZOOM_TEXT_ONLY
    102105};
    103106
     
    235238        g_value_set_boolean(value, webkit_web_view_get_transparent(webView));
    236239        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;
    237246    default:
    238247        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     
    253262    case PROP_TRANSPARENT:
    254263        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));
    255270        break;
    256271    default:
     
    11951210                                                         "Transparent",
    11961211                                                         "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",
    11971228                                                         FALSE,
    11981229                                                         WEBKIT_PARAM_READWRITE));
     
    13641395    priv->backForwardList = webkit_web_back_forward_list_new_with_web_view(webView);
    13651396
     1397    priv->zoomFullContent = FALSE;
     1398
    13661399#if GTK_CHECK_VERSION(2,10,0)
    13671400    GdkAtom textHtml = gdk_atom_intern_static_string("text/html");
     
    20442077}
    20452078
    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 */
     2091gfloat 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
     2102static 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 */
     2123void 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 */
     2139void 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 */
     2158void 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 */
     2178gboolean 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 */
     2194void 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  
    218218webkit_web_view_set_transparent (WebKitWebView* web_view, gboolean flag);
    219219
     220WEBKIT_API gfloat
     221webkit_web_view_get_zoom_level (WebKitWebView* web_view);
     222
     223WEBKIT_API void
     224webkit_web_view_set_zoom_level (WebKitWebView* web_view, gfloat zoom_level);
     225
     226WEBKIT_API void
     227webkit_web_view_zoom_in (WebKitWebView* web_view);
     228
     229WEBKIT_API void
     230webkit_web_view_zoom_out (WebKitWebView* web_view);
     231
     232WEBKIT_API gboolean
     233webkit_web_view_get_full_content_zoom (WebKitWebView* web_view);
     234
     235WEBKIT_API void
     236webkit_web_view_set_full_content_zoom (WebKitWebView* web_view, gboolean full_content_zoom);
     237
    220238G_END_DECLS
    221239
Note: See TracChangeset for help on using the changeset viewer.