Project

General

Profile

Bug #8586

Fields are not in FIELD-GROUP until they are enabled

Added by Vladimir Tsichevski 3 months ago. Updated 13 days ago.

Status:
Test
Priority:
Normal
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:

Related issues

Related to User Interface - Bug #8673: Deduce the logic behind OE focus management and implement in FWD WIP

History

#1 Updated by Vladimir Tsichevski 3 months ago

The program:

DEFINE BUTTON focusable4.
DEFINE BUTTON focusable1.

DEFINE FRAME innerFrame
  focusable1
  WITH SIZE 60 BY 2
  AT ROW 3 COL 1.

DEFINE FRAME outerFrame
  focusable4 
WITH SIZE 80 BY 15.
FRAME innerFrame:FRAME = FRAME outerFrame:HANDLE.

// Print frame tab ring
PROCEDURE PrintTabRing:
  DEFINE INPUT PARAMETER fr AS HANDLE NO-UNDO.
  DEFINE VARIABLE w AS HANDLE NO-UNDO.
  MESSAGE "Tab ring" fr:NAME.
  w = fr:FIRST-CHILD:FIRST-TAB-ITEM.
  DO WHILE w <> ?:
    MESSAGE w:NAME.
    w = w:NEXT-TAB-ITEM.
  END.  
END PROCEDURE.

RUN PrintTabRing(FRAME outerFrame:HANDLE).
ENABLE focusable4 WITH FRAME outerFrame.
RUN PrintTabRing(FRAME outerFrame:HANDLE).

WAIT-FOR GO OF FRAME outerFrame.

This program prints frame FIELD-GROUP contents before any fields are enabled in the frame and after.

In OE it prints focusable4, innerFrame before any fields are enabled in the frame and innerFrame, focusable4 after (field, which is explicitly enabled, moved to the end of group, which matches the docs).

In FWD it prints nothing before any fields are enabled in the frame and innerFrame, focusable4 after.

#5 Updated by Vladimir Tsichevski about 1 month ago

  • Related to Bug #8673: Deduce the logic behind OE focus management and implement in FWD added

#6 Updated by Vladimir Tsichevski about 1 month ago

  • % Done changed from 0 to 50
  • Status changed from New to WIP

The problem seems to be in FieldGroup.getExtremeTabItem() method, where only realized items are selected:

   private GenericWidget<?> getExtremeTabItem(boolean first)
   {
      ...
      while (iter.hasNext())
      {
         GenericWidget<?> widget = iter.next();
         if (widget._isRealized() && widget.isTabStop().booleanValue())
                   ^^^^^^^^^^^^^^^^^
         {
            return widget;
         }
      }

      return null;
   }

#7 Updated by Vladimir Tsichevski about 1 month ago

  • Status changed from WIP to Review
  • % Done changed from 50 to 100

I fixed the private FieldGroup.nextTabItem() in similar way.
Now the complete tab ring can be traversed from 4gl for unrealized widgets.
The branch 8586a contains the fix in rev. 15256. Please, review.

#8 Updated by Greg Shah about 1 month ago

Hynek: Please review.

#9 Updated by Hynek Cihlar about 1 month ago

  • Status changed from Review to Internal Test

8586a revision 15256,

Nice simplification of nextTabItem!

The changes also affect other use cases like ENABLE and PROMPT-FOR. See how getExtremeTabItem gets called as a result of these statements and try to come up with a test case to make sure it still works.

The changes should be ChUI regression tested.

#10 Updated by Alexandru Lungu 23 days ago

Vladimir, are the changes in 8586a going to fix #8068 as well. If so, what testing do you think are required for this?

#11 Updated by Vladimir Tsichevski 23 days ago

Alexandru Lungu wrote:

Vladimir, are the changes in 8586a going to fix #8068 as well. If so, what testing do you think are required for this?

No, unfortunately fixing 8068 requires serious re-designing the data model under FWD focus management,

#12 Updated by Greg Shah 14 days ago

  • Assignee set to Vladimir Tsichevski

Have you completed the ChUI regression testing?

#13 Updated by Vladimir Tsichevski 14 days ago

Greg Shah wrote:

Have you completed the ChUI regression testing?

Not yet.

#14 Updated by Vladimir Tsichevski 14 days ago

Vladimir Tsichevski wrote:

Greg Shah wrote:

Have you completed the ChUI regression testing?

Not yet.

ChUI regression testing complete. No new test failures detected.

#15 Updated by Greg Shah 13 days ago

  • Status changed from Internal Test to Merge Pending

This can merge to trunk now.

#16 Updated by Vladimir Tsichevski 13 days ago

Greg Shah wrote:

This can merge to trunk now.

Done. Trunk rev. 15302.

#17 Updated by Greg Shah 13 days ago

  • Status changed from Merge Pending to Test

Also available in: Atom PDF