<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>309553</bug_id>
          
          <creation_ts>2012-11-04 20:31:43 +0000</creation_ts>
          <short_desc>[Minimap] Problem with alternative colour scheme and widget misalignment</short_desc>
          <delta_ts>2015-08-19 07:28:55 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>kate</product>
          <component>application</component>
          <version>Git</version>
          <rep_platform>unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Emmanuel Lepage Vallée">emmanuel.lepage</reporter>
          <assigned_to name="KWrite Developers">kwrite-bugs-null</assigned_to>
          <cc>kare.sars</cc>
          
          <cf_commitlink>http://commits.kde.org/ktexteditor/9c0df13721838c2e395f94c413529d170ef96163</cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>20</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1312481</commentid>
    <comment_count>0</comment_count>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-04 20:31:43 +0000</bug_when>
    <thetext>Hi,
Take a look at this screenshot:
http://ompldr.org/vZzU4aQ/blender148.png

#1:
There is 2 Kate instances, one running with dark colours and the other with the default scheme (using a second user account). The one with the default colours look just fine. However, the one using darker one use the same background??? It was not the same yesterday.

I think the palette().base().color() should be used, so the same colour as the katepart background and a line to mark the area used by the scrollbar and the area used by the katepart.

#2:
In the darker Kate, I disabled scrollbar arrows to highlight the second issue. As you can see on the top of the scrollar, there is a 5 pixels misalignment in the top and bottom due to the Oxygen theme inner border. To fix this, calling the style on the painter with some options will draw the correct border. Just use the painter or CSS to make sure it does not paint the left border in LTR mode and right in RTL mode.

#Mockup:
Here is a &quot;fixed&quot; version made in KolourPaint

http://ompldr.org/vZzU5NA

I did:
* Remove the 5 pixel misalignment
* I kept the arrow disabled, but it look just as good with them enabled, in fact, even better
* Extended the inner border around palette()-&gt;base() area to also cover the scrollbar
* Removed the inner border on the left and replaced it with a line with 10% opacity. It have to be white if the scheme is dark and black when it is bright. The code to detect that use in almost every apps, you can find one implementation here https://projects.kde.org/projects/playground/network/sflphone-kde/repository/revisions/october2012_ui/entry/src/klib/tip.cpp#L97
* I avoided to make the 10% line full size, as it look to merge with the blue border and it is not as nice as having a few pixel truncated at the top and bottom. 
* Made the &quot;visible area rectangle&quot; rounded instead of sharp. Not necessary, but seem to make it look better. It also make it &quot;alien&quot; to the rest of the code and other rectangles. This is good because it make it easier to the brain to detect it is not part of the background. Just as buttons are a little 3D above the background in dialogs. It make it easy to know they are a separated entity. 

Also, just as a comment, I think it would be nice if the map could be resized to 250px, even if it take a little more CPU. With high resolution display (like my MacBook Pro Retina), it is entirely impossible to see where functions start and end. It is supposed to be the point of this feature in term of usability. This is just a comment, otherwise, I love this new feature, it is awesome.

Reproducible: Always

Steps to Reproduce:
1. Use a darker scheme with get from 4 november.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312710</commentid>
    <comment_count>1</comment_count>
    <who name="Kåre Särs">kare.sars</who>
    <bug_when>2012-11-05 13:53:05 +0000</bug_when>
    <thetext>Thanks for the report.

This feature is just a week old and we get bug reports. It looks like it is a 
wanted feature :)

#1: (Colors) Should be fixed in trunk. The shield colors are now taken from the 
palette and the lightness is adjusted according to the foreground/background 
lightness.

#2: (Alignment) The text component has a border that the custom scrollbar does 
not have in MiniMap mode. This must be investigated/fixed eventually


#Mockup:
-Rounded corners is a nice idea
-Extending the border of the text area around the scrollbar would be nice, but 
is not worth the effort at the moment. It would mean that the scrollbar and the 
text area would have to synchronize the the painting... not a trivial task... 
Patches are welcome ;)

#Scaling up will stretch the pixmap and that might not look so good, but the 
option is there already. I just need to change the limit. There is still a 
hard limit of ~100 characters per line for performance reasons

/Kåre</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312840</commentid>
    <comment_count>2</comment_count>
      <attachid>75036</attachid>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-05 22:08:02 +0000</bug_when>
    <thetext>Created attachment 75036
Synced progressbar prototype

Synced progressbar prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312842</commentid>
    <comment_count>3</comment_count>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-05 22:09:44 +0000</bug_when>
    <thetext>&gt;Extending the border of the text area around the scrollbar would be nice, but is not worth the effort at 
&gt;the moment. It would mean that the scrollbar and the text area would have to synchronize the the 
&gt; painting... not a trivial task... Patches are welcome ;)

Why not! The code is attached as a prototype to this message. It is actually quite simple to sync them, a little harder to display the border correctly.

The sync trick is to add an event filter to the viewPort() widget looking for focus and hover in and out. This will give you the infos you need to modify the paintEvent to draw the correct state.

