<?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>154739</bug_id>
          
          <creation_ts>2016-02-26 10:58:13 -0800</creation_ts>
          <short_desc>Web Inspector: Keyboard controls to nudge control points in custom transition bezier curve editor would be nice</short_desc>
          <delta_ts>2016-02-28 22:22:33 -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>Web Inspector</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168583</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-26 10:58:13 -0800</bug_when>
    <thetext>The editor lets you select a control point but it would be nice to be able to hit left/right to nudge it some set amount of units or shift-left/right nudge some more units.

Right now it’s hard to move a control point in one dimension with the mouse.

Would also not mind some direct number input while in this mode, but I’m fine with that being a follow up bug if that’s more manageable.

&lt;rdar://problem/24861498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168613</commentid>
    <comment_count>1</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-02-26 11:53:20 -0800</bug_when>
    <thetext>Holding shift to lock the movement horizontally or vertically (based on mouse direction) would be great too. Photoshop&apos;s line/pencil/pen tools have this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168652</commentid>
    <comment_count>2</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-26 13:21:42 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The editor lets you select a control point but it would be nice to be able
&gt; to hit left/right to nudge it some set amount of units or shift-left/right
&gt; nudge some more units.

So, I&apos;m thinking that the best way to do this might be to allow left/right (with the shift version too) to nudge the most recently selected control point.  Since controlpoints are only selected so long as the mouse is pressed, forcing the user to hold the mouse down while pressing left/right would be awkward (especially if they use an external mouse, since the arrow keys are also on the right).

&gt; Right now it’s hard to move a control point in one dimension with the mouse.

I like Matt&apos;s suggestion.  Adding a shift-drag would do a straight line on either the x or y axis.

&gt; Would also not mind some direct number input while in this mode, but I’m
&gt; fine with that being a follow up bug if that’s more manageable.

So you mean like having actual inputs for the coordinates for each controlpoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168685</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-02-26 14:15:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The editor lets you select a control point but it would be nice to be able
&gt; &gt; to hit left/right to nudge it some set amount of units or shift-left/right
&gt; &gt; nudge some more units.
&gt; 
&gt; So, I&apos;m thinking that the best way to do this might be to allow left/right
&gt; (with the shift version too) to nudge the most recently selected control
&gt; point.  Since controlpoints are only selected so long as the mouse is
&gt; pressed, forcing the user to hold the mouse down while pressing left/right
&gt; would be awkward (especially if they use an external mouse, since the arrow
&gt; keys are also on the right).
&gt; 
&gt; &gt; Right now it’s hard to move a control point in one dimension with the mouse.
&gt; 
&gt; I like Matt&apos;s suggestion.  Adding a shift-drag would do a straight line on
&gt; either the x or y axis.

I do to!

&gt; &gt; Would also not mind some direct number input while in this mode, but I’m
&gt; &gt; fine with that being a follow up bug if that’s more manageable.
&gt; 
&gt; So you mean like having actual inputs for the coordinates for each
&gt; controlpoint?

I think that is what the originator meant. We could consider that separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168783</commentid>
    <comment_count>4</comment_count>
      <attachid>272390</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-26 19:08:54 -0800</bug_when>
    <thetext>Created attachment 272390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168803</commentid>
    <comment_count>5</comment_count>
      <attachid>272390</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-26 20:54:31 -0800</bug_when>
    <thetext>Comment on attachment 272390
Patch

Clearing flags on attachment: 272390

Committed r197233: &lt;http://trac.webkit.org/changeset/197233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168804</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-26 20:54:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168805</commentid>
    <comment_count>7</comment_count>
      <attachid>272390</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-26 21:02:16 -0800</bug_when>
    <thetext>Comment on attachment 272390
Patch

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

Neat!

&gt; Source/WebInspectorUI/UserInterface/Views/BezierEditor.js:109
&gt; +        WebInspector.addWindowKeydownListener(this);

I don&apos;t see a call to WebInspector.removeWindowKeydownListener. Seems like this would leak listeners in the global list, because this can never be removed. Please address this in a follow-up!

Also this is the first I&apos;ve seen WebInspector.addWindowKeydownListener. Calls to WebInspector._updateWindowKeydownListener attempt to re-add the shared listener every time a new listener is added. I&apos;d rather see it only attempt when the listener count is 1, not when &gt;1.

&gt; Source/WebInspectorUI/UserInterface/Views/BezierEditor.js:164
&gt; +

Style: Extra newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169080</commentid>
    <comment_count>8</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-02-28 22:22:33 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 272390 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272390&amp;action=review
