Changeset 30385 in webkit


Ignore:
Timestamp:
Feb 18, 2008 3:03:57 PM (16 years ago)
Author:
alp@webkit.org
Message:

2008-02-18 Alp Toker <alp@atoker.com>

Reviewed by Mark Rowe.

http://bugs.webkit.org/show_bug.cgi?id=17312
[GTK] Webview Transparent Background

Add support for WebView background transparency.

  • webkit/webkitprivate.h:
  • webkit/webkitwebview.cpp:
  • webkit/webkitwebview.h:
Location:
trunk/WebKit/gtk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r30384 r30385  
     12008-02-18  Alp Toker  <alp@atoker.com>
     2
     3        Reviewed by Mark Rowe.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=17312
     6        [GTK] Webview Transparent Background
     7
     8        Add support for WebView background transparency.
     9
     10        * webkit/webkitprivate.h:
     11        * webkit/webkitwebview.cpp:
     12        * webkit/webkitwebview.h:
     13
    1142008-02-18  Alp Toker  <alp@atoker.com>
    215
  • trunk/WebKit/gtk/webkit/webkitprivate.h

    r30226 r30385  
    8585        GtkTargetList* copy_target_list;
    8686        GtkTargetList* paste_target_list;
     87
     88        gboolean transparent;
    8789    };
    8890
  • trunk/WebKit/gtk/webkit/webkitwebview.cpp

    r30384 r30385  
    9595    PROP_PASTE_TARGET_LIST,
    9696    PROP_EDITABLE,
    97     PROP_SETTINGS
     97    PROP_SETTINGS,
     98    PROP_TRANSPARENT
    9899};
    99100
     
    213214        g_value_set_object(value, webkit_web_view_get_settings(webView));
    214215        break;
     216    case PROP_TRANSPARENT:
     217        g_value_set_boolean(value, webkit_web_view_get_transparent(webView));
     218        break;
    215219    default:
    216220        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     
    229233        webkit_web_view_set_settings(webView, WEBKIT_WEB_SETTINGS(g_value_get_object(value)));
    230234        break;
     235    case PROP_TRANSPARENT:
     236        webkit_web_view_set_transparent(webView, g_value_get_boolean(value));
     237        break;
    231238    default:
    232239        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     
    237244{
    238245    WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
     246    WebKitWebViewPrivate* priv = webView->priv;
    239247
    240248    Frame* frame = core(webView)->mainFrame();
     
    246254    if (frame->renderer()) {
    247255        frame->view()->layoutIfNeededRecursive();
     256
     257        if (priv->transparent) {
     258            cairo_save(cr);
     259            cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
     260            cairo_paint(cr);
     261            cairo_restore(cr);
     262        }
     263
    248264        frame->view()->paint(&ctx, clip);
    249265    }
     
    10771093                                                         "Editable",
    10781094                                                         "Whether content can be modified by the user",
     1095                                                         FALSE,
     1096                                                         WEBKIT_PARAM_READWRITE));
     1097
     1098    g_object_class_install_property(objectClass, PROP_TRANSPARENT,
     1099                                    g_param_spec_boolean("transparent",
     1100                                                         "Transparent",
     1101                                                         "Whether content has a transparent background",
    10791102                                                         FALSE,
    10801103                                                         WEBKIT_PARAM_READWRITE));
     
    18731896}
    18741897
    1875 }
     1898/**
     1899 * webkit_web_view_get_transparent:
     1900 * @web_view: a #WebKitWebView
     1901 *
     1902 * Returns whether the #WebKitWebView has a transparent background.
     1903 *
     1904 * Return value: %FALSE when the #WebKitWebView draws a solid background
     1905 * (the default), otherwise %TRUE.
     1906 */
     1907gboolean webkit_web_view_get_transparent(WebKitWebView* webView)
     1908{
     1909    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
     1910
     1911    WebKitWebViewPrivate* priv = webView->priv;
     1912    return priv->transparent;
     1913}
     1914
     1915/**
     1916 * webkit_web_view_set_transparent:
     1917 * @web_view: a #WebKitWebView
     1918 *
     1919 * Sets whether the #WebKitWebView has a transparent background.
     1920 *
     1921 * Pass %FALSE to have the #WebKitWebView draw a solid background
     1922 * (the default), otherwise %TRUE.
     1923 */
     1924void webkit_web_view_set_transparent(WebKitWebView* webView, gboolean flag)
     1925{
     1926    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
     1927
     1928    WebKitWebViewPrivate* priv = webView->priv;
     1929    priv->transparent = flag;
     1930
     1931    // TODO: This needs to be made persistent or it could become a problem when
     1932    // the main frame is replaced.
     1933    Frame* frame = core(webView)->mainFrame();
     1934    g_return_if_fail(frame);
     1935    frame->view()->setTransparent(flag);
     1936}
     1937
     1938}
  • trunk/WebKit/gtk/webkit/webkitwebview.h

    r30384 r30385  
    212212webkit_web_view_go_backward (WebKitWebView* web_view);
    213213
     214WEBKIT_API gboolean
     215webkit_web_view_get_transparent (WebKitWebView* web_view);
     216
     217WEBKIT_API void
     218webkit_web_view_set_transparent (WebKitWebView* web_view, gboolean flag);
     219
    214220G_END_DECLS
    215221
Note: See TracChangeset for help on using the changeset viewer.