[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    D8493: Make Folder View screen aware
From:       Anthony Fieroni <noreply () phabricator ! kde ! org>
Date:       2017-11-03 21:00:04
Message-ID: 20171103210004.25959.1CC61F3564F6DA2E () phabricator ! kde ! org
[Download RAW message or body]

anthonyfieroni added inline comments.

INLINE COMMENTS

> foldermodel.cpp:163-164
> +    if (m_screenMapper) {
> +        disconnect(m_screenMapper, &ScreenMapper::screensChanged, this, \
> &FolderModel::invalidateFilter); +        disconnect(m_screenMapper, \
> &ScreenMapper::screenMappingChanged, this, &FolderModel::invalidateFilter); +       \
> m_screenMapper->removeScreen(m_screen, url());

When QObject dies it's disconnected to all signal/slots. In this case if you want to \
not notify FolderModel you can use

  m_screenMapper->disconnect(this);

> foldermodel.cpp:1673-1674
> +{
> +    if (m_screenMapper == screenMapper)
> +        return;
> +

{} braces even on one line, done it on all places.

> screenmapper.cpp:32-36
> +    if (s_instance)
> +        return s_instance;
> +
> +    s_instance = new ScreenMapper();
> +    return s_instance;

When you use singleton it's better to make variable construction in one line

  static ScreenMapper *s_instance = new ScreenMapper();
  return s_instance;

or

  static ScreenMapper s_instance;
  return &s_instance;

In this way you don't have unwanted check for creation and variable at class scope.

REPOSITORY
  R119 Plasma Desktop

REVISION DETAIL
  https://phabricator.kde.org/D8493

To: amantia, #plasma, ervin, mlaurent, dvratil, hein, aacid, davidedmundson, apol, \
                mwolff
Cc: anthonyfieroni, ngraham, mwolff, davidedmundson, broulik, mart, plasma-devel, \
ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol


[Attachment #3 (unknown)]

<table><tr><td style="">anthonyfieroni added inline comments.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: \
right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: \
#F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: \
inline-block; border: 1px solid rgba(71,87,120,.2);" \
href="https://phabricator.kde.org/D8493" rel="noreferrer">View \
Revision</a></tr></table><br /><div><strong>INLINE COMMENTS</strong><div><div \
style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: \
3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; \
border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; \
background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; \
text-decoration: none;" href="https://phabricator.kde.org/D8493#inline-37919" \
rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: \
bold;">foldermodel.cpp:163-164</span></div> <div style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; white-space: \
pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; \
margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: \
#aa4000">if</span> <span class="p">(</span><span class="n">m_screenMapper</span><span \
class="p">)</span> <span class="p">{</span> </div><div style="padding: 0 8px; margin: \
0 4px; background: rgba(151, 234, 151, .6);">        <span \
class="n">disconnect</span><span class="p">(</span><span \
class="n">m_screenMapper</span><span class="p">,</span> <span style="color: \
#aa2211">&amp;</span><span class="n">ScreenMapper</span><span style="color: \
#aa2211">::</span><span class="n">screensChanged</span><span class="p">,</span> <span \
style="color: #aa4000">this</span><span class="p">,</span> <span style="color: \
#aa2211">&amp;</span><span class="n">FolderModel</span><span style="color: \
#aa2211">::</span><span class="n">invalidateFilter</span><span class="p">);</span> \
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, \
.6);">        <span class="n">disconnect</span><span class="p">(</span><span \
class="n">m_screenMapper</span><span class="p">,</span> <span style="color: \
#aa2211">&amp;</span><span class="n">ScreenMapper</span><span style="color: \
#aa2211">::</span><span class="n">screenMappingChanged</span><span class="p">,</span> \
<span style="color: #aa4000">this</span><span class="p">,</span> <span style="color: \
#aa2211">&amp;</span><span class="n">FolderModel</span><span style="color: \
#aa2211">::</span><span class="n">invalidateFilter</span><span class="p">);</span> \
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, \
.6);">        <span class="n">m_screenMapper</span><span style="color: \
#aa2211">-&gt;</span><span class="n">removeScreen</span><span class="p">(</span><span \
class="n">m_screen</span><span class="p">,</span> <span class="n">url</span><span \
class="p">());</span> </div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">When \
QObject dies it&#039;s disconnected to all signal/slots. In this case if you want to \
not notify FolderModel you can use</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" \
data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; padding: \
12px; margin: 0; background: rgba(71, 87, 120, \
0.08);">m_screenMapper-&gt;disconnect(this);</pre></div></div></div><br /><div \
style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; \
background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 \
1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; \
overflow: hidden;"><a style="float: right; text-decoration: none;" \
href="https://phabricator.kde.org/D8493#inline-37918" rel="noreferrer">View \
Inline</a><span style="color: #4b4d51; font-weight: \
bold;">foldermodel.cpp:1673-1674</span></div> <div style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; white-space: \
pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; \
margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="p">{</span> \
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, \
.6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span \
class="n">m_screenMapper</span> <span style="color: #aa2211">==</span> <span \
class="n">screenMapper</span><span class="p">)</span> </div><div style="padding: 0 \
8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: \
#aa4000">return</span><span class="p">;</span> </div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">{} \
braces even on one line, done it on all places.</p></div></div><br /><div \
style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; \
background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 \
1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; \
overflow: hidden;"><a style="float: right; text-decoration: none;" \
href="https://phabricator.kde.org/D8493#inline-37920" rel="noreferrer">View \
Inline</a><span style="color: #4b4d51; font-weight: \
bold;">screenmapper.cpp:32-36</span></div> <div style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; white-space: \
pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; \
margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: \
#aa4000">if</span> <span class="p">(</span><span class="n">s_instance</span><span \
class="p">)</span> </div><div style="padding: 0 8px; margin: 0 4px; background: \
rgba(151, 234, 151, .6);">        <span style="color: #aa4000">return</span> <span \
class="n">s_instance</span><span class="p">;</span> </div><div style="padding: 0 8px; \
margin: 0 4px; background: rgba(151, 234, 151, .6);"> </div><div style="padding: 0 \
8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span \
class="n">s_instance</span> <span style="color: #aa2211">=</span> <span style="color: \
#aa4000">new</span> <span class="n">ScreenMapper</span><span class="p">();</span> \
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, \
.6);">    <span style="color: #aa4000">return</span> <span \
class="n">s_instance</span><span class="p">;</span> </div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">When \
you use singleton it&#039;s better to make variable construction in one line</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" \
data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; padding: \
12px; margin: 0; background: rgba(71, 87, 120, 0.08);">static ScreenMapper \
*s_instance = new ScreenMapper(); return s_instance;</pre></div>

<p style="padding: 0; margin: 8px;">or</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" \
data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px \
&quot;Menlo&quot;, &quot;Consolas&quot;, &quot;Monaco&quot;, monospace; padding: \
12px; margin: 0; background: rgba(71, 87, 120, 0.08);">static ScreenMapper \
s_instance; return &amp;s_instance;</pre></div>

<p style="padding: 0; margin: 8px;">In this way you don&#039;t have unwanted check \
for creation and variable at class scope.</p></div></div></div></div></div><br \
/><div><strong>REPOSITORY</strong><div><div>R119 Plasma Desktop</div></div></div><br \
/><div><strong>REVISION DETAIL</strong><div><a \
href="https://phabricator.kde.org/D8493" \
rel="noreferrer">https://phabricator.kde.org/D8493</a></div></div><br \
/><div><strong>To: </strong>amantia, Plasma, ervin, mlaurent, dvratil, hein, aacid, \
davidedmundson, apol, mwolff<br /><strong>Cc: </strong>anthonyfieroni, ngraham, \
mwolff, davidedmundson, broulik, mart, plasma-devel, ZrenBot, progwolff, lesliezhai, \
ali-mohamed, jensreuterberg, abetts, sebas, apol<br /></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic