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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>51454</bug_id>
          
          <creation_ts>2010-12-22 00:23:43 -0800</creation_ts>
          <short_desc>[GTK] Implement spin buttons in RenderThemeGtk</short_desc>
          <delta_ts>2011-01-25 00:34:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>50820</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325407</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-22 00:23:43 -0800</bug_when>
    <thetext>Spin buttons are currently rendered as a text field, we should paint the inner up/down buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325412</commentid>
    <comment_count>1</comment_count>
      <attachid>77195</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-22 00:29:33 -0800</bug_when>
    <thetext>Created attachment 77195
Implement spin buttons for gtk3

This patch implements spin buttons using gtk3 (I leave the gtk2 implementation to Martin :-P), the patch applies on top of the patch attached to bug 50820.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327053</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-27 09:09:02 -0800</bug_when>
    <thetext>Nice patch! Should it be reviewed? It doesn&apos;t have an r? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327058</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-12-27 09:13:11 -0800</bug_when>
    <thetext>It doesn&apos;t have r because it doesn&apos;t apply, it depends on gtk-style-context port, so I didn&apos;t want bots to try to apply it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332201</commentid>
    <comment_count>4</comment_count>
      <attachid>78505</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-11 02:36:20 -0800</bug_when>
    <thetext>Created attachment 78505
Implement spin buttons in RenderThemeGtk3

Updated patch for current git master and with some other issues fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332405</commentid>
    <comment_count>5</comment_count>
      <attachid>78505</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-11 09:37:39 -0800</bug_when>
    <thetext>Comment on attachment 78505
Implement spin buttons in RenderThemeGtk3

View in context: https://bugs.webkit.org/attachment.cgi?id=78505&amp;action=review

&gt; Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:779
&gt; +    GtkBorder padding;
&gt; +    gtk_style_context_get_padding(context, static_cast&lt;GtkStateFlags&gt;(0), &amp;padding);
&gt; +
&gt; +    int width = spinButtonArrowSize(context) + padding.left + padding.right;
&gt; +    style-&gt;setWidth(Length(width, Fixed));
&gt; +    style-&gt;setMinWidth(Length(width, Fixed));
&gt; +}

Is it possible to just use reasonable values here rather than staying entirely true to the theme. If so, it might be better, as it will allow us to have the same layout regardless of the GTK+ theme / version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332419</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-11 10:03:41 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 78505 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78505&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:779
&gt; &gt; +    GtkBorder padding;
&gt; &gt; +    gtk_style_context_get_padding(context, static_cast&lt;GtkStateFlags&gt;(0), &amp;padding);
&gt; &gt; +
&gt; &gt; +    int width = spinButtonArrowSize(context) + padding.left + padding.right;
&gt; &gt; +    style-&gt;setWidth(Length(width, Fixed));
&gt; &gt; +    style-&gt;setMinWidth(Length(width, Fixed));
&gt; &gt; +}
&gt; 
&gt; Is it possible to just use reasonable values here rather than staying entirely true to the theme. If so, it might be better, as it will allow us to have the same layout regardless of the GTK+ theme / version.

gtk2 doesn&apos;t support spin buttons, so we can leave this and once gtk2 supports spin buttons, if the test results don&apos;t match we can try to use another value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333314</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-12 14:46:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; gtk2 doesn&apos;t support spin buttons, so we can leave this and once gtk2 supports spin buttons, if the test results don&apos;t match we can try to use another value.

Carlos convinced me recently that we can just switch all the bots over to GTK 3.x when the first stable release comes out. After that we can still keep a GTK+ 2.x builder around, but not run the tests there. This should help us avoid the metrics problem entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335695</commentid>
    <comment_count>8</comment_count>
      <attachid>79250</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-18 01:13:59 -0800</bug_when>
    <thetext>Created attachment 79250
Updated patch

Removed juntion sides for the frame since we are only drawing the buttons, not the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339355</commentid>
    <comment_count>9</comment_count>
      <attachid>79250</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-24 16:27:16 -0800</bug_when>
    <thetext>Comment on attachment 79250
Updated patch

View in context: https://bugs.webkit.org/attachment.cgi?id=79250&amp;action=review

Looks good. Consider my suggestions below.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Paint inner up/down buttons for spin button elements when building
&gt; +        with GTK+ 3.x.
&gt; +

Please make a note here that test results will land with the GTK+ 2.x version of this patch.

&gt; Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:761
&gt; +    const PangoFontDescription* fontDesc = gtk_style_context_get_font(context, static_cast&lt;GtkStateFlags&gt;(0));

Please don&apos;t abbreviate fontDesc.

&gt; Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:837
&gt; +    // Paint arrow centered inside button.
&gt; +    IntRect arrowRect;
&gt; +    gdouble angle;
&gt; +    if (arrowType == GTK_ARROW_UP) {
&gt; +        angle = 0;
&gt; +        arrowRect.setY(rect.y());
&gt; +        arrowRect.setHeight(rect.height() / 2 - 2);
&gt; +    } else {
&gt; +        angle = G_PI;
&gt; +        arrowRect.setY(rect.y() + buttonRect.y());
&gt; +        arrowRect.setHeight(rect.height() - arrowRect.y() - 2);
&gt; +    }
&gt; +    arrowRect.setWidth(rect.width() - 3);
&gt; +    if (direction == GTK_TEXT_DIR_LTR)
&gt; +        arrowRect.setX(rect.x() + 1);
&gt; +    else
&gt; +        arrowRect.setX(rect.x() + 2);
&gt; +
&gt; +    gint width = arrowRect.width() / 2;
&gt; +    width -= width % 2 - 1; // Force odd.
&gt; +    gint height = (width + 1) / 2;

For quite some time, I wondered why this logic was so hairy and thought surely there must be a better way. Then I set out to implement this code for GTK+ 2.x. After some time doing that and looking at the GTK+ code, I understand completely now.

I think we should would leave a comment at the top explaining that we&apos;re trying to emulate gtkspinbutton.c as closely as possible here. I&apos;d also prefer &quot;int&quot; to &quot;gint&quot; in most places. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339530</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-25 00:34:24 -0800</bug_when>
    <thetext>Committed r76577: &lt;http://trac.webkit.org/changeset/76577&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77195</attachid>
            <date>2010-12-22 00:29:33 -0800</date>
            <delta_ts>2011-01-11 02:36:20 -0800</delta_ts>
            <desc>Implement spin buttons for gtk3</desc>
            <filename>spinbutton.diff</filename>
            <type>text/plain</type>
            <size>6504</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDU0Nzg5MS4uZmYzODI3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0xMi0yMiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IHNwaW4gYnV0dG9ucyBpbiBS
ZW5kZXJUaGVtZUd0aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTE0NTQKKworICAgICAgICBQYWludCBpbm5lciB1cC9kb3duIGJ1dHRvbnMgZm9yIHNw
aW4gYnV0dG9uIGVsZW1lbnRzIGluCisgICAgICAgIFJlbmRlclRoZW1lR3RrMy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwYWludElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTcGluQXJy
b3dCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50SW5uZXJT
cGluQnV0dG9uKToKKwogMjAxMC0xMi0yMSAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCAwMDg3YmI5Li5mN2MxZGNkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTE2MCw2ICsxNjAsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKIHByaXZh
dGU6CiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBHdGtXaWRnZXQqIGd0a0J1dHRvbigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKaW5kZXggYjM2
ZTIxNy4uYTdlZDgyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3Bw
CkBAIC01NDMsNiArNTQzLDE1IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NC
YXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mCiB9CiAjZW5kaWYK
IAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Cit7Cit9CisKK2Jvb2wg
UmVuZGVyVGhlbWVHdGs6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQoreworICAgIHJldHVybiB0cnVlOworfQorCiB9
CiAKICNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHAKaW5kZXggYzE2YjU2Yy4uYzZkOTUyYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHls
ZVNoZWV0cy5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtODc3LDYgKzg3OCwxMDMgQEAg
Ym9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRl
ck9iamVjdCwgY29uc3QgUGFpbnRJbmYKIH0KICNlbmRpZgogCit2b2lkIFJlbmRlclRoZW1lR3Rr
OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3sKKyAgICBpbnQgd2lkdGggPSBTY3JvbGxiYXJU
aGVtZTo6bmF0aXZlVGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCk7CisgICAgc3R5bGUtPnNl
dFdpZHRoKExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVu
Z3RoKHdpZHRoLCBGaXhlZCkpOworfQorCitzdGF0aWMgdm9pZCBwYWludFNwaW5BcnJvd0J1dHRv
bihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBib29sIHVwKQoreworICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
Z3RrX3N0eWxlX2NvbnRleHRfZ2V0X2RpcmVjdGlvbihjb250ZXh0KTsKKworICAgIGd0a19zdHls
ZV9jb250ZXh0X3NhdmUoY29udGV4dCk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNz
KGNvbnRleHQsIEdUS19TVFlMRV9DTEFTU19CVVRUT04pOworCisgICAgZ3VpbnQgZmxhZ3MgPSAw
OworICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChyZW5kZXJPYmplY3QpIHx8IHRoZW1lLT5pc1Jl
YWRPbmx5Q29udHJvbChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVf
RkxBR19JTlNFTlNJVElWRTsKKyAgICBlbHNlIGlmICh0aGVtZS0+aXNQcmVzc2VkKHJlbmRlck9i
amVjdCkpIHsKKyAgICAgICAgaWYgKCh1cCAmJiB0aGVtZS0+aXNTcGluVXBCdXR0b25QYXJ0UHJl
c3NlZChyZW5kZXJPYmplY3QpKQorICAgICAgICAgICAgfHwgKCF1cCAmJiAhdGhlbWUtPmlzU3Bp
blVwQnV0dG9uUGFydFByZXNzZWQocmVuZGVyT2JqZWN0KSkpCisgICAgICAgICAgICBmbGFncyB8
PSBHVEtfU1RBVEVfRkxBR19BQ1RJVkU7CisgICAgfSBlbHNlIGlmICh0aGVtZS0+aXNIb3ZlcmVk
KHJlbmRlck9iamVjdCkpIHsKKyAgICAgICAgaWYgKCh1cCAmJiB0aGVtZS0+aXNTcGluVXBCdXR0
b25QYXJ0SG92ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICAgICAgfHwgIXVwICYmICF0aGVt
ZS0+aXNTcGluVXBCdXR0b25QYXJ0SG92ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICAgICAg
ZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfUFJFTElHSFQ7CisgICAgfQorICAgIGlmICh0aGVtZS0+
aXNGb2N1c2VkKHJlbmRlck9iamVjdCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFH
X0ZPQ1VTRUQ7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRp
Y19jYXN0PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CisKKyAgICBndWludCBqdW5jdGlvbiA9IDA7
CisgICAganVuY3Rpb24gfD0gKGRpcmVjdGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKSA/IEdUS19K
VU5DVElPTl9MRUZUIDogR1RLX0pVTkNUSU9OX1JJR0hUOworCisgICAgSW50UmVjdCBoYWxmID0g
cmVjdDsKKyAgICBoYWxmLnNldEhlaWdodChyZWN0LmhlaWdodCgpIC8gMik7CisKKyAgICBnZG91
YmxlIGFuZ2xlOworICAgIGlmICh1cCkgeworICAgICAgICBqdW5jdGlvbiB8PSBHVEtfSlVOQ1RJ
T05fQk9UVE9NOworICAgICAgICBhbmdsZSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaGFs
Zi5zZXRZKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAvIDIpOworICAgICAgICBqdW5jdGlvbiB8
PSBHVEtfSlVOQ1RJT05fVE9QOworICAgICAgICBhbmdsZSA9IEdfUEk7CisgICAgfQorCisgICAg
Z3RrX3N0eWxlX2NvbnRleHRfc2V0X2p1bmN0aW9uX3NpZGVzKGNvbnRleHQsIHN0YXRpY19jYXN0
PEd0a0p1bmN0aW9uU2lkZXM+KGp1bmN0aW9uKSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5k
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgaGFsZi54KCks
IGhhbGYueSgpLCBoYWxmLndpZHRoKCksIGhhbGYuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJf
ZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBoYWxm
LngoKSwgaGFsZi55KCksIGhhbGYud2lkdGgoKSwgaGFsZi5oZWlnaHQoKSk7CisKKyAgICBJbnRS
ZWN0IGFycm93UmVjdDsKKyAgICBpZiAodXApIHsKKyAgICAgICAgYXJyb3dSZWN0LnNldFkocmVj
dC55KCkpOworICAgICAgICBhcnJvd1JlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyIC0g
Mik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXJyb3dSZWN0LnNldFkocmVjdC55KCkgKyBoYWxm
LnkoKSk7CisgICAgICAgIGFycm93UmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAtIGFycm93
UmVjdC55KCkgLSAyKTsKKyAgICB9CisKKyAgICBhcnJvd1JlY3Quc2V0V2lkdGgocmVjdC53aWR0
aCgpIC0gMyk7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKQorICAgICAg
ICBhcnJvd1JlY3Quc2V0WChyZWN0LngoKSArIDEpOworICAgIGVsc2UKKyAgICAgICAgYXJyb3dS
ZWN0LnNldFgocmVjdC54KCkgKyAyKTsKKworICAgIGdpbnQgd2lkdGggPSBhcnJvd1JlY3Qud2lk
dGgoKSAvIDI7CisgICAgd2lkdGggLT0gd2lkdGggJSAyIC0gMTsgLy8gRm9yY2Ugb2RkLgorICAg
IGdpbnQgaGVpZ2h0ID0gKHdpZHRoICsgMSkgLyAyOworCisgICAgYXJyb3dSZWN0Lm1vdmUoKGFy
cm93UmVjdC53aWR0aCgpIC0gd2lkdGgpIC8gMiwgKGFycm93UmVjdC5oZWlnaHQoKSAtIGhlaWdo
dCkgLyAyKTsKKyAgICBndGtfcmVuZGVyX2Fycm93KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgYW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVjdC55KCks
IHdpZHRoKTsKKworICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7Cit9CisK
K2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3sKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0ID0g
Z2V0U3R5bGVDb250ZXh0KEdUS19UWVBFX1NQSU5fQlVUVE9OKTsKKyAgICBndGtfc3R5bGVfY29u
dGV4dF9zYXZlKGNvbnRleHQpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNv
bnRleHQsIEdUS19TVFlMRV9DTEFTU19TUElOQlVUVE9OKTsKKyAgICBndGtfc3R5bGVfY29udGV4
dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0VOVFJZKTsKKworICAgIGd0a19z
dHlsZV9jb250ZXh0X3NldF9kaXJlY3Rpb24oY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrVGV4dERp
cmVjdGlvbj4oUmVuZGVyVGhlbWVHdGs6Omd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSkpKTsKKworICAgIHBhaW50U3BpbkFycm93QnV0dG9uKHRoaXMs
IGNvbnRleHQsIHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLCByZWN0LCB0cnVlKTsKKyAgICBwYWlu
dFNwaW5BcnJvd0J1dHRvbih0aGlzLCBjb250ZXh0LCByZW5kZXJPYmplY3QsIHBhaW50SW5mbywg
cmVjdCwgZmFsc2UpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworCiB9CiAKICNlbmRpZiAvLyAhR1RLX0FQSV9WRVJT
SU9OXzIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78505</attachid>
            <date>2011-01-11 02:36:20 -0800</date>
            <delta_ts>2011-01-18 01:13:59 -0800</delta_ts>
            <desc>Implement spin buttons in RenderThemeGtk3</desc>
            <filename>style-context-spinbuttons2.diff</filename>
            <type>text/plain</type>
            <size>8371</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTUzNTA1Li5hOTM1OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEltcGxlbWVudCBzcGluIGJ1dHRvbnMgaW4gUmVuZGVyVGhlbWVHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDU0CisKKyAgICAgICAgUGFpbnQg
aW5uZXIgdXAvZG93biBidXR0b25zIGZvciBzcGluIGJ1dHRvbiBlbGVtZW50cyB3aGVuIGJ1aWxk
aW5nCisgICAgICAgIHdpdGggR1RLKyAzLnguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5lclNwaW5CdXR0
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRJbm5lclNw
aW5CdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3BpbkJ1dHRvbkFycm93U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRTcGluQXJyb3dCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVHdGs6OnBhaW50SW5uZXJTcGluQnV0dG9uKToKKwogMjAxMC0xMC0xMCAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCA3
NGI4OGIzLi4xZWE2NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuaApAQCAtMTY2LDYgKzE2Niw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKwogcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtSW5pdCgpOwogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKaW5kZXggMmViY2IwZi4uYTBlZTAzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAK
QEAgLTQyMyw2ICs0MjMsMTUgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0Jh
cihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKIH0KICNlbmRpZgog
Cit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QKK3sKK30KKworYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRJbm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEdS
ZWZQdHI8R2RrUGl4YnVmPiBSZW5kZXJUaGVtZUd0azo6Z2V0U3RvY2tJY29uKEdUeXBlIHdpZGdl
dFR5cGUsIGNvbnN0IGNoYXIqIGljb25OYW1lLCBnaW50IGRpcmVjdGlvbiwgZ2ludCBzdGF0ZSwg
Z2ludCBpY29uU2l6ZSkKIHsKICAgICBBU1NFUlQod2lkZ2V0VHlwZSA9PSBHVEtfVFlQRV9DT05U
QUlORVIgfHwgd2lkZ2V0VHlwZSA9PSBHVEtfVFlQRV9FTlRSWSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IDFiMmNiMzguLmU2Nzdm
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMu
Y3BwCkBAIC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBpcyB0
aGUgZGVmYXVsdCB2YWx1ZSBkZWZpbmVkIGJ5IEdUSyssIHdoZXJlIGl0IHdhcyBkZWZpbmVkIGFz
IE1JTl9BUlJPV19TSVpFIGluIGd0a2Fycm93LmMuCiBzdGF0aWMgY29uc3QgaW50IG1pbkFycm93
U2l6ZSA9IDE1OworLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBkZWZpbmVkIGJ5IEdUSyss
IHdoZXJlIGl0IHdhcyBkZWZpbmVkIGFzIE1JTl9BUlJPV19XSURUSCBpbiBndGtzcGluYnV0dG9u
LmMuCitzdGF0aWMgY29uc3QgaW50IG1pblNwaW5CdXR0b25BcnJvd1NpemUgPSA2OwogCiB0eXBl
ZGVmIEhhc2hNYXA8R1R5cGUsIEdSZWZQdHI8R3RrU3R5bGVDb250ZXh0PiA+IFN0eWxlQ29udGV4
dE1hcDsKIHN0YXRpYyBTdHlsZUNvbnRleHRNYXAmIHN0eWxlQ29udGV4dE1hcCgpOwpAQCAtNzU1
LDYgKzc1NywxMTcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKIH0KICNlbmRpZgogCitzdGF0
aWMgZ2ludCBzcGluQnV0dG9uQXJyb3dTaXplKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBjb25zdCBQYW5nb0ZvbnREZXNjcmlwdGlvbiogZm9udERlc2MgPSBndGtfc3R5bGVfY29u
dGV4dF9nZXRfZm9udChjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPigwKSk7Cisg
ICAgZ2ludCBmb250U2l6ZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X3NpemUoZm9udERl
c2MpOworICAgIGdpbnQgYXJyb3dTaXplID0gbWF4KFBBTkdPX1BJWEVMUyhmb250U2l6ZSksIG1p
blNwaW5CdXR0b25BcnJvd1NpemUpOworCisgICAgcmV0dXJuIGFycm93U2l6ZSAtIGFycm93U2l6
ZSAlIDI7IC8vIEZvcmNlIGV2ZW4uCit9CisKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdElu
bmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAoreworICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0
eWxlQ29udGV4dChHVEtfVFlQRV9TUElOX0JVVFRPTik7CisKKyAgICBHdGtCb3JkZXIgcGFkZGlu
ZzsKKyAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfcGFkZGluZyhjb250ZXh0LCBzdGF0aWNfY2Fz
dDxHdGtTdGF0ZUZsYWdzPigwKSwgJnBhZGRpbmcpOworCisgICAgaW50IHdpZHRoID0gc3BpbkJ1
dHRvbkFycm93U2l6ZShjb250ZXh0KSArIHBhZGRpbmcubGVmdCArIHBhZGRpbmcucmlnaHQ7Cisg
ICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0
TWluV2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworfQorCitzdGF0aWMgdm9pZCBwYWludFNw
aW5BcnJvd0J1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4
dCwgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBHdGtBcnJvd1R5cGUgYXJyb3dUeXBlKQoreworICAgIEFT
U0VSVChhcnJvd1R5cGUgPT0gR1RLX0FSUk9XX1VQIHx8IGFycm93VHlwZSA9PSBHVEtfQVJST1df
RE9XTik7CisKKyAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKGNvbnRleHQpOworICAgIGd0a19z
dHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfQlVUVE9OKTsK
KworICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gZ3RrX3N0eWxlX2NvbnRleHRfZ2V0
X2RpcmVjdGlvbihjb250ZXh0KTsKKyAgICBndWludCBzdGF0ZSA9IHN0YXRpY19jYXN0PGd1aW50
PihndGtfc3R5bGVfY29udGV4dF9nZXRfc3RhdGUoY29udGV4dCkpOworICAgIGlmICghKHN0YXRl
ICYgR1RLX1NUQVRFX0ZMQUdfSU5TRU5TSVRJVkUpKSB7CisgICAgICAgIGlmICh0aGVtZS0+aXNQ
cmVzc2VkKHJlbmRlck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICgoYXJyb3dUeXBlID09IEdU
S19BUlJPV19VUCAmJiB0aGVtZS0+aXNTcGluVXBCdXR0b25QYXJ0UHJlc3NlZChyZW5kZXJPYmpl
Y3QpKQorICAgICAgICAgICAgICAgIHx8IChhcnJvd1R5cGUgPT0gR1RLX0FSUk9XX0RPV04gJiYg
IXRoZW1lLT5pc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKHJlbmRlck9iamVjdCkpKQorICAgICAg
ICAgICAgICAgIHN0YXRlIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKKyAgICAgICAgfSBlbHNl
IGlmICh0aGVtZS0+aXNIb3ZlcmVkKHJlbmRlck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICgo
YXJyb3dUeXBlID09IEdUS19BUlJPV19VUCAmJiB0aGVtZS0+aXNTcGluVXBCdXR0b25QYXJ0SG92
ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICAgICAgICAgIHx8IChhcnJvd1R5cGUgPT0gR1RL
X0FSUk9XX0RPV04gJiYgIXRoZW1lLT5pc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKHJlbmRlck9i
amVjdCkpKQorICAgICAgICAgICAgICAgIHN0YXRlIHw9IEdUS19TVEFURV9GTEFHX1BSRUxJR0hU
OworICAgICAgICB9CisgICAgfQorICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250
ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihzdGF0ZSkpOworCisgICAgLy8gUGFpbnQg
YnV0dG9uLgorICAgIEludFJlY3QgYnV0dG9uUmVjdChyZWN0KTsKKyAgICBndWludCBqdW5jdGlv
biA9IGd0a19zdHlsZV9jb250ZXh0X2dldF9qdW5jdGlvbl9zaWRlcyhjb250ZXh0KTsKKyAgICBp
ZiAoYXJyb3dUeXBlID09IEdUS19BUlJPV19VUCkKKyAgICAgICAganVuY3Rpb24gfD0gR1RLX0pV
TkNUSU9OX0JPVFRPTTsKKyAgICBlbHNlIHsKKyAgICAgICAganVuY3Rpb24gfD0gR1RLX0pVTkNU
SU9OX1RPUDsKKyAgICAgICAgYnV0dG9uUmVjdC5tb3ZlKDAsIHJlY3QuaGVpZ2h0KCkgLyAyKTsK
KyAgICB9CisgICAgYnV0dG9uUmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIDIpOworICAg
IGd0a19zdHlsZV9jb250ZXh0X3NldF9qdW5jdGlvbl9zaWRlcyhjb250ZXh0LCBzdGF0aWNfY2Fz
dDxHdGtKdW5jdGlvblNpZGVzPihqdW5jdGlvbikpOworCisgICAgZ3RrX3JlbmRlcl9iYWNrZ3Jv
dW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYnV0dG9u
UmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3Qu
aGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1
dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisKKyAgICAvLyBQYWludCBh
cnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0dG9uLgorICAgIEludFJlY3QgYXJyb3dSZWN0OworICAg
IGdkb3VibGUgYW5nbGU7CisgICAgaWYgKGFycm93VHlwZSA9PSBHVEtfQVJST1dfVVApIHsKKyAg
ICAgICAgYW5nbGUgPSAwOworICAgICAgICBhcnJvd1JlY3Quc2V0WShyZWN0LnkoKSk7CisgICAg
ICAgIGFycm93UmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIDIgLSAyKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBhbmdsZSA9IEdfUEk7CisgICAgICAgIGFycm93UmVjdC5zZXRZKHJlY3Qu
eSgpICsgYnV0dG9uUmVjdC55KCkpOworICAgICAgICBhcnJvd1JlY3Quc2V0SGVpZ2h0KHJlY3Qu
aGVpZ2h0KCkgLSBhcnJvd1JlY3QueSgpIC0gMik7CisgICAgfQorICAgIGFycm93UmVjdC5zZXRX
aWR0aChyZWN0LndpZHRoKCkgLSAzKTsKKyAgICBpZiAoZGlyZWN0aW9uID09IEdUS19URVhUX0RJ
Ul9MVFIpCisgICAgICAgIGFycm93UmVjdC5zZXRYKHJlY3QueCgpICsgMSk7CisgICAgZWxzZQor
ICAgICAgICBhcnJvd1JlY3Quc2V0WChyZWN0LngoKSArIDIpOworCisgICAgZ2ludCB3aWR0aCA9
IGFycm93UmVjdC53aWR0aCgpIC8gMjsKKyAgICB3aWR0aCAtPSB3aWR0aCAlIDIgLSAxOyAvLyBG
b3JjZSBvZGQuCisgICAgZ2ludCBoZWlnaHQgPSAod2lkdGggKyAxKSAvIDI7CisKKyAgICBhcnJv
d1JlY3QubW92ZSgoYXJyb3dSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyLCAoYXJyb3dSZWN0Lmhl
aWdodCgpIC0gaGVpZ2h0KSAvIDIpOworICAgIGd0a19yZW5kZXJfYXJyb3coY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBhbmdsZSwgYXJyb3dSZWN0LngoKSwg
YXJyb3dSZWN0LnkoKSwgd2lkdGgpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShj
b250ZXh0KTsKK30KKworYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRJbm5lclNwaW5CdXR0b24o
UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdl
dFN0eWxlQ29udGV4dChHVEtfVFlQRV9TUElOX0JVVFRPTik7CisgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfc2F2ZShjb250ZXh0KTsKKworICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8R3RrVGV4dERpcmVjdGlvbj4oZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Qt
PnN0eWxlKCktPmRpcmVjdGlvbigpKSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X2RpcmVj
dGlvbihjb250ZXh0LCBkaXJlY3Rpb24pOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9qdW5j
dGlvbl9zaWRlcyhjb250ZXh0LCBkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX1JUTCA/IEdUS19K
VU5DVElPTl9SSUdIVCA6IEdUS19KVU5DVElPTl9MRUZUKTsKKworICAgIGd1aW50IGZsYWdzID0g
MDsKKyAgICBpZiAoIWlzRW5hYmxlZChyZW5kZXJPYmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9s
KHJlbmRlck9iamVjdCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0lOU0VOU0lU
SVZFOworICAgIGVsc2UgaWYgKGlzRm9jdXNlZChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFn
cyB8PSBHVEtfU1RBVEVfRkxBR19GT0NVU0VEOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9z
dGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOworICAgIGd0
a19zdHlsZV9jb250ZXh0X3JlbW92ZV9jbGFzcyhjb250ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfRU5U
UlkpOworCisgICAgcGFpbnRTcGluQXJyb3dCdXR0b24odGhpcywgY29udGV4dCwgcmVuZGVyT2Jq
ZWN0LCBwYWludEluZm8sIHJlY3QsIEdUS19BUlJPV19VUCk7CisgICAgcGFpbnRTcGluQXJyb3dC
dXR0b24odGhpcywgY29udGV4dCwgcmVuZGVyT2JqZWN0LCBwYWludEluZm8sIHJlY3QsIEdUS19B
UlJPV19ET1dOKTsKKworICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEdSZWZQdHI8R2RrUGl4YnVmPiBSZW5kZXJUaGVtZUd0
azo6Z2V0U3RvY2tJY29uKEdUeXBlIHdpZGdldFR5cGUsIGNvbnN0IGNoYXIqIGljb25OYW1lLCBn
aW50IGRpcmVjdGlvbiwgZ2ludCBzdGF0ZSwgZ2ludCBpY29uU2l6ZSkKIHsKICAgICBHdGtTdHls
ZUNvbnRleHQqIGNvbnRleHQgPSBnZXRTdHlsZUNvbnRleHQod2lkZ2V0VHlwZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79250</attachid>
            <date>2011-01-18 01:13:59 -0800</date>
            <delta_ts>2011-01-25 00:34:50 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>style-context-spin-buttons2.diff</filename>
            <type>text/plain</type>
            <size>8258</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NGZmYjczLi5jMzIyZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEltcGxlbWVudCBzcGluIGJ1dHRvbnMgaW4gUmVuZGVyVGhlbWVHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDU0CisKKyAgICAgICAgUGFpbnQg