For the border painting part, I honestly had no idea, so I took code from qframe.cpp and adapted it to run on a QScrollBar. It miss the animation part, it is not very fluid compared to a real border fade animation. I have no idea how to fix that one. What do you think?

I did not implement the bacground color and the hide border on the left because it does not apply to your mini map implementation. I also committed to draw the scrollbar content to keep the code simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312925</commentid>
    <comment_count>4</comment_count>
      <attachid>75048</attachid>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-06 05:28:02 +0000</bug_when>
    <thetext>Created attachment 75048
Antialiased rounded rects

This simple patch enable antialiasing for the rounder rect and add a 1px margin on the left and right of the rect. The margin make it feel like the rect is part of the map instead of cutting it in 2. It also make the rounded part separated from the map border, preventing the perception both side are not symmetric. 

I would also like to point that you have 2 rects drawing on top of each other. I am not so sure what&apos;s the point of this. It does create quite a few glitch http://ompldr.org/vZzV0eQ . If there is a purpose, please tell me. The Y mismatch is present on all files, but greater in longer files. You use KMag to spot them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313683</commentid>
    <comment_count>5</comment_count>
    <who name="Kåre Särs">kare.sars</who>
    <bug_when>2012-11-08 22:18:54 +0000</bug_when>
    <thetext>Thanks,

I have added tried to fix the alignment issue. (still a bit off at the bottom)

2 rects: if you have a really large file the visible area becomes much smaler than the slider -&gt; draw the slider and the visible area separately.

Y mismatch: It is not always easy to get it right ;) I have tried now with master and I can&apos;t notice it.

The bigest problem with the synced focus is that I would need to also modify the text view and that is not something I&apos;m too eager on doing right now ;)

Regards,
  Kåre</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313727</commentid>
    <comment_count>6</comment_count>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-09 02:49:46 +0000</bug_when>
    <thetext>Hi,

&gt;The bigest problem with the synced focus is that I would need to also modify the text view and that is not something I&apos;m too eager on doing right now ;)

-Last time I talk about that, but as I shown in the prototype attached to this bug, it does not require any modifications as focus tracking is a core QtGui feature. The only modification is hiding the right border, there is few way to do this without too much code. But there&apos;s still the bug in my prototype where the fadein animation is not disaplay. As long as that&apos;s not solved, it&apos;s a no go.

-Alignment (katepart vs scrollbar) seem to be fixed. There is an extra pixel on the bottom, but it is mostly invisible. 

-Y align for the 2 rect is still a little bit off (only visible when using KMag to track it) but only my 1 px. What about disabling the second rect when the whole view fit in a single page?

-What about supporting color option for the background color and rect color (keep your as default)? If I was willing to implement it, could I just go ahead and commit it? I don&apos;t want to step on your feet while you are working on this.

-Thanks for merging the anti-aliasing part of the patch I posted, but what about the other change, is there a rational why it is bad or something? Oxygen have a 2px margin for scrollbar for the same rationals as I talked earlier.

Still, thanks for working on this. Having these &quot;modern&quot; features in Kate is really, really cool! I complain a lot on details, I am aware of it, I just want this to be as awesome as it can get. Enough to be willing to put my code where my mouth is (and I don&apos;t do that very often).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313792</commentid>
    <comment_count>7</comment_count>
    <who name="Kåre Särs">kare.sars</who>
    <bug_when>2012-11-09 10:16:09 +0000</bug_when>
    <thetext>&gt; --- Comment #6 from Emmanuel Lepage Vallée &lt;elv1313@gmail.com&gt; ---
&gt; Hi,
&gt; 
&gt; &gt;The bigest problem with the synced focus is that I would need to also
&gt; &gt;modify the text view and that is not something I&apos;m too eager on doing
&gt; &gt;right now ;)
&gt; -Last time I talk about that, but as I shown in the prototype attached to
&gt; this bug, it does not require any modifications as focus tracking is a core
&gt; QtGui feature. The only modification is hiding the right border, there is
&gt; few way to do this without too much code. But there&apos;s still the bug in my
&gt; prototype where the fadein animation is not disaplay. As long as that&apos;s not
&gt; solved, it&apos;s a no go.

The thing I&apos;m not too eager about is the hiding of the right part of the focus 
for the KateView.


&gt; 
&gt; -Alignment (katepart vs scrollbar) seem to be fixed. There is an extra pixel
&gt; on the bottom, but it is mostly invisible.
&gt; 
&gt; -Y align for the 2 rect is still a little bit off (only visible when using
&gt; KMag to track it) but only my 1 px. What about disabling the second rect
&gt; when the whole view fit in a single page?
The ting is how do I detect this reliably...,  Hmm maybe if the slider is more 
than 2 pixels bigger.. I&apos;ll check it out.

&gt; 
&gt; -What about supporting color option for the background color and rect color
&gt; (keep your as default)? If I was willing to implement it, could I just go
&gt; ahead and commit it? I don&apos;t want to step on your feet while you are
&gt; working on this.
I would like to avoid adding that option. Kate already contains quite a bunch 
of different colors to configure. The colors are now taken from the theme and 
light adjusted for the used foreground/background colors. If it seems broken 
for many we might re-think it.

