Project

General

Profile

Bug #8770

ENTRY event is not sent for a frame when window receives focus

Added by Vladimir Tsichevski about 2 months ago. Updated 5 days ago.

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

80%

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

8770.p Magnifier (1.13 KB) Vladimir Tsichevski, 05/14/2024 03:36 PM

functions.i (1.71 KB) Vladimir Tsichevski, 05/14/2024 03:50 PM

printEntryLeave.i (134 Bytes) Vladimir Tsichevski, 05/14/2024 03:50 PM


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 about 2 months ago

Then a window receives focus, and no field-level was in focus before in this window (for example, when a window is just opening), OE searches the window tab ring for a suitable field-level to set focus on.
For all suitable field-levels in the tab ring, OE sends ENTRY events, and selects the first field-level, for which the trigger code does not return NO-APPLY.

This seems to work the same in OE and FWD.

But for some reason, OE sends also an additional ENTRY event to the frame of the first tested field-level after the selection is done, and the focus is set to the suitable field. This trigger return is ignored.

No such event is sent in FWD.

The attached 8770.p example demonstrates this difference: in OE 3 ENTRY events are reported, while in FWD only 2 events are reported.

#2 Updated by Vladimir Tsichevski about 2 months ago

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

#3 Updated by Vladimir Tsichevski about 1 month ago

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

Fixed in 8809a rev. 15240.

#4 Updated by Vladimir Tsichevski about 1 month ago

  • Status changed from WIP to Review

#5 Updated by Vladimir Tsichevski about 1 month ago

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

The following code in TC.waitForWorker was probably intended to send ENTRY to the frame in question, but, at least in the case of focus was set with focusUndefImplicit, does this incorrectly:

      // or else generate frame ENTRY event, only if previous focus is not
      // part of this frame
      else
      {
         Frame frame = UiUtils.locateFrame(UiUtils.getCurrentFocus());
         if (saveFocus == null || frame != UiUtils.locateFrame(saveFocus))
         {
            if (frame != null)
               sendEntry(frame);

After the patch, the ENTRY event sent by the code must not be sent anymore.

Since this code works for all cases, not only for focusUndefImplicit, an additional investigation is required, to get the right way to fix this.

#6 Updated by Vladimir Tsichevski about 1 month ago

The (incomplete) fix moved from 8809a to in 8770a rev. 15242.

#7 Updated by Vladimir Tsichevski 20 days ago

  • Related to Bug #8872: WAIT-FOR with FOCUS explicitly specified: NO-APPLY return from ENTRY trigger must be ignored added

#8 Updated by Vladimir Tsichevski 20 days ago

  • Related to deleted (Bug #8872: WAIT-FOR with FOCUS explicitly specified: NO-APPLY return from ENTRY trigger must be ignored)

#9 Updated by Vladimir Tsichevski 14 days ago

  • Assignee set to Vladimir Tsichevski

#10 Updated by Vladimir Tsichevski 7 days ago

After the initial patch the ENTRY event is sent twice to the innerFrame in the example.

The sending code removed in the 8770a rev. 15304.

Now the 8770.p displays the expected results, but the removed code is used in other execution paths, e.g. when focus is explicitly passed to WAIT-FOR, so the code in focusXXXExplicit must be corrected either.

#11 Updated by Vladimir Tsichevski 5 days ago

To complete this change testing, the change in 8809a must be also applied.

Also available in: Atom PDF