<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>