#81 TextEditor stops gui refresh during some notification chains

closed
nobody
5
2012-09-17
2008-07-21
No

I've written an attached test program which
shows this problem, it uses texteditor mcc, thebar and MUI/Zune
of course.
We want change label of title button, voice of list and a label on two text
obj (into counter class).

When you write on text editor some attributes of mcc change and active some
notification chains, for example:

MUIA_TextEditor_HasChanged --> MUIA_pagED_HasChanged -->
MUIA_grpED_HasChanged --> MUIM_MGroup_AskMeChangeLabel (this method sets
MUIA_grpED_BLabelSel, and MUIM_ListED_Insert)

with this notification chain we make bold the text label of list voice and
title button;

MUIA_TextEditor_CursorX --> MUIA_pagED_CursorX --> MUIA_grpED_CursorX

here we have at this point two notification branches, the first one sets
MUIA_Counter_NColumn, which changes text label of one of text obj
(counter), the second one instead sets MUIA_MGroup_CursorX which enables
thebar SelectAll button.

There are other notification chains which have the same pourpose: enable
some buttons on thebar obj, change value of two text objs labels.
Into test code you have debug code which shows how fine final attributes of
notification chains are setted and to see how mui/zune doesn't update (refresh?)
itself in that cases...

In each Amiga OS these notification chains work well, they setted in right
way all attributes in each chain, however on OS4 and MOS (MUI3.9 and MUI4) when a
MUI graphic attribute change in this situation of "many" notification
chains we have an update of user interface which shows the changes (button and
list voice labels became bold, thebar buttons are enabled), on MUI3.8 we have
olny and update of label button, instead on MUI/Zune we haven't any graphic update.
If you resize program windows you will see all changes in MUI3.8 and Zune,
so it seems a problem of refresh joins to notification chain.

This problem is present olny if is a TextEditor object to start the notification
chains,in fact if you insered instead of it a button object and you attach to
MUIA_Pressed, FALSE all notification chains, when you press that button on GUI
all graphics updates are done.

You can easily to verify this insered into file paged.c insead of

define ENABLE_TEXTEDITOR TRUE, #define ENABLE_TEXTEDITOR FALSE. In this way

you'll have a button instead of a texteditor, and all notification chains just
setted in right way.

Discussion

  • Notification handling is done by MUI alone. Any custom class can just set() an attribute and must rely on muimaster.library to handle and trigger all notifications correctly. If MUI3.8 fails to do this there is absolutely nothing that TextEditor.mcc or any other class can do against this. MUI3.8 is simply old, buggy and outdated.

     


Anonymous


Cancel   Add attachments