Hi,

I have some issues and an enhancement report here.
I did not find any related issues in qooxdoo's bugzilla, so I will most
probably add them later on.

1. The MTableContextMenu mixin has a problem, when the Handler method is called
   and that returns <false>.
   The API doesn't exactly tell about the return values of the context menu
   handler, but it has to be boolean. The problem arises, when this method does
   not return <true>. I that case the context menu will never be displayed
   again.
   The playground example[1] shows this: The handler method provided as 2nd
   parameter to MTableContextMenu::setContextMenuHandler does return <true> or
   <false> depending on the 'oddity' of the row number.
   To reproduce the issue:
   As long as you only right-click on _even_ rows of column 1 (indicated by the
   boolean column), the context menu works correct.
   As soon as you right-click on one _odd_ row in column 1, the handler is
   called and returns <false> so the menu is not shown (O.K. so far).
   After this the menu will never show up again.

   Too bad that the playground does not show runtime errors here, because the
   cause of this issue is the line that tries to dispose an already disposed
   contextMenu (Ultimately an error like 'container is null' will show up in
   Widget)
   See the attached Patch-File for (my) fix of this issue.

   I think this is a bug, that I will add to bugzilla.


2. The context menu does pop up on header-cells as well. It pops up on _every_
   column header and in those cases the handler method is not called at all.
   My current workaround:
   <code>
     // ...somewhere in the contexMenuHandler method...
     contextMenu.addListenerOnce("disappear", function () {
       table.setContextMenu(null);
     });
   </code>
   This could (should?) be included in the mixin as well.

   I think this is a bug as well, that I will add to bugzilla.


3. The enhancement of qx.ui.table.MTableContextMenu:
   Wouldn't it be nice, if we could also provide a context-object (aka 'this')
   to the MTableContextMenu::setContextMenuHandler(col, handler) method?
   The provided handler is currently always called in the context of 'Table' I
   think.


4. And by the way...These lines (34-39) in qx.ui.table.MTableContextMenu seems
   to be a relict of the past, don't they?:
   <code>
     // Stop any previously running timer
     if (this._contextMenuTimer)
     {
       this._contextMenuTimer.dispose();
       this._contextMenuTimer = null;
     }
   </code>
   I can nowhere find this protected "contextMenuTimer" in the framework code.
   But this is really a _very_ small (cosmetic) issue.


I will submit this bugs/enhancements[2] in a couple of hours to give the forum
a chance to tell me that I've missed something or that there is already a bug
about some of these.

Cheers, and [3],
  Peter


[1] http://tinyurl.com/375obws
[2] ...maybe except the 4th point of my list ;)
[3] sorry for this loooong post ;) Next time I should maybe post several
    smaller ones...

Index: MTableContextMenu.js
===================================================================
--- MTableContextMenu.js        (Revision 96)
+++ MTableContextMenu.js        (Arbeitskopie)
@@ -39,7 +39,7 @@
         }
 
         // Dispose of any previously existing context menu
-        if (this._contextMenu)
+        if (this._contextMenu && !this._contextMenu.isDisposed())
         {
           // Dispose of the context menu.
           this._contextMenu.hide();
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to