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

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>582</bug_id>
          
          <creation_ts>2012-05-07 22:24:46 +0200</creation_ts>
          <short_desc>NewtCanvasAWT.setCursor doesn&apos;t retain the set cursor</short_desc>
          <delta_ts>2012-05-14 14:53:56 +0200</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Newt</product>
          <component>awt</component>
          <version>1</version>
          <rep_platform>pc_x86_64</rep_platform>
          <op_sys>windows</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="William Bittle">wjbittle</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>---</cf_type>
          <cf_scm_refs></cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1571</commentid>
    <comment_count>0</comment_count>
      <attachid>347</attachid>
    <who name="William Bittle">wjbittle</who>
    <bug_when>2012-05-07 22:24:46 +0200</bug_when>
    <thetext>Created attachment 347
Not a junit test but illustrates the problem

You can set the cursor on a NewtCanvasAWT class by the setCursor method.  This works great as long as the mouse is not moved.  If the mouse is moved, the cursor reverts to Cursor.getDefaultCursor().

The original problem was that the cursor flickered; from the set cursor to the default cursor.  This can be illustrated by un-commenting the time.start() on line 95.

So to review there are two problems (which I think are related):
1. The cursor reverts to the default cursor when the mouse moves when using NewtCanvasAWT
2. The cursor flickers if a swing timer is used to update anything else on the JFrame.

Platform(s):
Windows Vista (amd) or Windows 7 (intel) (both x86_64)
java version &quot;1.6.0_31&quot;
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)

Version Information:
Package: javax.media.opengl
Extension Name: javax.media.opengl
Specification Title: Java Bindings for OpenGL API Specification
Specification Vendor: JogAmp Community
Specification Version: 2.0
Implementation Title: Java Bindings for OpenGL Runtime Environment
Implementation Vendor: JogAmp Community
Implementation Vendor ID: com.jogamp
Implementation URL: http://jogamp.org/
Implementation Version: 2.0-b57-20120502
Implementation Branch: rc
Implementation Commit: 9ff0b0dafea2a03a915c97eb1513c39c27b6a7ae

Package: com.jogamp.newt
Extension Name: null
Specification Title: null
Specification Vendor: null
Specification Version: null
Implementation Title: null
Implementation Vendor: null
Implementation Vendor ID: null
Implementation URL: null
Implementation Version: null
Implementation Branch: null
Implementation Commit: null

Package: com.jogamp.common
Extension Name: com.jogamp.common
Specification Title: GlueGen Java Bindings Generator
Specification Vendor: JogAmp Community
Specification Version: 2.0
Implementation Title: GlueGen Run-Time
Implementation Vendor: JogAmp Community
Implementation Vendor ID: com.jogamp
Implementation URL: http://jogamp.org/
Implementation Version: 2.0-b43-20120502
Implementation Branch: rc
Implementation Commit: 4ce601b38ca8418eddbe8cca4d531e6161fae26b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574</commentid>
    <comment_count>1</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2012-05-13 22:30:56 +0200</bug_when>
    <thetext>setCursor(..) is an AWT method / functionality and only works while the mouse cursor
is within it&apos;s native peer bounds.

Even thought NewtCanvasAWT is derived from AWT Canvas and hence an
AWT component allowing you to call AWT&apos;s setCursor(..),
it adds a native NEWT child to the AWT native peer.
The NEWT child is ontop of the AWT native peer and visible,
hiding the AWT one.

This implies that the AWT native peer cursor setting is inactive
so to speak while NEWT is ontop.