aW5uZXIgdXAvZG93biBidXR0b25zIGZvciBzcGluIGJ1dHRvbiBlbGVtZW50cyB3aGVuIGJ1aWxk
aW5nCisgICAgICAgIHdpdGggR1RLKyAzLnguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5lclNwaW5CdXR0
b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRJbm5lclNw
aW5CdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3BpbkJ1dHRvbkFycm93U2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRTcGluQXJyb3dCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVHdGs6OnBhaW50SW5uZXJTcGluQnV0dG9uKToKKwogMjAxMS0wMS0xNyAgTU9SSVRBIEhh
amltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByNzU5OTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5oCmluZGV4IDkwMTEzZTUuLjFjMDlhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC0xNjksNiArMTY5LDkgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGFkanVz
dElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVs
ZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAppbmRleCBlMDE1MDhl
Li5hZTQyMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsyLmNwcApAQCAtNDI0LDYgKzQyNCwxNSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWlu
dFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZgog
fQogI2VuZGlmCiAKK3ZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdAorewor
fQorCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogR1JlZlB0cjxHZGtQaXhidWY+IFJlbmRlclRoZW1lR3RrOjpnZXRTdG9ja0ljb24o
R1R5cGUgd2lkZ2V0VHlwZSwgY29uc3QgY2hhciogaWNvbk5hbWUsIGdpbnQgZGlyZWN0aW9uLCBn
aW50IHN0YXRlLCBnaW50IGljb25TaXplKQogewogICAgIEFTU0VSVCh3aWRnZXRUeXBlID09IEdU
S19UWVBFX0NPTlRBSU5FUiB8fCB3aWRnZXRUeXBlID09IEdUS19UWVBFX0VOVFJZKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKaW5kZXggMjEy
ZTI5ZC4uZjNlNzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHAKQEAgLTQ5LDYgKzQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGRlZmluZWQgYnkgR1RLKywgd2hlcmUgaXQgd2Fz
IGRlZmluZWQgYXMgTUlOX0FSUk9XX1NJWkUgaW4gZ3RrYXJyb3cuYy4KIHN0YXRpYyBjb25zdCBp
bnQgbWluQXJyb3dTaXplID0gMTU7CisvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGRlZmlu
ZWQgYnkgR1RLKywgd2hlcmUgaXQgd2FzIGRlZmluZWQgYXMgTUlOX0FSUk9XX1dJRFRIIGluIGd0
a3NwaW5idXR0b24uYy4KK3N0YXRpYyBjb25zdCBpbnQgbWluU3BpbkJ1dHRvbkFycm93U2l6ZSA9
IDY7CiAKIHR5cGVkZWYgSGFzaE1hcDxHVHlwZSwgR1JlZlB0cjxHdGtTdHlsZUNvbnRleHQ+ID4g
U3R5bGVDb250ZXh0TWFwOwogc3RhdGljIFN0eWxlQ29udGV4dE1hcCYgc3R5bGVDb250ZXh0TWFw
KCk7CkBAIC03NTQsNiArNzU2LDExNiBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFByb2dy
ZXNzQmFyKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZgogfQogI2Vu
ZGlmCiAKK3N0YXRpYyBnaW50IHNwaW5CdXR0b25BcnJvd1NpemUoR3RrU3R5bGVDb250ZXh0KiBj
b250ZXh0KQoreworICAgIGNvbnN0IFBhbmdvRm9udERlc2NyaXB0aW9uKiBmb250RGVzYyA9IGd0
a19zdHlsZV9jb250ZXh0X2dldF9mb250KGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxh
Z3M+KDApKTsKKyAgICBnaW50IGZvbnRTaXplID0gcGFuZ29fZm9udF9kZXNjcmlwdGlvbl9nZXRf
c2l6ZShmb250RGVzYyk7CisgICAgZ2ludCBhcnJvd1NpemUgPSBtYXgoUEFOR09fUElYRUxTKGZv
bnRTaXplKSwgbWluU3BpbkJ1dHRvbkFycm93U2l6ZSk7CisKKyAgICByZXR1cm4gYXJyb3dTaXpl
IC0gYXJyb3dTaXplICUgMjsgLy8gRm9yY2UgZXZlbi4KK30KKwordm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit7CisgICAgR3RrU3R5bGVDb250ZXh0KiBjb250
ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KEdUS19UWVBFX1NQSU5fQlVUVE9OKTsKKworICAgIEd0a0Jv
cmRlciBwYWRkaW5nOworICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9wYWRkaW5nKGNvbnRleHQs
IHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KDApLCAmcGFkZGluZyk7CisKKyAgICBpbnQgd2lk
dGggPSBzcGluQnV0dG9uQXJyb3dTaXplKGNvbnRleHQpICsgcGFkZGluZy5sZWZ0ICsgcGFkZGlu
Zy5yaWdodDsKKyAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworICAg
IHN0eWxlLT5zZXRNaW5XaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Cit9CisKK3N0YXRpYyB2
b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250
ZXh0KiBjb250ZXh0LCBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIEd0a0Fycm93VHlwZSBhcnJvd1R5cGUp
Cit7CisgICAgQVNTRVJUKGFycm93VHlwZSA9PSBHVEtfQVJST1dfVVAgfHwgYXJyb3dUeXBlID09
IEdUS19BUlJPV19ET1dOKTsKKworICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoY29udGV4dCk7
CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19TVFlMRV9DTEFT
U19CVVRUT04pOworCisgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBndGtfc3R5bGVf
Y29udGV4dF9nZXRfZGlyZWN0aW9uKGNvbnRleHQpOworICAgIGd1aW50IHN0YXRlID0gc3RhdGlj
X2Nhc3Q8Z3VpbnQ+KGd0a19zdHlsZV9jb250ZXh0X2dldF9zdGF0ZShjb250ZXh0KSk7CisgICAg
aWYgKCEoc3RhdGUgJiBHVEtfU1RBVEVfRkxBR19JTlNFTlNJVElWRSkpIHsKKyAgICAgICAgaWYg
KHRoZW1lLT5pc1ByZXNzZWQocmVuZGVyT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKChhcnJv
d1R5cGUgPT0gR1RLX0FSUk9XX1VQICYmIHRoZW1lLT5pc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2Vk
KHJlbmRlck9iamVjdCkpCisgICAgICAgICAgICAgICAgfHwgKGFycm93VHlwZSA9PSBHVEtfQVJS
T1dfRE9XTiAmJiAhdGhlbWUtPmlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQocmVuZGVyT2JqZWN0
KSkpCisgICAgICAgICAgICAgICAgc3RhdGUgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOworICAg
ICAgICB9IGVsc2UgaWYgKHRoZW1lLT5pc0hvdmVyZWQocmVuZGVyT2JqZWN0KSkgeworICAgICAg
ICAgICAgaWYgKChhcnJvd1R5cGUgPT0gR1RLX0FSUk9XX1VQICYmIHRoZW1lLT5pc1NwaW5VcEJ1
dHRvblBhcnRIb3ZlcmVkKHJlbmRlck9iamVjdCkpCisgICAgICAgICAgICAgICAgfHwgKGFycm93
VHlwZSA9PSBHVEtfQVJST1dfRE9XTiAmJiAhdGhlbWUtPmlzU3BpblVwQnV0dG9uUGFydEhvdmVy
ZWQocmVuZGVyT2JqZWN0KSkpCisgICAgICAgICAgICAgICAgc3RhdGUgfD0gR1RLX1NUQVRFX0ZM
QUdfUFJFTElHSFQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0
X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KHN0YXRlKSk7CisKKyAg
ICAvLyBQYWludCBidXR0b24uCisgICAgSW50UmVjdCBidXR0b25SZWN0KHJlY3QpOworICAgIGd1
aW50IGp1bmN0aW9uID0gZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X2p1bmN0aW9uX3NpZGVzKGNvbnRl
eHQpOworICAgIGlmIChhcnJvd1R5cGUgPT0gR1RLX0FSUk9XX1VQKQorICAgICAgICBqdW5jdGlv
biB8PSBHVEtfSlVOQ1RJT05fQk9UVE9NOworICAgIGVsc2UgeworICAgICAgICBqdW5jdGlvbiB8
PSBHVEtfSlVOQ1RJT05fVE9QOworICAgICAgICBidXR0b25SZWN0Lm1vdmUoMCwgcmVjdC5oZWln
aHQoKSAvIDIpOworICAgIH0KKyAgICBidXR0b25SZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgp
IC8gMik7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X2p1bmN0aW9uX3NpZGVzKGNvbnRleHQs
IHN0YXRpY19jYXN0PEd0a0p1bmN0aW9uU2lkZXM+KGp1bmN0aW9uKSk7CisKKyAgICBndGtfcmVu
ZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwg
YnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25S
ZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKKworICAg
IC8vIFBhaW50IGFycm93IGNlbnRlcmVkIGluc2lkZSBidXR0b24uCisgICAgSW50UmVjdCBhcnJv
d1JlY3Q7CisgICAgZ2RvdWJsZSBhbmdsZTsKKyAgICBpZiAoYXJyb3dUeXBlID09IEdUS19BUlJP
V19VUCkgeworICAgICAgICBhbmdsZSA9IDA7CisgICAgICAgIGFycm93UmVjdC5zZXRZKHJlY3Qu
eSgpKTsKKyAgICAgICAgYXJyb3dSZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC8gMiAtIDIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGFuZ2xlID0gR19QSTsKKyAgICAgICAgYXJyb3dSZWN0
LnNldFkocmVjdC55KCkgKyBidXR0b25SZWN0LnkoKSk7CisgICAgICAgIGFycm93UmVjdC5zZXRI
ZWlnaHQocmVjdC5oZWlnaHQoKSAtIGFycm93UmVjdC55KCkgLSAyKTsKKyAgICB9CisgICAgYXJy
b3dSZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAtIDMpOworICAgIGlmIChkaXJlY3Rpb24gPT0g
R1RLX1RFWFRfRElSX0xUUikKKyAgICAgICAgYXJyb3dSZWN0LnNldFgocmVjdC54KCkgKyAxKTsK
KyAgICBlbHNlCisgICAgICAgIGFycm93UmVjdC5zZXRYKHJlY3QueCgpICsgMik7CisKKyAgICBn
aW50IHdpZHRoID0gYXJyb3dSZWN0LndpZHRoKCkgLyAyOworICAgIHdpZHRoIC09IHdpZHRoICUg
MiAtIDE7IC8vIEZvcmNlIG9kZC4KKyAgICBnaW50IGhlaWdodCA9ICh3aWR0aCArIDEpIC8gMjsK
KworICAgIGFycm93UmVjdC5tb3ZlKChhcnJvd1JlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDIsIChh
cnJvd1JlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMik7CisgICAgZ3RrX3JlbmRlcl9hcnJvdyhj
b250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFuZ2xlLCBhcnJv
d1JlY3QueCgpLCBhcnJvd1JlY3QueSgpLCB3aWR0aCk7CisKKyAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKGNvbnRleHQpOworfQorCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludElubmVy
U3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgR3RrU3R5bGVDb250ZXh0KiBj
b250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KEdUS19UWVBFX1NQSU5fQlVUVE9OKTsKKyAgICBndGtf
c3R5bGVfY29udGV4dF9zYXZlKGNvbnRleHQpOworCisgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBzdGF0aWNfY2FzdDxHdGtUZXh0RGlyZWN0aW9uPihndGtUZXh0RGlyZWN0aW9uKHJl
bmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICBndGtfc3R5bGVfY29udGV4
dF9zZXRfZGlyZWN0aW9uKGNvbnRleHQsIGRpcmVjdGlvbik7CisKKyAgICBndWludCBmbGFncyA9
IDA7CisgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVyT2JqZWN0KSB8fCBpc1JlYWRPbmx5Q29udHJv
bChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19JTlNFTlNJ
VElWRTsKKyAgICBlbHNlIGlmIChpc0ZvY3VzZWQocmVuZGVyT2JqZWN0KSkKKyAgICAgICAgZmxh
Z3MgfD0gR1RLX1NUQVRFX0ZMQUdfRk9DVVNFRDsKKyAgICBndGtfc3R5bGVfY29udGV4dF9zZXRf
c3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKKyAgICBn
dGtfc3R5bGVfY29udGV4dF9yZW1vdmVfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0VO
VFJZKTsKKworICAgIHBhaW50U3BpbkFycm93QnV0dG9uKHRoaXMsIGNvbnRleHQsIHJlbmRlck9i
amVjdCwgcGFpbnRJbmZvLCByZWN0LCBHVEtfQVJST1dfVVApOworICAgIHBhaW50U3BpbkFycm93
QnV0dG9uKHRoaXMsIGNvbnRleHQsIHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLCByZWN0LCBHVEtf
QVJST1dfRE9XTik7CisKKyAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBHUmVmUHRyPEdka1BpeGJ1Zj4gUmVuZGVyVGhlbWVH
dGs6OmdldFN0b2NrSWNvbihHVHlwZSB3aWRnZXRUeXBlLCBjb25zdCBjaGFyKiBpY29uTmFtZSwg
Z2ludCBkaXJlY3Rpb24sIGdpbnQgc3RhdGUsIGdpbnQgaWNvblNpemUpCiB7CiAgICAgR3RrU3R5
bGVDb250ZXh0KiBjb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KHdpZGdldFR5cGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>