&gt; 
&gt; -Thanks for merging the anti-aliasing part of the patch I posted, but what
&gt; about the other change, is there a rational why it is bad or something?
&gt; Oxygen have a 2px margin for scrollbar for the same rationals as I talked
&gt; earlier.
I re-read your bug report after I had committed the anti-aliasing. I will 
apply the margin when I get to it :) I think 5 pixels rounding might be a bit 
too much... 

&gt; 
&gt; Still, thanks for working on this. Having these &quot;modern&quot; features in Kate is
&gt; really, really cool! I complain a lot on details, I am aware of it, I just
&gt; want this to be as awesome as it can get. Enough to be willing to put my
&gt; code where my mouth is (and I don&apos;t do that very often).
I think it is great that so many want this feature and are willing to give 
feedback and even patches :)


/Kåre</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314372</commentid>
    <comment_count>8</comment_count>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2012-11-10 22:42:28 +0000</bug_when>
    <thetext>The problems I have with the colours used for background and foreground is inconsistency. Example:

http://ompldr.org/vZzgzcA

In this example, I have to point a few things:
*The slider background is black for C++ and red for Lua. Why? Because the color order for those 2 languages is not the same. So alert is first in Lua and last in C++. So, in the end, the foreground is totally arbitrary. But I love that red! It may be an accident, but I like it. Too bad only lua have &quot;alert&quot; as first colour...

*The &quot;unseen area&quot; background is also different. It create a few problem of it&apos;s own:

------For C++, it ain&apos;t so bad. I guess you based your math on that one. For Lua however, it is about as bright as the &quot;content&quot; so the brightness differential index is so low that the brain have to focus to see the lines.  At least mine do.

------In both care the brightness index of the scrollbar is much higher then the code area. This is problematic for many reasons. (it is the opposite in brighter palette, and in that case, it ain&apos;t so bad)

------------First that is high contrast is usually bad for the eye because switching focus between bright and dark area on a screen too often cause the pigment that allow us to see in the dark to be &quot;burned&quot; to turn out vision into day light one. But when focusing back on the dark area, our eye rush to create those things again. Doing that too often will hurt the eye night vision permanently. http://en.wikipedia.org/wiki/Night_vision#Biological_night_vision

------------Second, more related to usability, is the reason why professional multimedia application use dark colours palette. It allow to eye to quickly focus on content, like video editing focus on the video itself. On pure bright application, eye is overwhelmed by light, so it focus on the application rather than part of it. By creating out of control brightness differential between the text canvas and scrollbar, you accidentally create such a focus hub. 

While the problem is not present with Oxygen default color palette and while looking at C++, the current color model does not scale beyond those default settings. My opinion would be to use the palette().base().color() or Kate current text background colour as background and using use a brightness index averaging the document brightness index on the &quot;mini-lines&quot; to make sure the scrollbar is not distracting. And for the slider background, just adding a config option, the current one is just as random as it can get. It also void the palette in both dark and bright mode (in birght/light mode, bitghter is &quot;on top&quot; while darker is &quot;below&quot;, see the normal scrollbar for an example of that.). But then, it may be a good idea to have a little bigger pool of opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534156</commentid>
    <comment_count>9</comment_count>
      <attachid>93802</attachid>
    <who name="Emmanuel Lepage Vallée">emmanuel.lepage</who>
    <bug_when>2015-07-30 13:43:08 +0000</bug_when>
    <thetext>Created attachment 93802
A new patch with designer inputs

New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534431</commentid>
    <comment_count>10</comment_count>
    <who name="Kåre Särs">kare.sars</who>
    <bug_when>2015-07-31 21:32:29 +0000</bug_when>
    <thetext>Looks good, I&apos;m not 100% sure about the transparency level of the slider handle and the fading of &quot;invisible&quot; area tho ;)

You can commit from my point of view. We can tweak the levels later if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537918</commentid>
    <comment_count>11</comment_count>
    <who name="Kåre Särs">kare.sars</who>
    <bug_when>2015-08-19 07:28:55 +0000</bug_when>
    <thetext>Git commit 9c0df13721838c2e395f94c413529d170ef96163 by Kåre Särs, on behalf of Emmanuel Lepage Vallee.
Committed on 19/08/2015 at 07:26.
Pushed by sars into branch &apos;master&apos;.

minimap: Attempt to improve the look and feel

This patch attempt to make the minimap look better.

* The design has been reviewed during Akademy
* It now feel &quot;native&quot; in the canvas for both Breeze and Fusion
  styles. Oxygen has some hardcoded extra borders, this is a
  known limitation of this patch.
* Improve support for darker themes. The previous implementation
  failed to properly display the visible area
* Partially degrade the visible section view when the handle is
  at its minimum height. This could be improved later on.

M  +54   -34   src/view/kateviewhelpers.cpp

