<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[161864] trunk/Tools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/161864">161864</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-01-13 00:12:36 -0800 (Mon, 13 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK] Make MiniBrowser windows non-transient by default
https://bugs.webkit.org/show_bug.cgi?id=126840

Patch by Adrian Perez de Castro &lt;aperez@igalia.com&gt; on 2014-01-13
Reviewed by Carlos Garcia Campos.

Instead of making new browser windows transient as soon as they are
created, save the pointer to the parent window and set the transient
state later on when handling the &quot;run-as-modal&quot; signal. This makes
it easier to use the MiniBrowser to do tests involving multiple
windows, and will be useful as well when multi-web-process mode is
enabled for the GTK port.

* MiniBrowser/gtk/BrowserWindow.c:
(webViewRunAsModal): Set the parent window using
gtk_window_set_transient_for() using the saved parent
window.
(browser_window_new): Save the parent window using
g_object_set_data() instead of making the new window
transient immediately.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsMiniBrowsergtkBrowserWindowc">trunk/Tools/MiniBrowser/gtk/BrowserWindow.c</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (161863 => 161864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-01-13 07:20:55 UTC (rev 161863)
+++ trunk/Tools/ChangeLog        2014-01-13 08:12:36 UTC (rev 161864)
</span><span class="lines">@@ -1,3 +1,25 @@
</span><ins>+2014-01-13  Adrian Perez de Castro  &lt;aperez@igalia.com&gt;
+
+        [GTK] Make MiniBrowser windows non-transient by default
+        https://bugs.webkit.org/show_bug.cgi?id=126840
+
+        Reviewed by Carlos Garcia Campos.
+
+        Instead of making new browser windows transient as soon as they are
+        created, save the pointer to the parent window and set the transient
+        state later on when handling the &quot;run-as-modal&quot; signal. This makes
+        it easier to use the MiniBrowser to do tests involving multiple
+        windows, and will be useful as well when multi-web-process mode is
+        enabled for the GTK port.
+
+        * MiniBrowser/gtk/BrowserWindow.c:
+        (webViewRunAsModal): Set the parent window using
+        gtk_window_set_transient_for() using the saved parent
+        window.
+        (browser_window_new): Save the parent window using
+        g_object_set_data() instead of making the new window
+        transient immediately.
+
</ins><span class="cx"> 2014-01-12  Sergio Correia  &lt;sergio.correia@openbossa.org&gt;
</span><span class="cx"> 
</span><span class="cx">         [EFL][WK2] Make API tests work again
</span></span></pre></div>
<a id="trunkToolsMiniBrowsergtkBrowserWindowc"></a>
<div class="modfile"><h4>Modified: trunk/Tools/MiniBrowser/gtk/BrowserWindow.c (161863 => 161864)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/MiniBrowser/gtk/BrowserWindow.c        2014-01-13 07:20:55 UTC (rev 161863)
+++ trunk/Tools/MiniBrowser/gtk/BrowserWindow.c        2014-01-13 08:12:36 UTC (rev 161864)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">     GdkPixbuf *favicon;
</span><span class="cx">     GtkWidget *reloadOrStopButton;
</span><span class="cx">     GtkWidget *fullScreenMessageLabel;
</span><ins>+    GtkWindow *parentWindow;
</ins><span class="cx">     guint fullScreenMessageLabelId;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -269,6 +270,7 @@
</span><span class="cx"> static void webViewRunAsModal(WebKitWebView *webView, BrowserWindow *window)
</span><span class="cx"> {
</span><span class="cx">     gtk_window_set_modal(GTK_WINDOW(window), TRUE);
</span><ins>+    gtk_window_set_transient_for(GTK_WINDOW(window), window-&gt;parentWindow);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void webViewReadyToShow(WebKitWebView *webView, BrowserWindow *window)
</span><span class="lines">@@ -700,10 +702,15 @@
</span><span class="cx"> {
</span><span class="cx">     g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(view), 0);
</span><span class="cx"> 
</span><del>-    return GTK_WIDGET(g_object_new(BROWSER_TYPE_WINDOW,
-                                   &quot;transient-for&quot;, parent,
-                                   &quot;type&quot;, GTK_WINDOW_TOPLEVEL,
-                                   &quot;view&quot;, view, NULL));
</del><ins>+    BrowserWindow *window = BROWSER_WINDOW(g_object_new(BROWSER_TYPE_WINDOW,
+        &quot;type&quot;, GTK_WINDOW_TOPLEVEL, &quot;view&quot;, view, NULL));
+
+    if (parent) {
+        window-&gt;parentWindow = parent;
+        g_object_add_weak_pointer(G_OBJECT(parent), &amp;window-&gt;parentWindow);
+    }
+
+    return GTK_WIDGET(window);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebKitWebView *browser_window_get_view(BrowserWindow *window)
</span></span></pre>
</div>
</div>

</body>
</html>