Changeset 241515 in webkit
- Timestamp:
- Feb 14, 2019 2:11:11 AM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/API/gtk/WebKitScriptDialogImpl.cpp (modified) (9 diffs)
-
UIProcess/API/gtk/WebKitScriptDialogImpl.h (modified) (1 diff)
-
UIProcess/API/gtk/WebKitWebViewGtk.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r241500 r241515 1 2019-02-13 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Use a scrolled window for script alerts text 4 https://bugs.webkit.org/show_bug.cgi?id=184875 5 6 Reviewed by Michael Catanzaro. 7 8 To ensure long text doesn't make the dialog bigger. 9 10 * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: 11 (webkitScriptDialogImplConstructed): Use PANGO_ELLIPSIZE_END for the title and add a scrolled window for the body. 12 (webkitScriptDialogImplSetText): Helper function to set the dialog body, ensuring the scrolled window fills the 13 dialog available size. 14 (webkitScriptDialogImplNew): It now receives the maximum size and uses webkitScriptDialogImplSetText(). 15 * UIProcess/API/gtk/WebKitScriptDialogImpl.h: 16 * UIProcess/API/gtk/WebKitWebViewGtk.cpp: 17 (webkitWebViewScriptDialog): Pass the 80% of the web view size as the maximum size of script dialogs. 18 1 19 2019-02-13 Ryosuke Niwa <rniwa@webkit.org> 2 20 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp
r236004 r241515 29 29 WebKitScriptDialog* dialog; 30 30 GtkWidget* vbox; 31 GtkWidget* swindow; 31 32 GtkWidget* title; 32 33 GtkWidget* label; … … 89 90 gtk_widget_set_size_request(box, -1, 16); 90 91 priv->title = gtk_label_new(nullptr); 92 gtk_label_set_ellipsize(GTK_LABEL(priv->title), PANGO_ELLIPSIZE_END); 91 93 gtk_widget_set_margin_top(priv->title, 6); 92 94 gtk_widget_set_margin_bottom(priv->title, 6); … … 107 109 gtk_widget_show(messageArea); 108 110 111 priv->swindow = gtk_scrolled_window_new(nullptr, nullptr); 112 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(priv->swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 113 gtk_box_pack_start(GTK_BOX(messageArea), priv->swindow, TRUE, TRUE, 0); 114 gtk_widget_show(priv->swindow); 115 109 116 priv->label = gtk_label_new(nullptr); 110 117 gtk_widget_set_halign(priv->label, GTK_ALIGN_CENTER); … … 112 119 gtk_label_set_line_wrap(GTK_LABEL(priv->label), TRUE); 113 120 gtk_label_set_max_width_chars(GTK_LABEL(priv->label), 60); 114 gtk_ box_pack_start(GTK_BOX(messageArea), priv->label, TRUE, FALSE, 0);121 gtk_container_add(GTK_CONTAINER(priv->swindow), priv->label); 115 122 gtk_widget_show(priv->label); 116 123 … … 152 159 } 153 160 161 static void webkitScriptDialogImplSetText(WebKitScriptDialogImpl* dialog, const char* text, GtkRequisition* maxSize) 162 { 163 WebKitScriptDialogImplPrivate* priv = dialog->priv; 164 gtk_label_set_text(GTK_LABEL(priv->label), text); 165 GtkRequisition naturalRequisition; 166 gtk_widget_get_preferred_size(priv->label, nullptr, &naturalRequisition); 167 gtk_widget_set_size_request(priv->swindow, std::min(naturalRequisition.width, maxSize->width), std::min(maxSize->height, naturalRequisition.height)); 168 } 169 154 170 static GtkWidget* webkitScriptDialogImplAddButton(WebKitScriptDialogImpl* dialog, const char* text) 155 171 { … … 167 183 } 168 184 169 GtkWidget* webkitScriptDialogImplNew(WebKitScriptDialog* scriptDialog, const char* title )185 GtkWidget* webkitScriptDialogImplNew(WebKitScriptDialog* scriptDialog, const char* title, GtkRequisition* maxSize) 170 186 { 171 187 auto* dialog = WEBKIT_SCRIPT_DIALOG_IMPL(g_object_new(WEBKIT_TYPE_SCRIPT_DIALOG_IMPL, nullptr)); … … 180 196 dialog->priv->defaultButton = button; 181 197 g_signal_connect_swapped(button, "clicked", G_CALLBACK(webkitScriptDialogImplCancel), dialog); 182 gtk_label_set_text(GTK_LABEL(dialog->priv->label), scriptDialog->message.data());198 webkitScriptDialogImplSetText(dialog, scriptDialog->message.data(), maxSize); 183 199 break; 184 200 } … … 199 215 dialog->priv->defaultButton = button; 200 216 g_signal_connect_swapped(button, "clicked", G_CALLBACK(webkitScriptDialogImplConfirm), dialog); 201 gtk_label_set_text(GTK_LABEL(dialog->priv->label), scriptDialog->message.data());217 webkitScriptDialogImplSetText(dialog, scriptDialog->message.data(), maxSize); 202 218 break; 203 219 } … … 210 226 dialog->priv->defaultButton = button; 211 227 g_signal_connect_swapped(button, "clicked", G_CALLBACK(webkitScriptDialogImplConfirm), dialog); 212 gtk_label_set_text(GTK_LABEL(dialog->priv->label), scriptDialog->message.data());228 webkitScriptDialogImplSetText(dialog, scriptDialog->message.data(), maxSize); 213 229 break; 214 230 } -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.h
r236004 r241515 48 48 49 49 GType webkit_script_dialog_impl_get_type(); 50 GtkWidget* webkitScriptDialogImplNew(WebKitScriptDialog*, const char* title );50 GtkWidget* webkitScriptDialogImplNew(WebKitScriptDialog*, const char* title, GtkRequisition* maxSize); 51 51 void webkitScriptDialogImplCancel(WebKitScriptDialogImpl*); 52 52 void webkitScriptDialogImplConfirm(WebKitScriptDialogImpl*); -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
r236004 r241515 42 42 { 43 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())); 44 // Limit script dialog size to 80% of the web view size. 45 GtkRequisition maxSize = { static_cast<int>(gtk_widget_get_allocated_width(GTK_WIDGET(webView)) * 0.80), static_cast<int>(gtk_widget_get_allocated_height(GTK_WIDGET(webView)) * 0.80) }; 46 webkitWebViewBaseAddDialog(WEBKIT_WEB_VIEW_BASE(webView), webkitScriptDialogImplNew(scriptDialog, title.get(), &maxSize)); 45 47 46 48 return TRUE;
Note: See TracChangeset
for help on using the changeset viewer.