📄 webkitwebview.cpp
字号:
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 + -