Ticket #2919 (closed task: fixed)

Opened 5 years ago

Last modified 9 months ago

Reimplementation of widget subsystem

Reported by: andrew_b Owned by: andrew_b
Priority: major Milestone: 4.8.18
Component: mc-core Version: master
Keywords: Cc:
Blocked By: Blocking:
Branch state: merged Votes for changeset: committed-master

Description

Frist stage:

  1. Derive dialog from widget.
  2. Unification of widget and dialog callback functions and message handling.
  3. Enhance widget capabilities.
  4. New QuickDialog? engine that simplifies dialog building.
  5. Build dialogs in normal order only: place widgets from top-left down to bottom-right.

Change History

comment:1 Changed 5 years ago by andrew_b

  • Status changed from new to accepted
  • Owner set to andrew_b

comment:2 Changed 5 years ago by andrew_b

  • Branch state changed from no branch to on review

Branch: 2919_dlg_as_widget (parent: master).
Initial changeset:6abcba470d3934c091d9b498ed48b3063261abfb

Last edited 5 years ago by andrew_b (previous) (diff)

comment:3 Changed 5 years ago by andrew_b

  • Blocking 64, 1381 added

comment:4 Changed 5 years ago by slavazanko

  • Votes for changeset set to slavazanko

comment:5 Changed 5 years ago by angel_il

  • Votes for changeset changed from slavazanko to slavazanko angel_il
  • Branch state changed from on review to approved

comment:6 Changed 5 years ago by andrew_b

  • Status changed from accepted to testing
  • Votes for changeset changed from slavazanko angel_il to committed-master
  • Resolution set to fixed
  • Branch state changed from approved to merged

Merged to master: [47fc9f669f46ea9735e139eb871a65cc157fb94b].

git log --pretty=oneline f45f155..47fc9f6

comment:7 Changed 5 years ago by andrew_b

  • Blocking 64, 1381 removed

comment:8 Changed 4 years ago by andrew_b

  • Milestone changed from 4.8.7 to Future Releases

comment:9 Changed 4 years ago by andrew_b

  • Status changed from testing to reopened
  • Resolution fixed deleted

comment:10 Changed 9 months ago by andrew_b

  • Votes for changeset committed-master deleted
  • Branch state changed from merged to on review
  • Milestone changed from Future Releases to 4.8.18

The next stage: refactoring of widget select/deselect and focus/unfocus:

  • add WOP_SELECTABLE option that shows whether widget can be selected (WInput, WCheck, etc) or not (WLabel, WGauge, etc). Test this option instead of callback call;
  • add WST_FOCUSED state and use it instead widget-own states (WListbox::focused, WButton::selected, WTree::active, etc). Test this option instead of callback call;
  • get rid of multiple widget redraw. In many cases messages MSG_DRAW and MSG_FOCUS (and/or MSG_RESIZE) are sent to widget in series. Handling these messages, widget is redrawn twice (for example, see input_callback():
         case MSG_RESIZE:
         case MSG_FOCUS:
         case MSG_UNFOCUS:
         case MSG_DRAW:
             input_update (in, FALSE);
             return MSG_HANDLED;
    
    MSG_DRAW message handler must be the only place where widget should be drawn. Widget should not draw itself in other message handlers.

Branch: 2919_widget_focus_refactoring
Initial changeset:85040195fabf14534ad47a01b4356cbcad1940bf

Some dialogs are located in top-left corner. This bug is fixed in 3641_cleanup branch.

comment:11 Changed 9 months ago by andrew_b

  • Votes for changeset set to andrew_b
  • Branch state changed from on review to approved

comment:12 Changed 9 months ago by andrew_b

  • Status changed from reopened to closed
  • Votes for changeset changed from andrew_b to committed-master
  • Resolution set to fixed
  • Branch state changed from approved to merged

Merged to master: [4d6ea432829250f32bfecba3bd7eadd35a546b09].

git log --pretty=oneline 9c3fe04..4d6ea43
Note: See TracTickets for help on using tickets.