I want to supply some more informations about the current FPGUI implementation for AROS and about the lcl problems.
First about known Problems (starting from worst):
– sometimes a dialog window freezes complete AROS, when closed via OK button -> workaround: use X of window to close
– crashes in HandleAlignments there are some problems with alignment resulting in circular calling of size function -> there are some code to prevent this but it seems its not always working, big windows with much items and much alignments still produce crashes in “HandleAlignments”
– There are 2 types of windows in AROS, “normal” windows and GimmeZeroZero(GZZ) windows, the only difference is that the 0,0 postion on a normal window is on top left edge of window decoration and for GZZ 0,0 is top left edge of user area. Atm I use GZZ for windows without a parent -> so real windows with decoration and so on. and normal windows for all items inside the window(Buttons, Labels and so on). So far ok, now we approach the problem, I guess. Popupwindows like Menus or combobox windows have no parent either but they are borderless. Now open a menu by clicking on the entry, the menu opens some pixels to high but the mouse position is at the real position so some pixels under the drawn position. Now guess how many pixels… right, the displacement is exactly the width of window decoration. I changed this behaviour already some times… but always i get the problem: I get this displacement of menus or the click on Buttons and so on does not work anymore because of displacement. Needs a little bit more thinking about “window” types I guess.
– File requester does not work when starting on drive level, When choose for example “SYS:” an empty list is shown, sometimes a list of SYS: is shown but when click an entry it says can’t open it. -> Path converting routines still not working for aros well. (maybe change the filerequester to native AROS but it would need a big impact to the “core” fpgui)
– Mouse over, MouseEnter MouseLeave still no way to implement the mouse enter and mouse leave routine and send the mouse move event to the item under the mouse, instead of the one which have the focus (except the capture mouse routine is called). -> This needs some thinking I guess and again the problem -> which item is under my mouse pointer… which I skipped by changing all items to windows, but now it catches me again, I just hope to find the window under cursor is easier, still had no time to check.
– change of focus with Tab does not change focus in AROS, create 2 edits typesomething in the first, press TAB type some more, cursor is drawn the the 2nd edit but new chars in the first edit. -> needs debugging
– Drag and Drop does not work -> no idea how to implement currently because I dont know how this is working in AROS/Amiga
– Splitter does not work well -> needs some debugging to see why you can’t grab the splitter to drag it.
– Mouse Pointer, The change of mouse pointer is not that easy on AROS (except busy pointer)
– Missing concept of modal windows (The “modal” windows are just normal windows atm. so all other windows are fully functional)
– Missing Clipboard, I just never cared about up to now (at AROS or Amiga i never used up to now)
– Timers does not work well atm, I’m bound to INTUITICKS recieved by window around one per 50-100 ms, no extra event for timer events -> thinking about writing an Interrupt routine for Timer and send a IntuiMessage to the window.
– Hiding of windows is not possible in AROS atm. There is a function for it in intuition.library but it has some strange effects if the hidden window is a child window (has a parent) complete aros desktop get strange effects (see also Thread in AROS Forum from 2009! the bug is still there) -> Workaround: I change the size of hidden windows to 0,0, which will make strange effects from time to time. An other thing I could do is to change the parent to an hidden window but I’m not sure hpw to change a parent of a window, must first try out in a seperate program, I guess.
canvas drawing problems:
* Line thickness: seems the standard draw routines only support single pixel lines, there is an option for line thickness but it simply does nothing.
* Arc: I did not find a function to draw a part of a circle or even a filled circle, Area functions could be the answer but I had no time to care about because its not a serious problem at all.
* Fonts: Aros/Amiga fonts are a little bit different from other systems. Normaly on Aros font files only contents a single font style normal or bold sometimes italic. Some fonts have the possibility to be changed to Italic, but changed to bold I never found such font, its always saved as a separate font file.-> Could be solved by including possibility to load TrueType fonts.
* I included buffered painting to the Canvas routines, thats the reason it becomes much faster than before, but its still rather slow (compare examples/sprites on Aros and linux or so). The reason is still the difficult way to use colors in aros, with obtaining pens and so on. Sadly it seems there are no new functions directly support chunky modes and 24 bit…. When first copy everything into a non visible RastPort and then justBlit it to the final RastPort, the colors are just not there.. everything is black except 4 first colors. An other thing is masking which is also not easy in Aros with standard procedures.
A Sidemark, the Source Editor Maximus working rather nicely now (of course not completely). The UI Designer works even better but the source created can not be compiled due of wrong(old) uses, but this is also a Linux not working.
Lazarus changed a lot this days, I think to get to the 1.0 release. Sadly this makes for me very difficult to compile LCL for AROS (MUI or FPGUI) because now there are much function special for Linux/Windows. As I begun to check the problems I noticed the ,ost of their new things are related to 64Bit and WideStrings,UTF8 and such things…. and no fallbacks to the original functions of Freepascal. At the Lazarus project they have a very bad behaviour to define “not Windows” = “Unix” and “not Unix” = “Windows”which is for sure not true for AROS. So much work for me to change all this statements. but finally I was able to compile lcl and some demoprojects
This compiled lcl is not included in the current release (28.12.2012).
– fpgui interface for LCL still very unfinished, TLabel for example still not working, OnPaint events not fired
– perhaps useful for debugging my fpgui things, because Radiobutton does not work but the LCL gives me an error message I could follow to see the reason, perhaps here also a check in Linux could be helpful
– A new “customdrawn” interface beside fpgui this time directly in lcl, which could be interresting as alternative to fpgui (but changing again…? I’m rather happy that fpgui is working somewhat). The point at fpgui I like is, that the corelib abstraction layer is really simple to understand, so I can concentrate on the AROS problems of the implementation. At LCL this custom drawn interfaces looks much more complicated to understand even the functions should be comparable