<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/125871/">https://git.reviewboard.kde.org/r/125871/</a>
     </td>
    </tr>
   </table>
   <br />





 <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;">What's the point of client relative geometries?</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Afaics, there'll be two "problematic" scenarios.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">1) >= 2 taskbars on >= 1 screens, the window is minimized from the taskbar
2) >= 2 taskbars on >= 2 screens, the window is NOT minimized from the taskbar (but the deco button, or wmctrl etc.)</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">(1) can be <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">easily</em> resolved by the minimizing taskbar applet updating the (one is actually sufficient here) geometry right before minimizing the client</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The challenge of (2) is to select a taskbar where to minimize to itfp (I guess one does not want to minimize to two regions at once, seems confusing)
The reasonable approach seems to minimize to any icon rect that is on the same screen the window is on (WMs free choice), so we need a list of global (or tagged screen relative) geometries where the WM can look for eg. the closes match on the current ("active") or the windows screen.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The only benefit of a window relative geometry would be (less overhead on) tracking a moving client while the window minimizes - but the only scenario I see here is an autohiding panel and then the only overhead (if one wants to buy into such feature at all) would be an update of the icon rect from the on-screen to the off-screen position of the panel.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Otoh, keeping a reference to a surface around
a) requires a surface itfp
b) sounds <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">extremely</em> bug prone, eg.:
   - I don't see where the surface removal is tracked in the patch, so we could end up with a dangeling pointer.
   - Another case is where the taskbar is moved from eg. a panel to the desktop - we'd have it in the desktop and -outdated- the panel at the same time)
   - Also what if I add a taskbar to the top and the bottom of my desktop? That's not supported, is it?</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">=> Imo we <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">need</em> one icon rect per screen.
It would be cool to have one "per taskbar" (calc closest distance on unrelated minimizations)
But I object the approach to assign the rects to particular surfaces.</p></pre>
 <br />









<p>- Thomas Lübking</p>


<br />
<p>On Oktober 29th, 2015, 4:59 nachm. UTC, Marco Martin 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 kwin and Plasma.</div>
<div>By Marco Martin.</div>


<p style="color: grey;"><i>Updated Okt. 29, 2015, 4:59 nachm.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kwayland
</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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">this exposes the geometry of taskbar entries in plasma-windowmanagement, in order to make the minimize effects possible.
unlike on X11, it takes relative positions and it has one geometry per panel, making possible to have multiple taskbars working.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">however this is still not completely exposed, as internally kwin has still only one geometry, it will need a change in kwin itself (suggestions welcome) probably the rotocol will need also a minimizeTo function that takes the panel as argument.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">another thing completely missing is tests: unfortunately the whole plasma-windowmanagement doesn't have any autotest yet :/</p></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/client/plasmawindowmanagement.h <span style="color: grey">(abd8fa6)</span></li>

 <li>src/client/plasmawindowmanagement.cpp <span style="color: grey">(1f9674c)</span></li>

 <li>src/client/plasmawindowmodel.h <span style="color: grey">(5a6aac4)</span></li>

 <li>src/client/plasmawindowmodel.cpp <span style="color: grey">(355ef53)</span></li>

 <li>src/client/protocols/plasma-window-management.xml <span style="color: grey">(ca6a7cc)</span></li>

 <li>src/server/plasmashell_interface.h <span style="color: grey">(9db3f52)</span></li>

 <li>src/server/plasmashell_interface.cpp <span style="color: grey">(d29d7bc)</span></li>

 <li>src/server/plasmawindowmanagement_interface.h <span style="color: grey">(6ccc22e)</span></li>

 <li>src/server/plasmawindowmanagement_interface.cpp <span style="color: grey">(ad714a5)</span></li>

</ul>

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






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







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