Changeset 236004 in webkit
- Timestamp:
- Sep 14, 2018 4:01:06 AM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 4 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/platform/gtk/po/ChangeLog
r234926 r236004 1 2018-09-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Make script dialogs modal to the current web view only 4 https://bugs.webkit.org/show_bug.cgi?id=189545 5 6 Reviewed by Michael Catanzaro. 7 8 * POTFILES.in: 9 1 10 2018-08-16 Piotr Drąg <piotrdrag@gmail.com> 2 11 -
trunk/Source/WebCore/platform/gtk/po/POTFILES.in
r229199 r236004 30 30 ../../../WebKit/UIProcess/API/gtk/WebKitPrintCustomWidget.cpp 31 31 ../../../WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp 32 ../../../WebKit/UIProcess/API/gtk/WebKitScriptDialog Gtk.cpp32 ../../../WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp 33 33 ../../../WebKit/UIProcess/API/gtk/WebKitWebInspector.cpp 34 34 ../../../WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp -
trunk/Source/WebKit/ChangeLog
r235995 r236004 1 2018-09-14 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Make script dialogs modal to the current web view only 4 https://bugs.webkit.org/show_bug.cgi?id=189545 5 6 Reviewed by Michael Catanzaro. 7 8 Change the default implementation of script dialogs to use an embedded window, like the HTTP auth dialog, 9 instead of a GtkMessageDialog. This patch adds a base class WebKitWebViewDialog shared by 10 WebKitAuthenticationDialog and the new WebKitScriptDialogImpl. 11 12 * SourcesGTK.txt: Add new files to compilation. 13 * UIProcess/API/glib/WebKitScriptDialogPrivate.h: 14 * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp: 15 (webkitAuthenticationDialogInitialize): Do not use a frame and use a better styled title. 16 (webkit_authentication_dialog_class_init): Remove implementation of vfuncs that are now implemented by the 17 parent. 18 * UIProcess/API/gtk/WebKitAuthenticationDialog.h: 19 * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp: 20 (webkitScriptDialogAccept): Use WebKitScriptDialogImpl API. 21 (webkitScriptDialogDismiss): Ditto. 22 (webkitScriptDialogSetUserInput): Ditto. 23 * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: Added. 24 (webkitScriptDialogImplClose): 25 (webkitScriptDialogImplKeyPressEvent): 26 (webkitScriptDialogImplMap): 27 (webkitScriptDialogImplConstructed): 28 (webkitScriptDialogImplDispose): 29 (webkit_script_dialog_impl_class_init): 30 (webkitScriptDialogImplAddButton): 31 (webkitScriptDialogImplNew): 32 (webkitScriptDialogImplCancel): 33 (webkitScriptDialogImplConfirm): 34 (webkitScriptDialogImplSetEntryText): 35 * UIProcess/API/gtk/WebKitScriptDialogImpl.h: Added. 36 * UIProcess/API/gtk/WebKitWebViewBase.cpp: 37 (webkitWebViewChildIsInternalWidget): Rename authenticationDialog as just dialog. 38 (webkitWebViewBaseAddDialog): Ditto. 39 (webkitWebViewBaseContainerRemove): Ditto. 40 (webkitWebViewBaseContainerForall): Ditto. 41 (webkitWebViewBaseConstructed): Ditto. 42 (webkitWebViewBaseSizeAllocate): Ditto. 43 (webkitWebViewBaseKeyPressEvent): Ditto. 44 (webkitWebViewBaseHandleMouseEvent): Ditto. 45 (webkitWebViewBaseButtonPressEvent): Ditto. 46 (webkitWebViewBaseButtonReleaseEvent): Ditto. 47 (webkitWebViewBaseHandleWheelEvent): Ditto. 48 (webkitWebViewBaseScrollEvent): Ditto. 49 (webkitWebViewBaseMotionNotifyEvent): Ditto. 50 (webkitWebViewBaseCrossingNotifyEvent): Ditto. 51 (webkitWebViewBaseTouchEvent): Ditto. 52 (webkitWebViewBaseFocus): Ditto. 53 (webkitWebViewBaseDestroy): Ditto. 54 * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: 55 * UIProcess/API/gtk/WebKitWebViewDialog.cpp: Added. 56 (webkitWebViewDialogDraw): 57 (webkitWebViewDialogSizeAllocate): 58 (webkitWebViewDialogConstructed): 59 (webkit_web_view_dialog_class_init): 60 * UIProcess/API/gtk/WebKitWebViewDialog.h: Added. 61 * UIProcess/API/gtk/WebKitWebViewGtk.cpp: 62 (webkitWebViewAuthenticate): 63 (webkitWebViewScriptDialog): 64 1 65 2018-09-13 Ryan Haddad <ryanhaddad@apple.com> 2 66 -
trunk/Source/WebKit/SourcesGTK.txt
r235521 r236004 192 192 UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp @no-unify 193 193 UIProcess/API/gtk/WebKitScriptDialogGtk.cpp @no-unify 194 UIProcess/API/gtk/WebKitScriptDialogImpl.cpp @no-unify 194 195 UIProcess/API/gtk/WebKitVersion.cpp @no-unify 195 196 UIProcess/API/gtk/WebKitWebInspector.cpp @no-unify 196 197 UIProcess/API/gtk/WebKitWebViewBase.cpp @no-unify 197 198 UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp @no-unify 199 UIProcess/API/gtk/WebKitWebViewDialog.cpp @no-unify 198 200 UIProcess/API/gtk/WebKitWebViewGtk.cpp @no-unify 199 201 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitScriptDialogPrivate.h
r235969 r236004 21 21 22 22 #include "WebKitScriptDialog.h" 23 #include "WebKitWebView.h"24 23 #include <wtf/text/CString.h> 25 24 #include <wtf/text/WTFString.h> … … 51 50 52 51 WebKitScriptDialog* webkitScriptDialogCreate(unsigned type, const CString& message, const CString& defaultText, Function<void(bool, const String&)>&& completionHandler); 53 void webkitScriptDialogRun(WebKitScriptDialog*, WebKitWebView*);54 52 bool webkitScriptDialogIsRunning(WebKitScriptDialog*); 55 53 void webkitScriptDialogAccept(WebKitScriptDialog*); -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp
r218332 r236004 39 39 GtkWidget* defaultButton; 40 40 unsigned long authenticationCancelledID; 41 GRefPtr<GtkStyleContext> styleContext;42 41 }; 43 42 44 WEBKIT_DEFINE_TYPE(WebKitAuthenticationDialog, webkit_authentication_dialog, GTK_TYPE_EVENT_BOX)43 WEBKIT_DEFINE_TYPE(WebKitAuthenticationDialog, webkit_authentication_dialog, WEBKIT_TYPE_WEB_VIEW_DIALOG) 45 44 46 45 static void okButtonClicked(GtkButton*, WebKitAuthenticationDialog* authDialog) … … 83 82 static void webkitAuthenticationDialogInitialize(WebKitAuthenticationDialog* authDialog) 84 83 { 85 GtkWidget* frame = gtk_frame_new(0);86 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); 87 88 GtkWidget* vBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);89 gtk_ container_set_border_width(GTK_CONTAINER(vBox), 12);90 91 GtkWidget* label = gtk_label_new(nullptr);92 // Title of the HTTP authentication dialog.93 GUniquePtr<char> title(g_strdup_printf("<b>%s</b>", _("Authentication Required")));94 gtk_ label_set_markup(GTK_LABEL(label), title.get());95 gtk_widget_s et_halign(label, GTK_ALIGN_CENTER);96 gtk_ widget_show(label);97 gtk_ box_pack_start(GTK_BOX(vBox), label, FALSE, FALSE, 0);84 GtkWidget* vBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 20); 85 86 GtkWidget* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); 87 gtk_style_context_add_class(gtk_widget_get_style_context(box), GTK_STYLE_CLASS_TITLEBAR); 88 gtk_widget_set_size_request(box, -1, 16); 89 GtkWidget* title = gtk_label_new(_("Authentication Required")); 90 gtk_widget_set_margin_top(title, 6); 91 gtk_widget_set_margin_bottom(title, 6); 92 gtk_style_context_add_class(gtk_widget_get_style_context(title), GTK_STYLE_CLASS_TITLE); 93 gtk_box_set_center_widget(GTK_BOX(box), title); 94 gtk_widget_show(title); 95 gtk_box_pack_start(GTK_BOX(vBox), box, TRUE, FALSE, 0); 96 gtk_widget_show(box); 98 97 99 98 GtkWidget* buttonBox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); 100 gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_E ND);101 gtk_ container_set_border_width(GTK_CONTAINER(buttonBox), 5);102 gtk_ box_set_spacing(GTK_BOX(buttonBox), 6);99 gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonBox), GTK_BUTTONBOX_EXPAND); 100 gtk_widget_set_hexpand(buttonBox, TRUE); 101 gtk_style_context_add_class(gtk_widget_get_style_context(buttonBox), "dialog-action-area"); 103 102 104 103 GtkWidget* button = gtk_button_new_with_mnemonic(_("_Cancel")); 105 104 g_signal_connect(button, "clicked", G_CALLBACK(cancelButtonClicked), authDialog); 106 gtk_box_pack_ end(GTK_BOX(buttonBox), button, FALSE, TRUE, 0);105 gtk_box_pack_start(GTK_BOX(buttonBox), button, FALSE, TRUE, 0); 107 106 gtk_widget_show(button); 108 107 … … 115 114 gtk_widget_show(button); 116 115 117 GtkWidget* authBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12); 118 gtk_container_set_border_width(GTK_CONTAINER(authBox), 5); 116 GtkWidget* authBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10); 117 gtk_widget_set_margin_start(authBox, 10); 118 gtk_widget_set_margin_end(authBox, 10); 119 119 120 120 const WebCore::AuthenticationChallenge& challenge = webkitAuthenticationRequestGetAuthenticationChallenge(priv->request.get())->core(); … … 122 122 GUniquePtr<char> prompt(g_strdup_printf(_("Authentication required by %s:%i"), 123 123 challenge.protectionSpace().host().utf8().data(), challenge.protectionSpace().port())); 124 label = createLabelWithLineWrap(prompt.get());124 GtkWidget* label = createLabelWithLineWrap(prompt.get()); 125 125 gtk_widget_show(label); 126 126 gtk_box_pack_start(GTK_BOX(authBox), label, FALSE, FALSE, 0); … … 190 190 gtk_widget_show(buttonBox); 191 191 192 gtk_container_add(GTK_CONTAINER( frame), vBox);192 gtk_container_add(GTK_CONTAINER(authDialog), vBox); 193 193 gtk_widget_show(vBox); 194 194 195 gtk_container_add(GTK_CONTAINER(authDialog), frame);196 gtk_widget_show(frame);197 198 195 authDialog->priv->authenticationCancelledID = g_signal_connect(authDialog->priv->request.get(), "cancelled", G_CALLBACK(authenticationCancelled), authDialog); 199 }200 201 static gboolean webkitAuthenticationDialogDraw(GtkWidget* widget, cairo_t* cr)202 {203 WebKitAuthenticationDialogPrivate* priv = WEBKIT_AUTHENTICATION_DIALOG(widget)->priv;204 205 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);206 cairo_set_source_rgba(cr, 0, 0, 0, 0.5);207 cairo_paint(cr);208 209 if (GtkWidget* child = gtk_bin_get_child(GTK_BIN(widget))) {210 GtkAllocation allocation;211 gtk_widget_get_allocation(child, &allocation);212 213 gtk_style_context_save(priv->styleContext.get());214 gtk_style_context_add_class(priv->styleContext.get(), GTK_STYLE_CLASS_BACKGROUND);215 gtk_render_background(priv->styleContext.get(), cr, allocation.x, allocation.y, allocation.width, allocation.height);216 gtk_style_context_restore(priv->styleContext.get());217 }218 219 GTK_WIDGET_CLASS(webkit_authentication_dialog_parent_class)->draw(widget, cr);220 221 return FALSE;222 196 } 223 197 … … 229 203 230 204 GTK_WIDGET_CLASS(webkit_authentication_dialog_parent_class)->map(widget); 231 }232 233 static void webkitAuthenticationDialogSizeAllocate(GtkWidget* widget, GtkAllocation* allocation)234 {235 GTK_WIDGET_CLASS(webkit_authentication_dialog_parent_class)->size_allocate(widget, allocation);236 237 GtkWidget* child = gtk_bin_get_child(GTK_BIN(widget));238 if (!child)239 return;240 241 GtkRequisition naturalSize;242 gtk_widget_get_preferred_size(child, 0, &naturalSize);243 244 GtkAllocation childAllocation;245 gtk_widget_get_allocation(child, &childAllocation);246 247 childAllocation.x += (allocation->width - naturalSize.width) / 2;248 childAllocation.y += (allocation->height - naturalSize.height) / 2;249 childAllocation.width = naturalSize.width;250 childAllocation.height = naturalSize.height;251 gtk_widget_size_allocate(child, &childAllocation);252 }253 254 static void webkitAuthenticationDialogConstructed(GObject* object)255 {256 G_OBJECT_CLASS(webkit_authentication_dialog_parent_class)->constructed(object);257 258 WebKitAuthenticationDialogPrivate* priv = WEBKIT_AUTHENTICATION_DIALOG(object)->priv;259 priv->styleContext = adoptGRef(gtk_style_context_new());260 GtkWidgetPath* path = gtk_widget_path_new();261 gtk_widget_path_append_type(path, GTK_TYPE_WINDOW);262 gtk_style_context_set_path(priv->styleContext.get(), path);263 gtk_widget_path_free(path);264 205 } 265 206 … … 278 219 { 279 220 GObjectClass* objectClass = G_OBJECT_CLASS(klass); 280 objectClass->constructed = webkitAuthenticationDialogConstructed;281 221 objectClass->dispose = webkitAuthenticationDialogDispose; 282 222 283 223 GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(klass); 284 widgetClass->draw = webkitAuthenticationDialogDraw;285 224 widgetClass->map = webkitAuthenticationDialogMap; 286 widgetClass->size_allocate = webkitAuthenticationDialogSizeAllocate;287 225 } 288 226 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitAuthenticationDialog.h
r173510 r236004 18 18 */ 19 19 20 #ifndef WebKitAuthenticationDialog_h 21 #define WebKitAuthenticationDialog_h 20 #pragma once 22 21 23 22 #include "WebKitAuthenticationRequest.h" 23 #include "WebKitWebViewDialog.h" 24 24 #include <gtk/gtk.h> 25 25 … … 43 43 44 44 struct _WebKitAuthenticationDialog { 45 GtkEventBoxparent;45 WebKitWebViewDialog parent; 46 46 47 47 WebKitAuthenticationDialogPrivate* priv; … … 49 49 50 50 struct _WebKitAuthenticationDialogClass { 51 GtkEventBoxClass parentClass;51 WebKitWebViewDialogClass parentClass; 52 52 }; 53 53 … … 57 57 G_END_DECLS 58 58 59 #endif // WebKitAuthenticationDialog_h -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogGtk.cpp
r235969 r236004 21 21 #include "WebKitScriptDialog.h" 22 22 23 #include "WebKitScriptDialogImpl.h" 23 24 #include "WebKitScriptDialogPrivate.h" 24 #include "WebKitWebViewPrivate.h"25 #include <WebCore/GtkUtilities.h>26 #include <glib/gi18n-lib.h>27 #include <gtk/gtk.h>28 #include <wtf/glib/GUniquePtr.h>29 30 static void scriptDialogResponseCallback(GtkWidget* dialog, int responseID, WebKitScriptDialog* scriptDialog)31 {32 switch (scriptDialog->type) {33 case WEBKIT_SCRIPT_DIALOG_ALERT:34 break;35 case WEBKIT_SCRIPT_DIALOG_CONFIRM:36 case WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM:37 scriptDialog->confirmed = responseID == GTK_RESPONSE_OK;38 break;39 case WEBKIT_SCRIPT_DIALOG_PROMPT:40 if (responseID == GTK_RESPONSE_OK) {41 if (auto* entry = g_object_get_data(G_OBJECT(dialog), "wk-script-dialog-entry"))42 scriptDialog->text = gtk_entry_get_text(GTK_ENTRY(entry));43 }44 break;45 }46 47 scriptDialog->nativeDialog = nullptr;48 webkit_script_dialog_close(scriptDialog);49 webkit_script_dialog_unref(scriptDialog);50 gtk_widget_destroy(dialog);51 }52 53 static GtkWidget* webkitWebViewCreateJavaScriptDialog(WebKitWebView* webView, GtkMessageType type, GtkButtonsType buttons, int defaultResponse, const char* primaryText, const char* secondaryText = nullptr)54 {55 GtkWidget* parent = gtk_widget_get_toplevel(GTK_WIDGET(webView));56 GtkWidget* dialog = gtk_message_dialog_new(WebCore::widgetIsOnscreenToplevelWindow(parent) ? GTK_WINDOW(parent) : nullptr,57 GTK_DIALOG_DESTROY_WITH_PARENT, type, buttons, "%s", primaryText);58 if (secondaryText)59 gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondaryText);60 GUniquePtr<char> title(g_strdup_printf("JavaScript - %s", webkitWebViewGetPage(webView).pageLoadState().url().utf8().data()));61 gtk_window_set_title(GTK_WINDOW(dialog), title.get());62 if (buttons != GTK_BUTTONS_NONE)63 gtk_dialog_set_default_response(GTK_DIALOG(dialog), defaultResponse);64 65 return dialog;66 }67 68 void webkitScriptDialogRun(WebKitScriptDialog* scriptDialog, WebKitWebView* webView)69 {70 GtkWidget* dialog = nullptr;71 72 switch (scriptDialog->type) {73 case WEBKIT_SCRIPT_DIALOG_ALERT:74 dialog = webkitWebViewCreateJavaScriptDialog(webView, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, GTK_RESPONSE_CLOSE, scriptDialog->message.data());75 break;76 case WEBKIT_SCRIPT_DIALOG_CONFIRM:77 dialog = webkitWebViewCreateJavaScriptDialog(webView, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, GTK_RESPONSE_OK, scriptDialog->message.data());78 break;79 case WEBKIT_SCRIPT_DIALOG_PROMPT: {80 dialog = webkitWebViewCreateJavaScriptDialog(webView, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, GTK_RESPONSE_OK, scriptDialog->message.data());81 GtkWidget* entry = gtk_entry_new();82 g_object_set_data(G_OBJECT(dialog), "wk-script-dialog-entry", entry);83 gtk_entry_set_text(GTK_ENTRY(entry), scriptDialog->defaultText.data());84 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), entry);85 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);86 gtk_widget_show(entry);87 break;88 }89 case WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM:90 dialog = webkitWebViewCreateJavaScriptDialog(webView, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, GTK_RESPONSE_OK,91 _("Are you sure you want to leave this page?"), scriptDialog->message.data());92 gtk_dialog_add_buttons(GTK_DIALOG(dialog), _("Stay on Page"), GTK_RESPONSE_CLOSE, _("Leave Page"), GTK_RESPONSE_OK, nullptr);93 gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);94 break;95 }96 97 ASSERT(dialog);98 scriptDialog->nativeDialog = dialog;99 g_signal_connect(dialog, "response", G_CALLBACK(scriptDialogResponseCallback), webkit_script_dialog_ref(scriptDialog));100 gtk_widget_show(dialog);101 }102 25 103 26 void webkitScriptDialogAccept(WebKitScriptDialog* scriptDialog) 104 27 { 105 int response = 0; 106 switch (scriptDialog->type) { 107 case WEBKIT_SCRIPT_DIALOG_ALERT: 108 response = GTK_RESPONSE_CLOSE; 109 break; 110 case WEBKIT_SCRIPT_DIALOG_CONFIRM: 111 case WEBKIT_SCRIPT_DIALOG_PROMPT: 112 case WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM: 113 response = GTK_RESPONSE_OK; 114 break; 115 } 116 ASSERT(scriptDialog->nativeDialog); 117 gtk_dialog_response(GTK_DIALOG(scriptDialog->nativeDialog), response); 28 if (!WEBKIT_IS_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog)) 29 return; 30 webkitScriptDialogImplConfirm(WEBKIT_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog)); 118 31 } 119 32 120 33 void webkitScriptDialogDismiss(WebKitScriptDialog* scriptDialog) 121 34 { 122 ASSERT(scriptDialog->nativeDialog); 123 gtk_dialog_response(GTK_DIALOG(scriptDialog->nativeDialog), GTK_RESPONSE_CLOSE); 35 if (!WEBKIT_IS_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog)) 36 return; 37 webkitScriptDialogImplCancel(WEBKIT_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog)); 124 38 } 125 39 126 40 void webkitScriptDialogSetUserInput(WebKitScriptDialog* scriptDialog, const String& userInput) 127 41 { 128 if ( scriptDialog->type != WEBKIT_SCRIPT_DIALOG_PROMPT)42 if (!WEBKIT_IS_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog)) 129 43 return; 130 44 131 ASSERT(scriptDialog->nativeDialog); 132 GtkWidget* dialogContentArea = gtk_dialog_get_content_area(GTK_DIALOG(scriptDialog->nativeDialog)); 133 GUniquePtr<GList> children(gtk_container_get_children(GTK_CONTAINER(dialogContentArea))); 134 for (GList* child = children.get(); child; child = g_list_next(child)) { 135 GtkWidget* childWidget = GTK_WIDGET(child->data); 136 if (GTK_IS_ENTRY(childWidget)) { 137 gtk_entry_set_text(GTK_ENTRY(childWidget), userInput.utf8().data()); 138 break; 139 } 140 } 45 webkitScriptDialogImplSetEntryText(WEBKIT_SCRIPT_DIALOG_IMPL(scriptDialog->nativeDialog), userInput); 141 46 } -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
r235560 r236004 42 42 #include "WebInspectorProxy.h" 43 43 #include "WebKit2Initialize.h" 44 #include "WebKitAuthenticationDialog.h"45 44 #include "WebKitWebViewBaseAccessible.h" 46 45 #include "WebKitWebViewBasePrivate.h" … … 168 167 IntRect tooltipArea; 169 168 GRefPtr<AtkObject> accessible; 170 GtkWidget* authenticationDialog { nullptr };169 GtkWidget* dialog { nullptr }; 171 170 GtkWidget* inspectorView { nullptr }; 172 171 AttachmentSide inspectorAttachmentSide { AttachmentSide::Bottom }; … … 402 401 { 403 402 WebKitWebViewBasePrivate* priv = webViewBase->priv; 404 return widget == priv->inspectorView || widget == priv-> authenticationDialog;403 return widget == priv->inspectorView || widget == priv->dialog; 405 404 } 406 405 … … 421 420 } 422 421 423 void webkitWebViewBaseAdd AuthenticationDialog(WebKitWebViewBase* webViewBase, GtkWidget* dialog)424 { 425 WebKitWebViewBasePrivate* priv = webViewBase->priv; 426 priv-> authenticationDialog = dialog;422 void webkitWebViewBaseAddDialog(WebKitWebViewBase* webViewBase, GtkWidget* dialog) 423 { 424 WebKitWebViewBasePrivate* priv = webViewBase->priv; 425 priv->dialog = dialog; 427 426 gtk_container_add(GTK_CONTAINER(webViewBase), dialog); 428 427 gtk_widget_show(dialog); … … 460 459 priv->inspectorView = 0; 461 460 priv->inspectorViewSize = 0; 462 } else if (priv-> authenticationDialog == widget) {463 priv-> authenticationDialog = 0;461 } else if (priv->dialog == widget) { 462 priv->dialog = nullptr; 464 463 } else { 465 464 ASSERT(priv->children.contains(widget)); … … 483 482 (*callback)(priv->inspectorView, callbackData); 484 483 485 if (includeInternals && priv-> authenticationDialog)486 (*callback)(priv-> authenticationDialog, callbackData);484 if (includeInternals && priv->dialog) 485 (*callback)(priv->dialog, callbackData); 487 486 } 488 487 … … 519 518 WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(object)->priv; 520 519 priv->pageClient = std::make_unique<PageClientImpl>(viewWidget); 521 priv-> authenticationDialog = 0;520 priv->dialog = nullptr; 522 521 } 523 522 … … 590 589 } 591 590 592 // The authentication dialog iscentered in the view rect, which means that it591 // The dialogs are centered in the view rect, which means that it 593 592 // never overlaps the web inspector. Thus, we need to calculate the allocation here 594 593 // after calculating the inspector allocation. 595 if (priv-> authenticationDialog) {594 if (priv->dialog) { 596 595 GtkRequisition minimumSize; 597 gtk_widget_get_preferred_size(priv-> authenticationDialog, &minimumSize, nullptr);596 gtk_widget_get_preferred_size(priv->dialog, &minimumSize, nullptr); 598 597 599 598 GtkAllocation childAllocation = { 0, 0, std::max(minimumSize.width, viewRect.width()), std::max(minimumSize.height, viewRect.height()) }; 600 gtk_widget_size_allocate(priv-> authenticationDialog, &childAllocation);599 gtk_widget_size_allocate(priv->dialog, &childAllocation); 601 600 } 602 601 … … 686 685 #endif 687 686 688 if (priv-> authenticationDialog)687 if (priv->dialog) 689 688 return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->key_press_event(widget, keyEvent); 690 689 … … 744 743 { 745 744 WebKitWebViewBasePrivate* priv = webViewBase->priv; 746 ASSERT(!priv-> authenticationDialog);745 ASSERT(!priv->dialog); 747 746 748 747 int clickCount = 0; … … 789 788 WebKitWebViewBasePrivate* priv = webViewBase->priv; 790 789 791 if (priv-> authenticationDialog)790 if (priv->dialog) 792 791 return GDK_EVENT_STOP; 793 792 … … 802 801 WebKitWebViewBasePrivate* priv = webViewBase->priv; 803 802 804 if (priv-> authenticationDialog)803 if (priv->dialog) 805 804 return GDK_EVENT_STOP; 806 805 … … 813 812 { 814 813 WebKitWebViewBasePrivate* priv = webViewBase->priv; 815 ASSERT(!priv-> authenticationDialog);814 ASSERT(!priv->dialog); 816 815 if (phase) 817 816 priv->pageProxy->handleWheelEvent(NativeWebWheelEvent(event, phase.value(), momentum.value_or(WebWheelEvent::Phase::PhaseNone))); … … 828 827 return GDK_EVENT_PROPAGATE; 829 828 830 if (priv-> authenticationDialog)829 if (priv->dialog) 831 830 return GDK_EVENT_PROPAGATE; 832 831 … … 876 875 WebKitWebViewBasePrivate* priv = webViewBase->priv; 877 876 878 if (priv-> authenticationDialog) {877 if (priv->dialog) { 879 878 auto* widgetClass = GTK_WIDGET_CLASS(webkit_web_view_base_parent_class); 880 879 return widgetClass->motion_notify_event ? widgetClass->motion_notify_event(widget, event) : GDK_EVENT_PROPAGATE; … … 891 890 WebKitWebViewBasePrivate* priv = webViewBase->priv; 892 891 893 if (priv-> authenticationDialog)892 if (priv->dialog) 894 893 return GDK_EVENT_PROPAGATE; 895 894 … … 986 985 WebKitWebViewBasePrivate* priv = webViewBase->priv; 987 986 988 if (priv-> authenticationDialog)987 if (priv->dialog) 989 988 return GDK_EVENT_STOP; 990 989 … … 1259 1258 static gboolean webkitWebViewBaseFocus(GtkWidget* widget, GtkDirectionType direction) 1260 1259 { 1261 // If the authenticationdialog is active, we need to forward focus events there. This1260 // If a dialog is active, we need to forward focus events there. This 1262 1261 // ensures that you can tab between elements in the box. 1263 1262 WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv; 1264 if (priv-> authenticationDialog) {1263 if (priv->dialog) { 1265 1264 gboolean returnValue; 1266 g_signal_emit_by_name(priv-> authenticationDialog, "focus", direction, &returnValue);1265 g_signal_emit_by_name(priv->dialog, "focus", direction, &returnValue); 1267 1266 return returnValue; 1268 1267 } … … 1274 1273 { 1275 1274 WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv; 1276 if (priv-> authenticationDialog)1277 gtk_widget_destroy(priv-> authenticationDialog);1275 if (priv->dialog) 1276 gtk_widget_destroy(priv->dialog); 1278 1277 1279 1278 GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->destroy(widget); -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h
r218332 r236004 62 62 bool webkitWebViewBaseIsInWindow(WebKitWebViewBase*); 63 63 64 void webkitWebViewBaseAddAuthenticationDialog(WebKitWebViewBase*, GtkWidget* authDialog); 65 void webkitWebViewBaseCancelAuthenticationDialog(WebKitWebViewBase*); 64 void webkitWebViewBaseAddDialog(WebKitWebViewBase*, GtkWidget*); 66 65 void webkitWebViewBaseAddWebInspector(WebKitWebViewBase*, GtkWidget* inspector, WebKit::AttachmentSide); 67 66 void webkitWebViewBaseResetClickCounter(WebKitWebViewBase*); -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
r232150 r236004 22 22 23 23 #include "WebKitAuthenticationDialog.h" 24 #include "WebKitScriptDialog Private.h"24 #include "WebKitScriptDialogImpl.h" 25 25 #include "WebKitWebViewBasePrivate.h" 26 26 #include "WebKitWebViewPrivate.h" … … 34 34 { 35 35 CredentialStorageMode credentialStorageMode = webkit_authentication_request_can_save_credentials(request) ? AllowPersistentStorage : DisallowPersistentStorage; 36 webkitWebViewBaseAdd AuthenticationDialog(WEBKIT_WEB_VIEW_BASE(webView), webkitAuthenticationDialogNew(request, credentialStorageMode));36 webkitWebViewBaseAddDialog(WEBKIT_WEB_VIEW_BASE(webView), webkitAuthenticationDialogNew(request, credentialStorageMode)); 37 37 38 38 return TRUE; … … 41 41 gboolean webkitWebViewScriptDialog(WebKitWebView* webView, WebKitScriptDialog* scriptDialog) 42 42 { 43 webkitScriptDialogRun(scriptDialog, webView); 43 GUniquePtr<char> title(g_strdup_printf("JavaScript - %s", webkitWebViewGetPage(webView).pageLoadState().url().utf8().data())); 44 webkitWebViewBaseAddDialog(WEBKIT_WEB_VIEW_BASE(webView), webkitScriptDialogImplNew(scriptDialog, title.get())); 45 44 46 return TRUE; 45 47 }
Note: See TracChangeset
for help on using the changeset viewer.