http://commits.kde.org/ktexteditor/9c0df13721838c2e395f94c413529d170ef96163</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75036</attachid>
            <date>2012-11-05 22:08:02 +0000</date>
            <delta_ts>2012-11-05 22:08:02 +0000</delta_ts>
            <desc>Synced progressbar prototype</desc>
            <filename>testscrollbar4.tar.bz2</filename>
            <type>application/octet-stream</type>
            <size>12604</size>
            <attacher name="Emmanuel Lepage Vallée">emmanuel.lepage</attacher>
            
              <data encoding="base64">QlpoOTFBWSZTWf7AMVEAOgp/////////////////////////////////////////////4C8+9fM3
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
KEh/YBiogA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75048</attachid>
            <date>2012-11-06 05:28:02 +0000</date>
            <delta_ts>2012-11-06 05:28:02 +0000</delta_ts>
            <desc>Antialiased rounded rects</desc>
            <filename>katemaprect.patch</filename>
            <type>text/plain</type>
            <size>2156</size>
            <attacher name="Emmanuel Lepage Vallée">emmanuel.lepage</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3BhcnQvdmlldy9rYXRldmlld2hlbHBlcnMuY3BwIGIvcGFydC92aWV3L2th
dGV2aWV3aGVscGVycy5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4
ZGFhZmIzLi44OWFiNzExCi0tLSBhL3BhcnQvdmlldy9rYXRldmlld2hlbHBlcnMuY3BwCisrKyBi
L3BhcnQvdmlldy9rYXRldmlld2hlbHBlcnMuY3BwCkBAIC00MTksOSArNDE5LDEyIEBAIHZvaWQg
S2F0ZVNjcm9sbEJhcjo6bWluaU1hcFBhaW50RXZlbnQoUVBhaW50RXZlbnQgKikKICAgb3B0LnNp
bmdsZVN0ZXAgPSBzaW5nbGVTdGVwKCk7CiAgIG9wdC5wYWdlU3RlcCA9IHBhZ2VTdGVwKCk7CiAK
KyAgaW50IHZpc2libGVSZWN0bWFyZ2luID0gMTsKKwogICBRUmVjdCBncm9vdmVSZWN0ID0gc3R5
bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsICZvcHQsIFFTdHlsZTo6
U0NfU2Nyb2xsQmFyR3Jvb3ZlLCB0aGlzKTsKICAgUVJlY3Qgc2xpZGVyUmVjdCA9IHN0eWxlKCkt
PnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xsQmFyLCAmb3B0LCBRU3R5bGU6OlNDX1Nj
cm9sbEJhclNsaWRlciwgdGhpcyk7Ci0gIHNsaWRlclJlY3Quc2V0V2lkdGgoc2xpZGVyUmVjdC53
aWR0aCgpLTEpOworICBzbGlkZXJSZWN0LnNldFdpZHRoKHNsaWRlclJlY3Qud2lkdGgoKS0xLTIq
dmlzaWJsZVJlY3RtYXJnaW4pOworICBzbGlkZXJSZWN0Lm1vdmVMZWZ0KHZpc2libGVSZWN0bWFy
Z2luKTsKIAogICBzdHlsZSgpLT5kcmF3Q29udHJvbChRU3R5bGU6OkNFX1Njcm9sbEJhckFkZExp
bmUsICZvcHQsICZwYWludGVyLCB0aGlzKTsKICAgc3R5bGUoKS0+ZHJhd0NvbnRyb2woUVN0eWxl
OjpDRV9TY3JvbGxCYXJTdWJMaW5lLCAmb3B0LCAmcGFpbnRlciwgdGhpcyk7CkBAIC00NDAsNyAr
NDQzLDcgQEAgdm9pZCBLYXRlU2Nyb2xsQmFyOjptaW5pTWFwUGFpbnRFdmVudChRUGFpbnRFdmVu
dCAqKQogICBpbnQgbWF4ID0gcU1heChtYXhpbXVtKCksIDEpOwogICBpbnQgdmlzaWJsZVN0YXJ0
ID0gdmFsdWUoKSpkb2NIZWlnaHQvKG1heCtwYWdlU3RlcCgpKSArIGRvY1JlY3QudG9wKCk7CiAg
IGludCB2aXNpYmxlRW5kID0gKHZhbHVlKCkrcGFnZVN0ZXAoKSkqZG9jSGVpZ2h0LyhtYXgrcGFn
ZVN0ZXAoKSkgKyBkb2NSZWN0LnRvcCgpOwotICBRUmVjdCB2aXNpYmxlUmVjdChRUG9pbnQoZG9j
UmVjdC5sZWZ0KCksIHZpc2libGVTdGFydCksIFFQb2ludChkb2NSZWN0LnJpZ2h0KCksIHZpc2li
bGVFbmQpKTsKKyAgUVJlY3QgdmlzaWJsZVJlY3QoUVBvaW50KGRvY1JlY3QubGVmdCgpK3Zpc2li
bGVSZWN0bWFyZ2luLCB2aXNpYmxlU3RhcnQpLCBRUG9pbnQoZG9jUmVjdC5yaWdodCgpLXZpc2li
bGVSZWN0bWFyZ2luLCB2aXNpYmxlRW5kKSk7CiAKICAgLy8gY2FsY3VsYXRlIGNvbG9ycwogICBR
Q29sb3IgYmFja2dyb3VuZENvbG9yID0gbV9kb2MtPmRlZmF1bHRTdHlsZShLVGV4dEVkaXRvcjo6
SGlnaGxpZ2h0SW50ZXJmYWNlOjpkc05vcm1hbCktPmJhY2tncm91bmQoKS5jb2xvcigpOwpAQCAt
NDcwLDE1ICs0NzMsMTcgQEAgdm9pZCBLYXRlU2Nyb2xsQmFyOjptaW5pTWFwUGFpbnRFdmVudChR
UGFpbnRFdmVudCAqKQogICBwYWludGVyLnNldEJydXNoKGdyYWRpZW50KTsKICAgcGFpbnRlci5k
cmF3UmVjdChkb2NSZWN0KTsKIAorICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFu
dGlhbGlhc2luZyk7CisKICAgLy8gbGlnaHQgInNoaWVsZCIgbm9uLXZpc2libGUgcGFydHMKICAg
aWYgKGRvY0hlaWdodCA+PSBncm9vdmVSZWN0LmhlaWdodCgpKSB7CiAgICAgcGFpbnRlci5zZXRC
cnVzaChsaWdodFNoaWVsZENvbG9yKTsKLSAgICBwYWludGVyLmRyYXdSb3VuZGVkUmVjdChzbGlk
ZXJSZWN0LCA0LCA0KTsKKyAgICBwYWludGVyLmRyYXdSb3VuZGVkUmVjdChzbGlkZXJSZWN0LCA1
LCA1KTsKICAgfQogCiAgIC8vIGRvY3VtZW50IGJhY2tncm91bmQKICAgcGFpbnRlci5zZXRCcnVz
aChiYWNrZ3JvdW5kQ29sb3IpOwotICBwYWludGVyLmRyYXdSb3VuZGVkUmVjdCh2aXNpYmxlUmVj
dCwgNCwgNCk7CisgIHBhaW50ZXIuZHJhd1JvdW5kZWRSZWN0KHZpc2libGVSZWN0LCA1LCA1KTsK
IAogCiAgIC8vIFNtb290aCB0cmFuc2Zvcm0gb25seSB3aGVuIHNxdWVlemluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93802</attachid>
            <date>2015-07-30 13:43:08 +0000</date>
            <delta_ts>2015-07-30 13:43:08 +0000</delta_ts>
            <desc>A new patch with designer inputs</desc>
            <filename>patch.pathh</filename>
            <type>text/plain</type>
            <size>5779</size>
            <attacher name="Emmanuel Lepage Vallée">emmanuel.lepage</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3NyYy92aWV3L2thdGV2aWV3aGVscGVycy5jcHAgYi9zcmMvdmlldy9rYXRl
