<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/124089/">https://git.reviewboard.kde.org/r/124089/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On June 13th, 2015, 7:28 p.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">startTimer is called many times so doing the connect every time is wrong, and the connect is already done before, so I don't understand this patch.
What problem is it supposed to fix?</p></pre>
 </blockquote>




 <p>On June 15th, 2015, 3:30 p.m. UTC, <b>Jordan He</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I was having an issue with Konsole on Plasma 5 (Kubuntu 15.04). When opening links in Konsole, Konsole would freeze and the link wouldn't open. In Konsole on Plasma 5, type out a link (like "https://www.kde.org"), right click on the link and click "Open Link." Konsole will freeze. This was reproducible for me, and--although I didn't see any other repots on the issue--I decided to investigate it and fix it. Adding this line resolved the issue.
The initial call comes from the konsole repository in the slot "UrlFilter::HotSpot::activate". actiate() then calls "new KRun(QUrl(url), activeWindow);"::</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%"><span style="color: #008000; font-weight: bold">void</span> <span style="color: #008000; font-weight: bold">UrlFilter</span><span style="color: #666666">:</span><span style="color: #AA22FF">:HotSpot</span><span style="color: #666666">:</span><span style="color: #AA22FF">:activate</span><span style="color: #666666">(</span><span style="color: #008000; font-weight: bold">QObject</span><span style="color: #666666">*</span> <span style="color: #008000; font-weight: bold">object</span><span style="color: #666666">)</span>
{
    qDebug() <span style="color: #666666"><<</span> <span style="color: #BA2121">"Opening URL"</span> <span style="color: #666666"><<</span> object;
    QString <span style="color: #008000; font-weight: bold">url</span> <span style="color: #666666">=</span> capturedTexts()<span style="color: #666666">.</span>first();

    const UrlType kind <span style="color: #666666">=</span> urlType();

    const QString<span style="color: #666666">&</span> actionName <span style="color: #666666">=</span> object <span style="color: #666666">?</span> object<span style="color: #666666">-></span>objectName() <span style="color: #666666">:</span> QString();

    if (actionName <span style="color: #666666">==</span> <span style="color: #BA2121">"copy-action"</span>) <span style="border: 1px solid #FF0000">{</span>
        QApplication<span style="color: #666666">::</span>clipboard()<span style="color: #666666">-></span>setText(<span style="color: #008000; font-weight: bold">url</span>);
        return;
    }

    <span style="color: #008000; font-weight: bold">if</span> <span style="color: #666666">(!</span><span style="color: #008000; font-weight: bold">object</span> <span style="color: #666666">||</span> <span style="color: #008000; font-weight: bold">actionName</span> <span style="color: #666666">==</span> <span style="color: #BA2121">"open-action"</span><span style="color: #666666">)</span> {
        if (kind <span style="color: #666666">==</span> StandardUrl) <span style="border: 1px solid #FF0000">{</span>
            <span style="color: #666666">//</span> if the URL path does not include the protocol ( eg<span style="color: #666666">.</span> <span style="color: #BA2121">"www.kde.org"</span> ) then
            <span style="color: #666666">//</span> prepend http<span style="color: #666666">://</span> ( eg<span style="color: #666666">.</span> <span style="color: #BA2121">"www.kde.org"</span> <span style="color: #666666">--></span> <span style="color: #BA2121">"http://www.kde.org"</span> )
            if (<span style="color: #666666">!</span><span style="color: #008000; font-weight: bold">url</span><span style="color: #666666">.</span>contains(<span style="color: #BA2121">"://"</span>)) <span style="border: 1px solid #FF0000">{</span>
                <span style="color: #008000; font-weight: bold">url</span><span style="color: #666666">.</span>prepend(<span style="color: #BA2121">"http://"</span>);
            }
        <span style="border: 1px solid #FF0000">}</span> <span style="color: #008000; font-weight: bold">else</span> <span style="color: #008000; font-weight: bold">if</span> <span style="color: #666666">(</span><span style="color: #008000; font-weight: bold">kind</span> <span style="color: #666666">==</span> <span style="color: #008000; font-weight: bold">Email</span><span style="color: #666666">)</span> {
            <span style="color: #008000; font-weight: bold">url</span><span style="color: #666666">.</span>prepend(<span style="color: #BA2121">"mailto:"</span>);
        }
        <span style="color: #008000; font-weight: bold">QWidget</span> <span style="color: #666666">*</span><span style="color: #008000; font-weight: bold">activeWindow</span> <span style="color: #666666">=</span> <span style="color: #008000; font-weight: bold">QApplication</span><span style="color: #666666">:</span><span style="color: #AA22FF">:activeWindow</span><span style="color: #666666">();</span>
        <span style="color: #008000; font-weight: bold">qDebug</span><span style="color: #666666">()</span> <span style="color: #666666"><<</span> <span style="color: #BA2121">"Launching KRun with "</span> <span style="color: #666666"><<</span> <span style="color: #008000; font-weight: bold">url</span> <span style="color: #666666"><<</span> <span style="color: #BA2121">", "</span> <span style="color: #666666"><<</span> <span style="color: #008000; font-weight: bold">activeWindow</span><span style="color: #666666">;</span>
        <span style="color: #008000; font-weight: bold">new</span> <span style="color: #008000; font-weight: bold">KRun</span><span style="color: #666666">(</span><span style="color: #008000; font-weight: bold">QUrl</span><span style="color: #666666">(</span><span style="color: #008000; font-weight: bold">url</span><span style="color: #666666">),</span> <span style="color: #008000; font-weight: bold">activeWindow</span><span style="color: #666666">);</span>
    <span style="border: 1px solid #FF0000">}</span>
<span style="border: 1px solid #FF0000">}</span>
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Or is the issue really in konsole? Should Konsole create a new instance of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KRun()</code> and then call <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">k->init()</code>?</p></pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">"new KRun" is the correct way to use KRun with a URL.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">(The string concatenation in this code, to make up the URL, will break with special chars and should use KUriFilters, but that's orthogonal).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The KRun constructor calls d->init(), which starts m_timer and connects it to slotTimeout, which the first time, calls KRun::init().</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">So if this doesn't work correctly in konsole, it must mean that konsole isn't going back to the event loop (so that initial timer can't run). Attach gdb to it to confirm/deny this hypothesis. Otherwise add debug statements within KRun to confirm/deny the various calls I describe above.</p></pre>
<br />










<p>- David</p>


<br />
<p>On June 12th, 2015, 8:27 p.m. UTC, Jordan He wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Frameworks.</div>
<div>By Jordan He.</div>


<p style="color: grey;"><i>Updated June 12, 2015, 8:27 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kio
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Connected timeout before timer start.</pre>
  </td>
 </tr>
</table>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>src/widgets/krun.cpp <span style="color: grey">(50660c0a0f103a03d7950aa1f65b60ff796d1825)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/124089/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>







  </div>
 </body>
</html>