Pls use NEWT&apos;s setPointerVisible(..) pointer methods to make the cursor disappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579</commentid>
    <comment_count>2</comment_count>
    <who name="William Bittle">wjbittle</who>
    <bug_when>2012-05-14 14:24:59 +0200</bug_when>
    <thetext>(In reply to comment #1)
&gt; setCursor(..) is an AWT method / functionality and only works while the mouse
&gt; cursor
&gt; is within it&apos;s native peer bounds.
&gt; 
&gt; Even thought NewtCanvasAWT is derived from AWT Canvas and hence an
&gt; AWT component allowing you to call AWT&apos;s setCursor(..),
&gt; it adds a native NEWT child to the AWT native peer.
&gt; The NEWT child is ontop of the AWT native peer and visible,
&gt; hiding the AWT one.
&gt; 
&gt; This implies that the AWT native peer cursor setting is inactive
&gt; so to speak while NEWT is ontop.
&gt; 
&gt; Pls use NEWT&apos;s setPointerVisible(..) pointer methods to make the cursor
&gt; disappear.

To make sure it&apos;s clear, the problem here isn&apos;t that the cursor shouldn&apos;t be visible, but that it should be changed to another cursor (then changed back at some later point in time).

Are you suggesting something like this?:
1. setPointerVisible(false) to hide the cursor
2. render the cursor manually using a quad + texture that follows the cursor
3. then use setPointerVisible(true) when it should change back

William</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580</commentid>
    <comment_count>3</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2012-05-14 14:53:56 +0200</bug_when>
    <thetext>(In reply to comment #2)
&gt; To make sure it&apos;s clear, the problem here isn&apos;t that the cursor shouldn&apos;t be
&gt; visible, but that it should be changed to another cursor (then changed back at
&gt; some later point in time).

Both are related to the native windowing toolkit&apos;s restriction 
of having a native child window (NEWT) opaque on top of the parent (NewtCanvasAWT).

Your use case goes a bit further, i.e. changing the mouse cursor 
instead of simply turning it off.
Since this feature is not [yet] implemented in NEWT
your &apos;workaround&apos; as you describe below seems to be a good idea
where you render the cursor as a HUD above your geometry using OpenGL.

&gt; 
&gt; Are you suggesting something like this?:
&gt; 1. setPointerVisible(false) to hide the cursor
&gt; 2. render the cursor manually using a quad + texture that follows the cursor
&gt; 3. then use setPointerVisible(true) when it should change back
&gt; 

Due to NEWT&apos;s lack of changing the cursor .. this would be a workaround.

The missing NEWT feature is due to lack of time to properly 
impl. this feature for X11, Windows and OSX.
However, if you or somebody else is willing to do so - we are for sure
integrating it into NEWT.

&gt; William

~Sven</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>347</attachid>
            <date>2012-05-07 22:24:46 +0200</date>
            <delta_ts>2012-05-07 22:24:46 +0200</delta_ts>
            <desc>Not a junit test but illustrates the problem</desc>
            <filename>Test.java</filename>
            <type>application/octet-stream</type>
            <size>4593</size>
            <attacher name="William Bittle">wjbittle</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsNCmltcG9ydCBqYXZhLmF3dC5Db250YWluZXI7
DQppbXBvcnQgamF2YS5hd3QuQ3Vyc29yOw0KaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsNCmlt
cG9ydCBqYXZhLmF3dC5Qb2ludDsNCmltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsN
CmltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsNCg0KaW1wb3J0IGphdmF4Lm1l
ZGlhLm9wZW5nbC5HTDsNCmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0wyOw0KaW1wb3J0IGph
dmF4Lm1lZGlhLm9wZW5nbC5HTEF1dG9EcmF3YWJsZTsNCmltcG9ydCBqYXZheC5tZWRpYS5vcGVu
Z2wuR0xDYXBhYmlsaXRpZXM7DQppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMRXZlbnRMaXN0
ZW5lcjsNCmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0xQcm9maWxlOw0KaW1wb3J0IGphdmF4
LnN3aW5nLkpGcmFtZTsNCmltcG9ydCBqYXZheC5zd2luZy5KUGFuZWw7DQppbXBvcnQgamF2YXgu
c3dpbmcuSlBvcHVwTWVudTsNCmltcG9ydCBqYXZheC5zd2luZy5KU3BsaXRQYW5lOw0KaW1wb3J0
IGphdmF4LnN3aW5nLkpUZXh0RmllbGQ7DQppbXBvcnQgamF2YXguc3dpbmcuU3dpbmdVdGlsaXRp
ZXM7DQppbXBvcnQgamF2YXguc3dpbmcuVGltZXI7DQppbXBvcnQgamF2YXguc3dpbmcuVG9vbFRp
cE1hbmFnZXI7DQoNCmltcG9ydCBjb20uam9nYW1wLm5ld3QuYXd0Lk5ld3RDYW52YXNBV1Q7DQpp
bXBvcnQgY29tLmpvZ2FtcC5uZXd0LmV2ZW50Lk1vdXNlRXZlbnQ7DQppbXBvcnQgY29tLmpvZ2Ft
cC5uZXd0LmV2ZW50Lk1vdXNlTGlzdGVuZXI7DQppbXBvcnQgY29tLmpvZ2FtcC5uZXd0Lm9wZW5n
bC5HTFdpbmRvdzsNCmltcG9ydCBjb20uam9nYW1wLm9wZW5nbC51dGlsLkFuaW1hdG9yOw0KDQpw
dWJsaWMgY2xhc3MgVGVzdCBleHRlbmRzIEpGcmFtZSBpbXBsZW1lbnRzIEdMRXZlbnRMaXN0ZW5l
ciwgTW91c2VMaXN0ZW5lciwgQWN0aW9uTGlzdGVuZXIgew0KDQoJcHVibGljIHN0YXRpYyB2b2lk
IG1haW4oU3RyaW5nW10gYXJncykgew0KCQkNCgkJU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIo
bmV3IFJ1bm5hYmxlKCkgew0KCQkJQE92ZXJyaWRlDQoJCQlwdWJsaWMgdm9pZCBydW4oKSB7DQoJ
CQkJbmV3IFRlc3QoKTsNCgkJCX0NCgkJfSk7DQoJfQ0KCQ0KCXByaXZhdGUgR0xXaW5kb3cgd2lu
ZG93Ow0KCXByaXZhdGUgTmV3dENhbnZhc0FXVCBjYW52YXM7DQoJcHJpdmF0ZSBKVGV4dEZpZWxk
IHR4dE1vdXNlUG9zaXRpb247DQoJDQoJcHJpdmF0ZSBQb2ludCBtb3VzZUxvY2F0aW9uID0gbmV3
IFBvaW50KCk7DQoJDQoJcHVibGljIFRlc3QoKSB7DQoJCXRoaXMuc2V0RGVmYXVsdENsb3NlT3Bl
cmF0aW9uKEpGcmFtZS5FWElUX09OX0NMT1NFKTsNCgkJVG9vbFRpcE1hbmFnZXIuc2hhcmVkSW5z
dGFuY2UoKS5zZXRMaWdodFdlaWdodFBvcHVwRW5hYmxlZChmYWxzZSk7DQoJCUpQb3B1cE1lbnUu
c2V0RGVmYXVsdExpZ2h0V2VpZ2h0UG9wdXBFbmFibGVkKGZhbHNlKTsNCgkJDQoJCUdMQ2FwYWJp
bGl0aWVzIGNhcHMgPSBuZXcgR0xDYXBhYmlsaXRpZXMoR0xQcm9maWxlLmdldE1heEZpeGVkRnVu
Yyh0cnVlKSk7DQoJCWNhcHMuc2V0RG91YmxlQnVmZmVyZWQodHJ1ZSk7DQoJCWNhcHMuc2V0U3Rl
bmNpbEJpdHMoMSk7DQoJCWNhcHMuc2V0U2FtcGxlQnVmZmVycyh0cnVlKTsNCgkJY2Fwcy5zZXRO
dW1TYW1wbGVzKDIpOw0KCQljYXBzLnNldEhhcmR3YXJlQWNjZWxlcmF0ZWQodHJ1ZSk7DQoJCQ0K
CQl3aW5kb3cgPSBHTFdpbmRvdy5jcmVhdGUoY2Fwcyk7DQoJCXdpbmRvdy5zZXRVbmRlY29yYXRl
ZCh0cnVlKTsNCgkJd2luZG93LmFkZEdMRXZlbnRMaXN0ZW5lcih0aGlzKTsNCgkJd2luZG93LmFk
ZE1vdXNlTGlzdGVuZXIodGhpcyk7DQoJCQ0KCQljYW52YXMgPSBuZXcgTmV3dENhbnZhc0FXVCh3
aW5kb3cpOw0KCQljYW52YXMuc2V0SWdub3JlUmVwYWludCh0cnVlKTsNCgkJY2FudmFzLnNldE1p
bmltdW1TaXplKG5ldyBEaW1lbnNpb24oNDAwLCA2MDApKTsNCgkJY2FudmFzLnNldFByZWZlcnJl
ZFNpemUobmV3IERpbWVuc2lvbig2MDAsIDYwMCkpOw0KCQkNCgkJdHh0TW91c2VQb3NpdGlvbiA9
IG5ldyBKVGV4dEZpZWxkKCk7DQoJCXR4dE1vdXNlUG9zaXRpb24uc2V0Q29sdW1ucygxMCk7DQoJ
CQ0KCQlKUGFuZWwgcG5sTGVmdCA9IG5ldyBKUGFuZWwoKTsNCgkJcG5sTGVmdC5zZXRQcmVmZXJy
ZWRTaXplKG5ldyBEaW1lbnNpb24oMjAwLCA2MDApKTsNCgkJcG5sTGVmdC5hZGQodHh0TW91c2VQ
b3NpdGlvbik7DQoJCQ0KCQlKUGFuZWwgcG5sUmlnaHQgPSBuZXcgSlBhbmVsKCk7DQoJCXBubFJp
Z2h0LnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOw0KCQlwbmxSaWdodC5hZGQoY2FudmFz
KTsNCgkJDQoJCUpTcGxpdFBhbmUgcG5lU3BsaXQgPSBuZXcgSlNwbGl0UGFuZShKU3BsaXRQYW5l
LkhPUklaT05UQUxfU1BMSVQsIHBubExlZnQsIHBubFJpZ2h0KTsNCg0KCQlDb250YWluZXIgY29u
dGFpbmVyID0gdGhpcy5nZXRDb250ZW50UGFuZSgpOw0KCQljb250YWluZXIuc2V0TGF5b3V0KG5l
dyBCb3JkZXJMYXlvdXQoKSk7DQoJCQ0KCQljb250YWluZXIuYWRkKHBuZVNwbGl0KTsNCgkJdGhp
cy5wYWNrKCk7DQoJCXRoaXMuc2V0VmlzaWJsZSh0cnVlKTsNCgkJDQoJCUFuaW1hdG9yIGFuaW1h
dG9yID0gbmV3IEFuaW1hdG9yKHdpbmRvdyk7DQoJCWFuaW1hdG9yLnNldFJ1bkFzRmFzdEFzUG9z
c2libGUoZmFsc2UpOw0KCQlhbmltYXRvci5zdGFydCgpOw0KCQkNCgkJVGltZXIgdGltZXIgPSBu
ZXcgVGltZXIoMTAsIHRoaXMpOw0KCQkvL3RpbWVyLnN0YXJ0KCk7DQoJfQ0KCQ0KCUBPdmVycmlk
ZQ0KCXB1YmxpYyB2b2lkIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpIHsNCgkJaWYgKGUuZ2V0
QnV0dG9uKCkgPT0gTW91c2VFdmVudC5CVVRUT04xKSB7DQoJCQl0aGlzLmNhbnZhcy5zZXRDdXJz
b3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLk1PVkVfQ1VSU09SKSk7DQoJCQlT
eXN0ZW0ub3V0LnByaW50bG4oIk1vdXNlIFByZXNzZWQiKTsNCgkJfQ0KCX0NCg0KCUBPdmVycmlk
ZQ0KCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7DQoJCWlmIChlLmdl
dEJ1dHRvbigpID09IE1vdXNlRXZlbnQuQlVUVE9OMSkgew0KCQkJdGhpcy5jYW52YXMuc2V0Q3Vy
c29yKEN1cnNvci5nZXREZWZhdWx0Q3Vyc29yKCkpOw0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJN
b3VzZSBSZWxlYXNlZCIpOw0KCQl9DQoJfQ0KDQoJQE92ZXJyaWRlDQoJcHVibGljIHZvaWQgZGlz
cGxheShHTEF1dG9EcmF3YWJsZSBkcmF3YWJsZSkgew0KCQlHTDIgZ2wgPSBkcmF3YWJsZS5nZXRH
TCgpLmdldEdMMigpOw0KCQlnbC5nbENsZWFyKEdMLkdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTC5H
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpOw0KCQlnbC5nbE1hdHJpeE1vZGUoR0wyLkdMX01PREVMVklF
Vyk7DQoJCWdsLmdsTG9hZElkZW50aXR5KCk7DQoJCQ0KCQlnbC5nbENvbG9yM2YoMC4wZiwgMC4w
ZiwgMC4wZik7DQoJCWdsLmdsQmVnaW4oR0wuR0xfVFJJQU5HTEVfRkFOKTsNCgkJCWdsLmdsVmVy
dGV4MmQoMC4wLCAwLjApOw0KCQkJZ2wuZ2xWZXJ0ZXgyZCgwLjUsIDAuNSk7DQoJCQlnbC5nbFZl
cnRleDJkKC0wLjUsIDAuNSk7DQoJCWdsLmdsRW5kKCk7DQoJfQ0KDQoJQE92ZXJyaWRlDQoJcHVi
bGljIHZvaWQgaW5pdChHTEF1dG9EcmF3YWJsZSBkcmF3YWJsZSkgew0KCQlHTDIgZ2wgPSBkcmF3
YWJsZS5nZXRHTCgpLmdldEdMMigpOw0KCQlnbC5nbENsZWFyQ29sb3IoMS4wZiwgMS4wZiwgMS4w
ZiwgMS4wZik7DQoJfQ0KCQ0KCUBPdmVycmlkZQ0KCXB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1l
ZChBY3Rpb25FdmVudCBlKSB7DQoJCXR4dE1vdXNlUG9zaXRpb24uc2V0VGV4dCgiKCIgKyB0aGlz
Lm1vdXNlTG9jYXRpb24ueCArICIsICIgKyB0aGlzLm1vdXNlTG9jYXRpb24ueSArICIpIik7DQoJ
fQ0KCQ0KCS8vIG5vdGhpbmcgZWxzZSBpbXBsZW1lbnRlZA0KCQ0KCUBPdmVycmlkZQ0KCXB1Ymxp
YyB2b2lkIGRpc3Bvc2UoR0xBdXRvRHJhd2FibGUgZHJhd2FibGUpIHt9DQoJDQoJQE92ZXJyaWRl
DQoJcHVibGljIHZvaWQgcmVzaGFwZShHTEF1dG9EcmF3YWJsZSBkcmF3YWJsZSwgaW50IHgsIGlu
dCB5LCBpbnQgdywgaW50IGgpIHt9DQoJDQoJQE92ZXJyaWRlDQoJcHVibGljIHZvaWQgbW91c2VD
bGlja2VkKE1vdXNlRXZlbnQgZSkge30NCgkNCglAT3ZlcnJpZGUNCglwdWJsaWMgdm9pZCBtb3Vz
ZUVudGVyZWQoTW91c2VFdmVudCBlKSB7fQ0KCQ0KCUBPdmVycmlkZQ0KCXB1YmxpYyB2b2lkIG1v
dXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkge30NCgkNCglAT3ZlcnJpZGUNCglwdWJsaWMgdm9pZCBt
b3VzZU1vdmVkKE1vdXNlRXZlbnQgZSkge30NCg0KCUBPdmVycmlkZQ0KCXB1YmxpYyB2b2lkIG1v
dXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsNCgkJbW91c2VMb2NhdGlvbiA9IG5ldyBQb2ludChl
LmdldFgoKSwgZS5nZXRZKCkpOw0KCX0NCgkNCglAT3ZlcnJpZGUNCglwdWJsaWMgdm9pZCBtb3Vz
ZVdoZWVsTW92ZWQoTW91c2VFdmVudCBlKSB7fQ0KfQ0K
</data>

          </attachment>
      

    </bug>

</bugzilla>