&gt; 
&gt; Neat!
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/BezierEditor.js:109
&gt; &gt; +        WebInspector.addWindowKeydownListener(this);
&gt; 
&gt; I don&apos;t see a call to WebInspector.removeWindowKeydownListener. Seems like
&gt; this would leak listeners in the global list, because this can never be
&gt; removed. Please address this in a follow-up!
&gt; 
&gt; Also this is the first I&apos;ve seen WebInspector.addWindowKeydownListener.
&gt; Calls to WebInspector._updateWindowKeydownListener attempt to re-add the
&gt; shared listener every time a new listener is added. I&apos;d rather see it only
&gt; attempt when the listener count is 1, not when &gt;1.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/BezierEditor.js:164
&gt; &gt; +
&gt; 
&gt; Style: Extra newline.

Both of these are addressed in &lt;https://bugs.webkit.org/show_bug.cgi?id=154809&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272390</attachid>
            <date>2016-02-26 19:08:54 -0800</date>
            <delta_ts>2016-02-26 20:54:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154739-20160226200836.patch</filename>
            <type>text/plain</type>
            <size>4892</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDhmNjhlMWRmYWVkYzUxN2VhYjE3NWU4NGY5ZWEx
N2NjZWEzZmQzNTUuLjQ0OTUxY2Y1Njg2MDhkNmE1M2ZlODM1YWMzZjJlNDdlY2E1OGU1MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE2LTAyLTI2ICBEZXZp
biBSb3Vzc28gIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgogCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEtleWJvYXJkIGNvbnRyb2xzIHRvIG51ZGdlIGNvbnRyb2wgcG9pbnRzIGluIGN1c3Rv
bSB0cmFuc2l0aW9uIGJlemllciBjdXJ2ZSBlZGl0b3Igd291bGQgYmUgbmljZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NzM5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yNDg2MTQ5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIGFiaWxpdHkgZm9yIHVzZXIgdG8gbnVkZ2UgdGhlIG1vc3Qg
cmVjZW50bHkgc2VsZWN0ZWQgYmV6aWVyIGNvbnRyb2wKKyAgICAgICAgaGFuZGxlIGJ5IHVzaW5n
IHRoZSBhcnJvdyBrZXlzLiBBbHNvIG1ha2VzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmV6aWVy
CisgICAgICAgIGNvbnRyb2wgbGluZSBzbmFwIHRvIGFuIGF4aXMsIHdoaWNoIGlzIGRlZmluZWQg
d2hlbiB0aGUgdXNlciBtb3VzZXMgZG93biwKKyAgICAgICAgd2hlbmV2ZXIgdGhlIG1vdXNlIGlz
IGRyYWdnZWQgd2hpbGUgdGhlIHNoaWZ0IGtleSBpcyBwcmVzc2VkLgorCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0JlemllckVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CZXppZXJFZGl0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJlemllckVkaXRvci5wcm90
b3R5cGUuaGFuZGxlS2V5ZG93bkV2ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CZXppZXJF
ZGl0b3IucHJvdG90eXBlLl9oYW5kbGVNb3VzZXVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
ZXppZXJFZGl0b3IucHJvdG90eXBlLl91cGRhdGVDb250cm9sUG9pbnRzRm9yTW91c2VFdmVudCk6
CisKKzIwMTYtMDItMjYgIERldmluIFJvdXNzbyAgPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogT3B0aW9uLWNsaWNraW5nIG9uIHRoZSBhIENTUyBw
cm9wZXJ0eSBzb21ldGltZXMgZG9lc24ndCB3b3JrCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzODQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0
NzE0NzU1PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQmV6aWVyRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQmV6aWVyRWRpdG9yLmpzCmluZGV4IGJlMzRkMmQxYzM2YWRkN2EwMDUxMjAyM2I1
YmY3YWVhMGIyOWVkOTkuLjg2ODgwMjUzY2M4NzAyY2NkYTU2YzFjNjIwZTUyZjU5OTdiMDdjN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Jl
emllckVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9CZXppZXJFZGl0b3IuanMKQEAgLTEwMyw3ICsxMDMsMTAgQEAgV2ViSW5zcGVjdG9yLkJl
emllckVkaXRvciA9IGNsYXNzIEJlemllckVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iZXppZXJQcmV2aWV3
VGltaW5nKTsKIAogICAgICAgICB0aGlzLl9zZWxlY3RlZENvbnRyb2wgPSBudWxsOworICAgICAg
ICB0aGlzLl9tb3VzZURvd25Qb3NpdGlvbiA9IG51bGw7CiAgICAgICAgIHRoaXMuX2JlemllckNv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKKworICAgICAgICBX
ZWJJbnNwZWN0b3IuYWRkV2luZG93S2V5ZG93bkxpc3RlbmVyKHRoaXMpOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwpAQCAtMTUzLDYgKzE1Niw0NyBAQCBXZWJJbnNwZWN0b3IuQmV6aWVyRWRpdG9y
ID0gY2xhc3MgQmV6aWVyRWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAg
ICB9CiAgICAgfQogCisgICAgaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9zZWxlY3RlZENvbnRyb2wgfHwgIXRoaXMuX2VsZW1lbnQucGFyZW50Tm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworCisgICAgICAgIGxldCBob3Jpem9udGFs
ID0gMDsKKyAgICAgICAgbGV0IHZlcnRpY2FsID0gMDsKKyAgICAgICAgc3dpdGNoIChldmVudC5r
ZXlDb2RlKSB7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
LlVwLmtleUNvZGU6CisgICAgICAgICAgICB2ZXJ0aWNhbCA9IC0xOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlJpZ2h0
LmtleUNvZGU6CisgICAgICAgICAgICBob3Jpem9udGFsID0gMTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Eb3duLmtl
eUNvZGU6CisgICAgICAgICAgICB2ZXJ0aWNhbCA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdC5rZXlDb2Rl
OgorICAgICAgICAgICAgaG9yaXpvbnRhbCA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsKKyAgICAgICAgICAgIGhvcml6b250YWwgKj0gMTA7
CisgICAgICAgICAgICB2ZXJ0aWNhbCAqPSAxMDsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnRp
Y2FsICo9IHRoaXMuX2JlemllcldpZHRoIC8gMTAwOworICAgICAgICBob3Jpem9udGFsICo9IHRo
aXMuX2JlemllckhlaWdodCAvIDEwMDsKKworICAgICAgICB0aGlzLl9zZWxlY3RlZENvbnRyb2wu
cG9pbnQueCA9IE51bWJlci5jb25zdHJhaW4odGhpcy5fc2VsZWN0ZWRDb250cm9sLnBvaW50Lngg
KyBob3Jpem9udGFsLCAwLCB0aGlzLl9iZXppZXJXaWR0aCk7CisgICAgICAgIHRoaXMuX3NlbGVj
dGVkQ29udHJvbC5wb2ludC55ICs9IHZlcnRpY2FsOworICAgICAgICB0aGlzLl91cGRhdGVDb250
cm9sKHRoaXMuX3NlbGVjdGVkQ29udHJvbCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlKCk7
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAg
X2hhbmRsZU1vdXNlZG93bihldmVudCkKQEAgLTE3Nyw3ICsyMjEsNyBAQCBXZWJJbnNwZWN0b3Iu
QmV6aWVyRWRpdG9yID0gY2xhc3MgQmV6aWVyRWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgIF9oYW5kbGVNb3VzZXVwKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRDb250cm9sLmhhbmRsZS5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOwotICAgICAg
ICB0aGlzLl9zZWxlY3RlZENvbnRyb2wgPSBudWxsOworICAgICAgICB0aGlzLl9tb3VzZURvd25Q
b3NpdGlvbiA9IG51bGw7CiAgICAgICAgIHRoaXMuX3RyaWdnZXJQcmV2aWV3QW5pbWF0aW9uKCk7
CiAKICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMs
IHRydWUpOwpAQCAtMTkxLDEyICsyMzUsMjEgQEAgV2ViSW5zcGVjdG9yLkJlemllckVkaXRvciA9
IGNsYXNzIEJlemllckVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
cG9pbnQueSAtPSB0aGlzLl9jb250cm9sSGFuZGxlUmFkaXVzICsgdGhpcy5fcGFkZGluZzsKIAog
ICAgICAgICBpZiAoY2FsY3VsYXRlU2VsZWN0ZWRDb250cm9sUG9pbnQpIHsKKyAgICAgICAgICAg
IHRoaXMuX21vdXNlRG93blBvc2l0aW9uID0gcG9pbnQ7CisKICAgICAgICAgICAgIGlmICh0aGlz
Ll9pbkNvbnRyb2wucG9pbnQuZGlzdGFuY2UocG9pbnQpIDwgdGhpcy5fb3V0Q29udHJvbC5wb2lu
dC5kaXN0YW5jZShwb2ludCkpCiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb250cm9s
ID0gdGhpcy5faW5Db250cm9sOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkQ29udHJvbCA9IHRoaXMuX291dENvbnRyb2w7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgdGhpcy5fbW91c2VEb3duUG9zaXRpb24pIHsKKyAg
ICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25Qb3NpdGlvbi54IC0gcG9pbnQu
eCkgPiBNYXRoLmFicyh0aGlzLl9tb3VzZURvd25Qb3NpdGlvbi55IC0gcG9pbnQueSkpCisgICAg
ICAgICAgICAgICAgcG9pbnQueSA9IHRoaXMuX21vdXNlRG93blBvc2l0aW9uLnk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcG9pbnQueCA9IHRoaXMuX21vdXNlRG93blBvc2l0
aW9uLng7CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9zZWxlY3RlZENvbnRyb2wucG9pbnQg
PSBwb2ludDsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb250cm9sLmhhbmRsZS5jbGFzc0xpc3Qu
YWRkKCJzZWxlY3RlZCIpOwogICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>