Project

General

Profile

Bug #2861

Bug #2677: fix drawing and functional differences between P2J GUI and 4GL GUI

fix widget z-order inside frame, when focus is switching - there are differences between ChUI and GUI clients

Added by Constantin Asofiei over 8 years ago. Updated over 7 years ago.

Status:
Closed
Priority:
Normal
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:

History

#1 Updated by Constantin Asofiei over 8 years ago

When focus is switching between overlapped widgets inside the same frame (these widgets may be a nested frame, too), in ChUI the widget/nested frame reflecting the new focus is brought on top, in z-order. In GUI, the z-order does not get changed.

See uast/frame-z-order/nested-frames.p

#2 Updated by Constantin Asofiei over 8 years ago

  • Status changed from New to WIP
  • Assignee set to Constantin Asofiei

#3 Updated by Constantin Asofiei over 8 years ago

The issues in nested_frames.p are not exactly z-order related. The problem is with explicit widget drawing, when there are stacked widgets, on the same location, and the widget is not the one on top (there are other widgets intersecting it). Code like this, in ThinClient.processEventsWorker:15166:

                     src.draw();
                     src.requestSync();

draws the widget directly, regardless if there are other widgets on top of it. This can be seen also in TC.widgetDrawingOn/Off usage.

I think the solution is to add a clipping rectangle to the driver, with only the widget's visible part.

#4 Updated by Constantin Asofiei over 8 years ago

No, adding a clipping rectangle with only the widget's visible part will not work - as the visible part may not be a rectangle at all!

So, the approach is this: all direct drawing in ThinClient is replaced with eventDrawingBracket and repaint() calls, with widgetDrawingOn() and widgetDrawingOff() APIs being obsolete (thus removed).

This fixes nested-frames.p, I'm testing the GUI screen now. If the screen is OK, next I will commit these changes and start a runtime testing.

#5 Updated by Constantin Asofiei over 8 years ago

  • Status changed from WIP to Review

2677b rev 10966 contains a fix for this and #2878.

I'm starting runtime testing with this revision.

#6 Updated by Greg Shah over 8 years ago

Code Review Task Branch 2677b Revision 10966

The changes are good. The resulting code is much cleaner. Hopefully the regression testing will not find any issues.

#7 Updated by Constantin Asofiei over 8 years ago

The changes exposed an existing issue in Frame.drawDownFrame: frameScroll.minimumSize reports incorrect height; instead, frameScroll.getScrollableSize needs to be used.

#8 Updated by Constantin Asofiei over 8 years ago

2677b rev 10968 fixes the regression in note 7. Runtime testing is in progress again.

#9 Updated by Constantin Asofiei over 8 years ago

Runtime testing passed with only false negatives (I assume). I'm running main part again to confirm.

#10 Updated by Constantin Asofiei over 8 years ago

Second run has only a common failure: GSO 17's gso_17.sum report has an extra row... I'm inclined to assume is a false negative, I don't see how my changes can impact this.

#11 Updated by Greg Shah over 8 years ago

  • % Done changed from 0 to 100
  • Status changed from Review to Closed

Agreed, this is done.

#12 Updated by Greg Shah over 7 years ago

  • Target version changed from Milestone 12 to GUI Support for a Complex ADM2 App

Also available in: Atom PDF