dmlld2hlbHBlcnMuY3BwCmluZGV4IDRjNTYyMzQuLjg0ZGM0OWQgMTAwNjQ0Ci0tLSBhL3NyYy92
aWV3L2thdGV2aWV3aGVscGVycy5jcHAKKysrIGIvc3JjL3ZpZXcva2F0ZXZpZXdoZWxwZXJzLmNw
cApAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgS2F0ZVNjcm9sbEJhcjo6bWluaU1hcFBhaW50RXZl
bnQoUVBhaW50RXZlbnQgKmUpCiAKICAgICAvLyBjYWxjdWxhdGUgdGhlIHZpc2libGUgYXJlYQog
ICAgIGludCBtYXggPSBxTWF4KG1heGltdW0oKSArIDEsIDEpOwotICAgIGludCB2aXNpYmxlU3Rh
cnQgPSB2YWx1ZSgpICogZG9jSGVpZ2h0IC8gKG1heCArIHBhZ2VTdGVwKCkpICsgZG9jUmVjdC50
b3AoKTsKKyAgICBpbnQgdmlzaWJsZVN0YXJ0ID0gdmFsdWUoKSAqIGRvY0hlaWdodCAvIChtYXgg
KyBwYWdlU3RlcCgpKSArIGRvY1JlY3QudG9wKCkgKyAwLjU7CiAgICAgaW50IHZpc2libGVFbmQg
PSAodmFsdWUoKSArIHBhZ2VTdGVwKCkpICogZG9jSGVpZ2h0IC8gKG1heCArIHBhZ2VTdGVwKCkp
ICsgZG9jUmVjdC50b3AoKTsKICAgICBRUmVjdCB2aXNpYmxlUmVjdCA9IGRvY1JlY3Q7CiAgICAg
dmlzaWJsZVJlY3QubW92ZVRvcCh2aXNpYmxlU3RhcnQpOwpAQCAtNTExLDYgKzUxMSw3IEBAIHZv
aWQgS2F0ZVNjcm9sbEJhcjo6bWluaU1hcFBhaW50RXZlbnQoUVBhaW50RXZlbnQgKmUpCiAgICAg
Ly8gY2FsY3VsYXRlIGNvbG9ycwogICAgIGNvbnN0IFFDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBt
X3ZpZXctPmRlZmF1bHRTdHlsZUF0dHJpYnV0ZShLVGV4dEVkaXRvcjo6ZHNOb3JtYWwpLT5iYWNr
Z3JvdW5kKCkuY29sb3IoKTsKICAgICBjb25zdCBRQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gbV92
aWV3LT5kZWZhdWx0U3R5bGVBdHRyaWJ1dGUoS1RleHRFZGl0b3I6OmRzTm9ybWFsKS0+Zm9yZWdy
b3VuZCgpLmNvbG9yKCk7CisgICAgY29uc3QgUUNvbG9yIGhpZ2hsaWdodENvbG9yICA9IHBhbGV0
dGUoKS5oaWdobGlnaHQoKS5jb2xvcigpOwogCiAgICAgaW50IGJhY2tncm91bmRMaWdodG5lc3Mg
PSBiYWNrZ3JvdW5kQ29sb3IubGlnaHRuZXNzKCk7CiAgICAgaW50IGZvcmVncm91bmRMaWdodG5l
c3MgPSBmb3JlZ3JvdW5kQ29sb3IubGlnaHRuZXNzKCk7CkBAIC01MzUsNDMgKzUzNiwxNiBAQCB2
b2lkIEthdGVTY3JvbGxCYXI6Om1pbmlNYXBQYWludEV2ZW50KFFQYWludEV2ZW50ICplKQogICAg
IG91dGxpbmVDb2xvci5zZXRIc2woaHVlLCBzYXQsIGJhY2tncm91bmRMaWdodG5lc3MgKyBsaWdo
bmVzc0RpZmYgKiAwLjUpOwogCiAgICAgLy8gZHJhdyB0aGUgZ3JvdmUgYmFja2dyb3VuZCBpbiBj
YXNlIHRoZSBkb2N1bWVudCBpcyBzbWFsbAotICAgIHBhaW50ZXIuc2V0UGVuKFFQZW4oUUNvbG9y
KCJ0cmFuc3BhcmVudCIpLCAwKSk7Ci0gICAgcGFpbnRlci5zZXRCcnVzaChwYWxldHRlKCkuYnJ1
c2goUVBhbGV0dGU6OkRhcmspKTsKKyAgICBwYWludGVyLnNldFBlbihRdDo6Tm9QZW4pOworICAg
IHBhaW50ZXIuc2V0QnJ1c2goYmFja2dyb3VuZENvbG9yKTsKICAgICBwYWludGVyLmRyYXdSZWN0
KGdyb292ZVJlY3QpOwogCi0gICAgLy8gZGFyayAic2hpZWxkIiBvZiBub24tc2xpZGVyIHBhcnRz
Ci0gICAgcGFpbnRlci5zZXRCcnVzaChncmFkaWVudCk7Ci0gICAgcGFpbnRlci5kcmF3UmVjdChk
b2NSZWN0KTsKLQotICAgIC8vIGxpZ2h0ICJzaGllbGQiIG5vbi12aXNpYmxlIHBhcnRzCisgICAg
Ly8gYWRqdXN0IHRoZSByZWN0YW5nbGVzCiAgICAgaWYgKChkb2NIZWlnaHQgKyAyICogZG9jWE1h
cmdpbiA+PSBncm9vdmVSZWN0LmhlaWdodCgpKSAmJiAoc2xpZGVyUmVjdC5oZWlnaHQoKSA+IHZp
c2libGVSZWN0LmhlaWdodCgpICsgMikpIHsKLSAgICAgICAgLy8gc2xpZGVyCi0gICAgICAgIHBh
aW50ZXIuc2V0UGVuKFFQZW4oUUNvbG9yKCJ0cmFuc3BhcmVudCIpLCAwKSk7Ci0gICAgICAgIHBh
aW50ZXIuc2V0QnJ1c2gobGlnaHRTaGllbGRDb2xvcik7Ci0gICAgICAgIHNsaWRlclJlY3QuYWRq
dXN0KDEsIDAsIC0xLCAwKTsKLSAgICAgICAgcGFpbnRlci5kcmF3UmVjdChzbGlkZXJSZWN0KTsK
LQotICAgICAgICAvLyB2aXNpYmxlIGFyZWEKICAgICAgICAgdmlzaWJsZVJlY3QuYWRqdXN0KDIs
IDAsIC0zLCAwKTsKLSAgICAgICAgcGFpbnRlci5zZXRQZW4oUVBlbihiYWNrZ3JvdW5kQ29sb3Is
IDEpKTsKLSAgICAgICAgcGFpbnRlci5zZXRCcnVzaChiYWNrZ3JvdW5kQ29sb3IpOwotICAgICAg
ICBwYWludGVyLmRyYXdSZWN0KHZpc2libGVSZWN0KTsKLQotICAgICAgICAvLyBzbGlkZXIgb3V0
bGluZQotICAgICAgICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2lu
Zyk7Ci0gICAgICAgIHBhaW50ZXIuc2V0UGVuKFFQZW4ob3V0bGluZUNvbG9yLCAyKSk7Ci0gICAg
ICAgIHBhaW50ZXIuc2V0QnJ1c2goUUNvbG9yKCJ0cmFuc3BhcmVudCIpKTsKLSAgICAgICAgc2xp
ZGVyUmVjdC5hZGp1c3QoLTEsIDAsIDEsIDApOwotICAgICAgICBwYWludGVyLmRyYXdSb3VuZGVk
UmVjdChzbGlkZXJSZWN0LCA0LCA0KTsKLSAgICAgICAgcGFpbnRlci5zZXRSZW5kZXJIaW50KFFQ
YWludGVyOjpBbnRpYWxpYXNpbmcsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyB2
aXNpYmxlIGFyZWEgd2l0aCBvdXRsaW5lCi0gICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludChR
UGFpbnRlcjo6QW50aWFsaWFzaW5nKTsKLSAgICAgICAgcGFpbnRlci5zZXRQZW4oUVBlbihvdXRs
aW5lQ29sb3IsIDIpKTsKLSAgICAgICAgcGFpbnRlci5zZXRCcnVzaChiYWNrZ3JvdW5kQ29sb3Ip
OwogICAgICAgICB2aXNpYmxlUmVjdC5hZGp1c3QoMSwgMCwgLTEsIDIpOwotICAgICAgICBwYWlu
dGVyLmRyYXdSb3VuZGVkUmVjdCh2aXNpYmxlUmVjdCwgNCwgNCk7Ci0gICAgICAgIHBhaW50ZXIu
c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5nLCBmYWxzZSk7CisgICAgICAgIHNs
aWRlclJlY3QgPSB2aXNpYmxlUmVjdDsKICAgICB9CiAKICAgICAvLyBTbW9vdGggdHJhbnNmb3Jt
IG9ubHkgd2hlbiBzcXVlZXppbmcKQEAgLTU4NCw3ICs1NTgsNyBAQCB2b2lkIEthdGVTY3JvbGxC
YXI6Om1pbmlNYXBQYWludEV2ZW50KFFQYWludEV2ZW50ICplKQogICAgIFFSZWN0IGRvY1BpeG1h
cE1hcmdpblJlY3QoUVBvaW50KDAsIGRvY1JlY3QudG9wKCkpLCBRU2l6ZShzX3BpeGVsTWFyZ2lu
LCBkb2NSZWN0LmhlaWdodCgpKSk7CiAgICAgcGFpbnRlci5kcmF3UGl4bWFwKGRvY1BpeG1hcE1h
cmdpblJlY3QsIG1fcGl4bWFwLCBwaXhtYXBNYXJnaW5SZWN0KTsKIAotICAgIC8vIGNhbGN1bGF0
ZSB0aGUgc3RyZXRjaCBhbmQgZHJhdyB0aGUgc3RyZXRjaGVkIGxpbmVzCisgICAgLy8gY2FsY3Vs
YXRlIHRoZSBzdHJldGNoIGFuZCBkcmF3IHRoZSBzdHJldGNoZWQgbGluZXMgKHNjcm9sbGJhciBt
YXJrcykKICAgICBRUmVjdCBwaXhtYXBSZWN0KFFQb2ludChzX3BpeGVsTWFyZ2luLCAwKSwgUVNp
emUobV9waXhtYXAud2lkdGgoKSAtIHNfcGl4ZWxNYXJnaW4sIG1fcGl4bWFwLmhlaWdodCgpKSk7
CiAgICAgUVJlY3QgZG9jUGl4bWFwUmVjdChRUG9pbnQoc19waXhlbE1hcmdpbiwgZG9jUmVjdC50
b3AoKSksIFFTaXplKGRvY1JlY3Qud2lkdGgoKSAtIHNfcGl4ZWxNYXJnaW4sIGRvY1JlY3QuaGVp
Z2h0KCkpKTsKICAgICBwYWludGVyLmRyYXdQaXhtYXAoZG9jUGl4bWFwUmVjdCwgbV9waXhtYXAs
IHBpeG1hcFJlY3QpOwpAQCAtNjEyLDkgKzU4Niw1NSBAQCB2b2lkIEthdGVTY3JvbGxCYXI6Om1p
bmlNYXBQYWludEV2ZW50KFFQYWludEV2ZW50ICplKQogICAgICAgICBpdC5uZXh0KCk7CiAgICAg
ICAgIHBlbi5zZXRDb2xvcihpdC52YWx1ZSgpKTsKICAgICAgICAgcGFpbnRlci5zZXRQZW4ocGVu
KTsKLSAgICAgICAgaW50IHkgPSAoaXQua2V5KCkgLSBncm9vdmVSZWN0LnRvcCgpKSAqIGRvY0hl
aWdodCAvIGdyb292ZVJlY3QuaGVpZ2h0KCkgKyBkb2NSZWN0LnRvcCgpOzsKKyAgICAgICAgaW50
IHkgPSAoaXQua2V5KCkgLSBncm9vdmVSZWN0LnRvcCgpKSAqIGRvY0hlaWdodCAvIGdyb292ZVJl
Y3QuaGVpZ2h0KCkgKyBkb2NSZWN0LnRvcCgpOwogICAgICAgICBwYWludGVyLmRyYXdMaW5lKDYs
IHksIHdpZHRoKCkgLSA2LCB5KTsKICAgICB9CisKKyAgICAvLyBkZWxpbWl0IHRoZSBlbmQgb2Yg
dGhlIGRvY3VtZW50CisgICAgY29uc3QgaW50IHkgPSBkb2NQaXhtYXBSZWN0LmhlaWdodCgpICsg
Z3Jvb3ZlUmVjdC55KCk7CisgICAgaWYgKHkrMiA8IGdyb292ZVJlY3QueSgpICsgZ3Jvb3ZlUmVj
dC5oZWlnaHQoKSkgeworICAgICAgICBRQ29sb3IgZmcoZm9yZWdyb3VuZENvbG9yKTsKKyAgICAg
ICAgZmcuc2V0QWxwaGEoMzApOworICAgICAgICBwYWludGVyLnNldEJydXNoKFF0OjpOb0JydXNo
KTsKKyAgICAgICAgcGFpbnRlci5zZXRQZW4oUVBlbihmZywgMSkpOworICAgICAgICBwYWludGVy
LmRyYXdMaW5lKGdyb292ZVJlY3QueCgpKzEseSs0LHdpZHRoKCktMSx5KzQpOworICAgIH0KKwor
ICAgIC8vIGZhZGUgdGhlIGludmlzaWJsZSBzZWN0aW9ucworICAgIGNvbnN0IFFSZWN0IHRvcCgK
KyAgICAgICAgZ3Jvb3ZlUmVjdC54KCksCisgICAgICAgIGdyb292ZVJlY3QueSgpLAorICAgICAg
ICBncm9vdmVSZWN0LndpZHRoKCksCisgICAgICAgIHZpc2libGVSZWN0LnkoKS1ncm9vdmVSZWN0
LnkoKSAvL1BlbiB3aWR0aAorICAgICk7CisgICAgY29uc3QgUVJlY3QgYm90dG9tKAorICAgICAg
ICBncm9vdmVSZWN0LngoKSwKKyAgICAgICAgZ3Jvb3ZlUmVjdC55KCkrdmlzaWJsZVJlY3QueSgp
K3Zpc2libGVSZWN0LmhlaWdodCgpLWdyb292ZVJlY3QueSgpLCAvL1BlbiB3aWR0aAorICAgICAg
ICBncm9vdmVSZWN0LndpZHRoKCksCisgICAgICAgIGdyb292ZVJlY3QuaGVpZ2h0KCkgLSAodmlz
aWJsZVJlY3QueSgpLWdyb292ZVJlY3QueSgpKS12aXNpYmxlUmVjdC5oZWlnaHQoKQorICAgICk7
CisKKyAgICBRQ29sb3IgZmFkZWQoYmFja2dyb3VuZENvbG9yKTsKKyAgICBmYWRlZC5zZXRBbHBo
YSgxMTApOworICAgIHBhaW50ZXIuc2V0UGVuKFF0OjpOb1Blbik7CisgICAgcGFpbnRlci5zZXRC
cnVzaChmYWRlZCk7CisgICAgcGFpbnRlci5kcmF3UmVjdCh0b3ApOworICAgIHBhaW50ZXIuZHJh
d1JlY3QoYm90dG9tKTsKKworICAgIC8vIGFkZCBhIHRoaW4gbGluZSB0byBkZWxpbWl0YXRlIHRo
ZSBzY3JvbGxiYXIKKyAgICBRQ29sb3IgYyhmb3JlZ3JvdW5kQ29sb3IpOworICAgIGMuc2V0QWxw
aGEoMTApOworICAgIHBhaW50ZXIuc2V0UGVuKFFQZW4oYywxKSk7CisgICAgcGFpbnRlci5kcmF3
TGluZSgwLCAwLCAwLCBoZWlnaHQoKSk7CisKKyAgICAvLyBzbGlkZXIgb3V0bGluZQorICAgIFFD
b2xvciBzbGlkZXJDb2xvcihoaWdobGlnaHRDb2xvcik7CisgICAgc2xpZGVyQ29sb3Iuc2V0QWxw
aGEoNTApOworICAgIHBhaW50ZXIuc2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5n
KTsKKyAgICBwYWludGVyLnNldFBlbihRUGVuKGhpZ2hsaWdodENvbG9yLDEpKTsKKyAgICBwYWlu
dGVyLnNldEJydXNoKHNsaWRlckNvbG9yKTsKKyAgICBwYWludGVyLmRyYXdSb3VuZGVkUmVjdChz
bGlkZXJSZWN0LCAzLCAzKTsKKyAgICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFu
dGlhbGlhc2luZywgZmFsc2UpOwogfQogCiB2b2lkIEthdGVTY3JvbGxCYXI6Om5vcm1hbFBhaW50
RXZlbnQoUVBhaW50RXZlbnQgKmUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>