<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
David, thanks a lot for the quick reply...<br>
<br>
<blockquote
cite="mid:CAGeFrHCvu3UtL16GThfor_bE0pwhz1+AQH+LcjCRfrsCay7F3g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div>How will that help your use case of the dock?<br>
</div>
<div>You control the containment in a panel, but you're not
changing Panel.qml itself.<br>
<br>
</div>
Everything should be exposed to the client already as the
"user setting its value" is just the panel config, another
QML file with access to the same panelview properties as
panel does.<br>
<br>
<div>In terms of Panel dimensions we refer to thickness and
length. <br>
</div>
<div>When the panel is at the top or bottom of the screen,
thickness is height and length is width. When the panel is
on the left or right side, it's the opposite.<br>
<br>
</div>
<div>Thickness is self-explanatory<br>
<br>
</div>
<div>Length can be confusing:<br>
</div>
<div> - length should be the implicit size of the contents
of the panel containment want to be. <br>
</div>
- min/max length are the <br>
<br>
</div>
<div class="gmail_quote">panelview will set the panel to
length, but constrained to min/max length and then also
bound to the size of the screen.<br>
</div>
<br>
<div class="gmail_quote">
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
David, the Panel.qml file as I have understood it, is a layer
between the panelview (c++ code) and the client (qml)
implementation.<br>
From my dock I can not find any way to alter the the panel's
thickness (the Layout.preferredHeight which corrresponds in some<br>
cases to thickness (horizontal) is not exposed). I need it because
the user can set the icon size and the zoomfactor for the hovering<br>
animation, these two are used to calculate the thickness which is
needed in order to not have animations that are not shown. Currently<br>
the user must try to set the optimal thickness manually....<br>
<br>
What I tried yesterday and it worked is the following, I added in
Panel.qml the following but I dont know if this is going to be
accepted in<br>
the plasma source code:<br>
<br>
.......<br>
property Item panelClient<br>
.......<br>
onContainmentChanged: {<br>
if (!containment) {<br>
return;<br>
}<br>
containment.parent = containmentParent;<br>
containment.visible = true;<br>
containment.anchors.fill = containmentParent;<br>
containment.locationChanged.connect(adjustPrefix);<br>
adjustPrefix();<br>
<br>
if (containment.children[0]) { //////With this
I access the client's panel implementation<br>
panelClient = containment.children[0]<br>
} <br>
}<br>
........<br>
//// If the client's panel implementation has set a thickness
variable then this binding is activated<br>
//// e.g. property int thickness (for the client code)<br>
Binding {<br>
target: panel<br>
property: "thickness"<br>
when: panelClient &&
panelClient.thickness!==undefined<br>
value: {<br>
if (!panelClient || !panelClient.thickness) {<br>
return;<br>
}<br>
<br>
return panelClient.thickness;<br>
}<br>
}<br>
.........<br>
<br>
<blockquote
cite="mid:CAGeFrHCvu3UtL16GThfor_bE0pwhz1+AQH+LcjCRfrsCay7F3g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
<p><font size="+2"><tt>3. "Real" Panel Transparency</tt></font></p>
<p><font size="+2"><tt>Docks are panels that not only
have a visual transparent background but also they
pass the mouse events to go underneath their
transparent areas. This is also the way Plank is
doing it. It creates a big window that for the
transparent background leaves all the mouse events
go underneath. I believe plasma panels are Qt
windows managed from KWin, I think Qt is offering
this feature by setting some flags for the window.
Do you have any ideas for this?</tt></font></p>
<font size="+2"><tt><br>
</tt></font></div>
</blockquote>
<div>Plasma panels are just normal windows, so a mask could
be set. Would have to be on the C++ side in panelview<br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
I have already the c++ code for this and I am using it!!! :) I have
set a QRect maskArea for panelview which can be set<br>
and it works !!! :). I am sending from my dock the correct maskArea
and everything works ok... but, in order to achieve<br>
the communication between my implementation and the panelview I
added in the Panel.qml the following:<br>
<br>
....<br>
//// If the client's panel implementation has set a maskArea
variable then this binding is activated<br>
//// e.g. property rect mouseArea (for the client code)<br>
<br>
Binding {<br>
target: panel<br>
property: "maskArea"<br>
when: panelClient &&
panelClient.maskArea!==undefined<br>
value: {<br>
if (!panelClient || !panelClient.maskArea) {<br>
return;<br>
}<br>
<br>
return panelClient.maskArea;<br>
}<br>
}<br>
.....<br>
<br>
<br>
what do you think?<br>
<br>
<br>
<br>
</body>
</html>