⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webkitwebview.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            g_cclosure_marshal_VOID__VOID,            G_TYPE_NONE, 0);    /**     * WebKitWebView::cut-clipboard:     * @web_view: the object which received the signal     *     * The #WebKitWebView::cut-clipboard signal is a keybinding signal which gets emitted to     * cut the selection to the clipboard.     *     * The default bindings for this signal are Ctrl-x and Shift-Delete.     */    webkit_web_view_signals[CUT_CLIPBOARD] = g_signal_new("cut-clipboard",            G_TYPE_FROM_CLASS(webViewClass),            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),            G_STRUCT_OFFSET(WebKitWebViewClass, cut_clipboard),            NULL, NULL,            g_cclosure_marshal_VOID__VOID,            G_TYPE_NONE, 0);    /**     * WebKitWebView::copy-clipboard:     * @web_view: the object which received the signal     *     * The #WebKitWebView::copy-clipboard signal is a keybinding signal which gets emitted to     * copy the selection to the clipboard.     *     * The default bindings for this signal are Ctrl-c and Ctrl-Insert.     */    webkit_web_view_signals[COPY_CLIPBOARD] = g_signal_new("copy-clipboard",            G_TYPE_FROM_CLASS(webViewClass),            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),            G_STRUCT_OFFSET(WebKitWebViewClass, copy_clipboard),            NULL, NULL,            g_cclosure_marshal_VOID__VOID,            G_TYPE_NONE, 0);    /**     * WebKitWebView::paste-clipboard:     * @web_view: the object which received the signal     *     * The #WebKitWebView::paste-clipboard signal is a keybinding signal which gets emitted to     * paste the contents of the clipboard into the Web view.     *     * The default bindings for this signal are Ctrl-v and Shift-Insert.     */    webkit_web_view_signals[PASTE_CLIPBOARD] = g_signal_new("paste-clipboard",            G_TYPE_FROM_CLASS(webViewClass),            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),            G_STRUCT_OFFSET(WebKitWebViewClass, paste_clipboard),            NULL, NULL,            g_cclosure_marshal_VOID__VOID,            G_TYPE_NONE, 0);    /*     * implementations of virtual methods     */    webViewClass->create_web_view = webkit_web_view_real_create_web_view;    webViewClass->web_view_ready = webkit_web_view_real_web_view_ready;    webViewClass->navigation_requested = webkit_web_view_real_navigation_requested;    webViewClass->window_object_cleared = webkit_web_view_real_window_object_cleared;    webViewClass->choose_file = webkit_web_view_real_choose_file;    webViewClass->script_alert = webkit_web_view_real_script_alert;    webViewClass->script_confirm = webkit_web_view_real_script_confirm;    webViewClass->script_prompt = webkit_web_view_real_script_prompt;    webViewClass->console_message = webkit_web_view_real_console_message;    webViewClass->select_all = webkit_web_view_real_select_all;    webViewClass->cut_clipboard = webkit_web_view_real_cut_clipboard;    webViewClass->copy_clipboard = webkit_web_view_real_copy_clipboard;    webViewClass->paste_clipboard = webkit_web_view_real_paste_clipboard;    GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass);    objectClass->dispose = webkit_web_view_dispose;    objectClass->finalize = webkit_web_view_finalize;    objectClass->get_property = webkit_web_view_get_property;    objectClass->set_property = webkit_web_view_set_property;    GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(webViewClass);    widgetClass->realize = webkit_web_view_realize;    widgetClass->expose_event = webkit_web_view_expose_event;    widgetClass->key_press_event = webkit_web_view_key_press_event;    widgetClass->key_release_event = webkit_web_view_key_release_event;    widgetClass->button_press_event = webkit_web_view_button_press_event;    widgetClass->button_release_event = webkit_web_view_button_release_event;    widgetClass->motion_notify_event = webkit_web_view_motion_event;    widgetClass->scroll_event = webkit_web_view_scroll_event;    widgetClass->size_allocate = webkit_web_view_size_allocate;    widgetClass->popup_menu = webkit_web_view_popup_menu_handler;    widgetClass->focus_in_event = webkit_web_view_focus_in_event;    widgetClass->focus_out_event = webkit_web_view_focus_out_event;    widgetClass->get_accessible = webkit_web_view_get_accessible;    GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webViewClass);    containerClass->add = webkit_web_view_container_add;    containerClass->remove = webkit_web_view_container_remove;    containerClass->forall = webkit_web_view_container_forall;    /*     * make us scrollable (e.g. addable to a GtkScrolledWindow)     */    webViewClass->set_scroll_adjustments = webkit_web_view_set_scroll_adjustments;    GTK_WIDGET_CLASS(webViewClass)->set_scroll_adjustments_signal = g_signal_new("set-scroll-adjustments",            G_TYPE_FROM_CLASS(webViewClass),            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),            G_STRUCT_OFFSET(WebKitWebViewClass, set_scroll_adjustments),            NULL, NULL,            webkit_marshal_VOID__OBJECT_OBJECT,            G_TYPE_NONE, 2,            GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);    /*     * Key bindings     */    binding_set = gtk_binding_set_by_class(webViewClass);    gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK,                                 "select_all", 0);    /* Cut/copy/paste */    gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK,                                 "cut_clipboard", 0);    gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK,                                 "copy_clipboard", 0);    gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK,                                 "paste_clipboard", 0);    gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK,                                 "cut_clipboard", 0);    gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK,                                 "copy_clipboard", 0);    gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK,                                 "paste_clipboard", 0);    /*     * properties     */#if GTK_CHECK_VERSION(2,10,0)    /**    * WebKitWebView:copy-target-list:    *    * The list of targets this web view supports for clipboard copying.    *    * Since: 1.0.2    */    g_object_class_install_property(objectClass, PROP_COPY_TARGET_LIST,                                    g_param_spec_boxed("copy-target-list",                                                       "Copy target list",                                                       "The list of targets this web view supports for clipboard copying",                                                       GTK_TYPE_TARGET_LIST,                                                       WEBKIT_PARAM_READABLE));    /**    * WebKitWebView:paste-target-list:    *    * The list of targets this web view supports for clipboard pasting.    *    * Since: 1.0.2    */    g_object_class_install_property(objectClass, PROP_PASTE_TARGET_LIST,                                    g_param_spec_boxed("paste-target-list",                                                       "Paste target list",                                                       "The list of targets this web view supports for clipboard pasting",                                                       GTK_TYPE_TARGET_LIST,                                                       WEBKIT_PARAM_READABLE));#endif    g_object_class_install_property(objectClass, PROP_SETTINGS,                                    g_param_spec_object("settings",                                                        "Settings",                                                        "An associated WebKitWebSettings instance",                                                        WEBKIT_TYPE_WEB_SETTINGS,                                                        WEBKIT_PARAM_READWRITE));    /**    * WebKitWebView:web-inspector:    *    * The associated WebKitWebInspector instance.    *    * Since: 1.0.3    */    g_object_class_install_property(objectClass, PROP_WEB_INSPECTOR,                                    g_param_spec_object("web-inspector",                                                        "Web Inspector",                                                        "The associated WebKitWebInspector instance",                                                        WEBKIT_TYPE_WEB_INSPECTOR,                                                        WEBKIT_PARAM_READABLE));    /**    * WebKitWebView:window-features:    *    * An associated WebKitWebWindowFeatures instance.    *    * Since: 1.0.3    */    g_object_class_install_property(objectClass, PROP_WINDOW_FEATURES,                                    g_param_spec_object("window-features",                                                        "Window Features",                                                        "An associated WebKitWebWindowFeatures instance",                                                        WEBKIT_TYPE_WEB_WINDOW_FEATURES,                                                        WEBKIT_PARAM_READWRITE));    g_object_class_install_property(objectClass, PROP_EDITABLE,                                    g_param_spec_boolean("editable",                                                         "Editable",                                                         "Whether content can be modified by the user",                                                         FALSE,                                                         WEBKIT_PARAM_READWRITE));    g_object_class_install_property(objectClass, PROP_TRANSPARENT,                                    g_param_spec_boolean("transparent",                                                         "Transparent",                                                         "Whether content has a transparent background",                                                         FALSE,                                                         WEBKIT_PARAM_READWRITE));    /**    * WebKitWebView:zoom-level:    *    * The level of zoom of the content.    *    * Since: 1.0.1    */    g_object_class_install_property(objectClass, PROP_ZOOM_LEVEL,                                    g_param_spec_float("zoom-level",                                                       "Zoom level",                                                       "The level of zoom of the content",                                                       G_MINFLOAT,                                                       G_MAXFLOAT,                                                       1.0f,                                                       WEBKIT_PARAM_READWRITE));    /**    * WebKitWebView:full-content-zoom:    *    * Whether the full content is scaled when zooming.    *    * Since: 1.0.1    */    g_object_class_install_property(objectClass, PROP_FULL_CONTENT_ZOOM,                                    g_param_spec_boolean("full-content-zoom",                                                         "Full content zoom",                                                         "Whether the full content is scaled when zooming",                                                         FALSE,                                                         WEBKIT_PARAM_READWRITE));    /**     * WebKitWebView:encoding:     *     * The default encoding of the web view.     *     * Since: 1.1.2     */    g_object_class_install_property(objectClass, PROP_ENCODING,                                    g_param_spec_string("encoding",                                                        "Encoding",                                                        "The default encoding of the web view",                                                        NULL,                                                        WEBKIT_PARAM_READABLE));    /**     * WebKitWebView:custom-encoding:     *     * The custom encoding of the web view.     *     * Since: 1.1.2     */    g_object_class_install_property(objectClass, PROP_CUSTOM_ENCODING,                                    g_param_spec_string("custom-encoding",                                                        "Custom Encoding",                                                        "The custom encoding of the web view",                                                        NULL,                                                        WEBKIT_PARAM_READWRITE));    g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));}static gdouble webViewGetDPI(WebKitWebView* webView){    WebKitWebViewPrivate* priv = webView->priv;    WebKitWebSettings* webSettings = priv->webSettings;    gboolean enforce96DPI;    g_object_get(webSettings, "enforce-96-dpi", &enforce96DPI, NULL);    if (enforce96DPI)        return 96.0;    gdouble DPI = defaultDPI;#if GTK_CHECK_VERSION(2,10,0)    GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default();    if (screen) {        DPI = gdk_screen_get_resolution(screen);        // gdk_screen_get_resolution() returns -1 when no DPI is set.        if (DPI == -1)            DPI = defaultDPI;    }#endif    ASSERT(DPI > 0);    return DPI;}static void webkit_web_view_screen_changed(WebKitWebView* webView, GdkScreen* previousScreen, gpointer userdata){    WebKitWebViewPrivate* priv = webView->priv;    WebKitWebSettings* webSettings = priv->webSettings;    Settings* settings = core(webView)->settings();    gdouble DPI = webViewGetDPI(webView);    guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;    g_object_get(webSettings,                 "default-font-size", &defaultFontSize,                 "default-monospace-font-size", &defaultMonospaceFontSize,                 "minimum-font-size", &minimumFontSize,                 "minimum-logical-font-size", &minimumLogicalFontSize,                 NULL);    settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);    settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);    settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);    settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);}static void webkit_web_view_update_settings(WebKitWebView* webView){    WebKitWebViewPrivate* priv = webView->priv;    WebKitWebSettings* webSettings = priv->webSettings;    Settings* settings = core(webView)->settings();    gchar* defaultEncoding, *cursiveFontFamily, *defaultFontFamily, *fantasyFontFamily, *monospaceFontFamily, *sansSerifFontFamily, *serifFontFamily, *userStylesheetUri;    gboolean autoLoadImages, autoShrinkImages, printBackgrounds, enableScripts, enablePlugins, enableDeveloperExtras, resizableTextAreas;    g_object_get(webSettings,                 "default-encoding", &defaultEncoding,                 "cursive-font-family", &cursiveFontFamily,                 "default-font-family", &defaultFontFamily,                 "fantasy-font-family", &fantasyFontFamily,                 "monospace-font-family", &monospaceFontFamily,                 "sans-serif-font-family", &sansSerifFontFamily,                 "serif-font-famil

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -