Up to Lgi...
About
Changes:
- Fixed the gel skin DLL naming for debug and release.
- [Linux] Fixed a crash caused by a buffer overrun in the system font detection code.
- [Win32] Fixed command line accents.
- [Win32] Implemented GEdit::Select.
- Added buffer size paramters to lots of functions that work on paths to prevent buffer overruns.
- [Linux] Changed LgiExecute to treat the "program" argument as an executable if it can't be typed (i.e. the file doesn't have read permissions). Which is a reasonable assumption given the situation. LgiExecute can be passed a document and it'll go and find the application associated with that type of file and execute the program to read the file.
- [Linux/Kde] Added a SEGV signal handler to call the KDE crash handler (drkonqi) to output a stack trace.
- [Win32] Fixed GSocketImpl::IsReadable() to return true when the socket has been closed and thus trigger the normal read, which fails and allows the GSocketImpl to go through the normal OnDisconnect procedures.
- Fixed a repaint bug when a top level GTreeItem is removed from the tree.
- [Linux] Added some more prefered and avoided fonts to the GFontSystem's glyph lookup system. Basically the default Redhat 9 fonts look like crap so I prefer any of the windows fonts that might be installed and avoid the worst of the Linux fonts. Microsoft fonts are SOOOO much better than Linux fonts. It's like night and day.
- Changed the GDisplayString font layout to try and use less fonts to make up the string. By looking up the glyph in the font used for the previous character instead of the application font you get longer runs of the same font. Which I've found reduces the chopping and changing between fonts which is a) faster to render and b) looks nicer on the screen.
- GTextView3::DoCase() now sets the dirty flag and notifies it's target that the document changed.
- Made the loading of lr8 dialog resources size the onscreen window down to the pixel. They take into account the current size of the window decor and make the client area exactly the same size as seen in LgiRes. The controls are now also exactly the same number of pixels offset from 0,0 in the client area when on screen compared to when seen in LgiRes.
- Fixed a bunch of memory leaks.
- Implementated VK_NEXT, VK_PRIOR, VK_HOME and VK_END in GTree::OnKey.
- Fixed a crash in GTree shutdown code.
- [Linux] Fixed GSocketImpl::IsReadable().
- Moved all the HAS_???? defines into Lgi.h and documented them. They also now work better.
- Wrote masses of doxygen documenation for Lgi.
- [Linux] Added a work around to GSocketImpl::Accept to return when you delete the listening socket. On windows the accept call returns from blocking with you delete the listening socket... on linux it doesn't. I think this is a bug in the sockets code. Or else it's some stupid "it's supposed to work like that" crap.
- [Linux] Fixed LgiMsg using a fixed length buffer to compose the text of the message box. It now dynamically allocates the exact amount of memory needed.
- Finally did the "Big Code Reorganisation". Which means moving all the source into sub-directories of the main Lgi directory. i.e.
- Lgi
- docs
- html
- include
- common
- win32
- linux
- beos
- src
- common
- win32
- linux
- beos
- docs
- Lgi
- [Linux] Uncommented out the GView::SetCursor implemenation and fixed up the cursor images to look nice. The cursor resources are stored in a graphic file and them compiled into the code so that you can't lose them. Any time edits need to be made, the procedure is explained in the src/linux/Lgi/GView.cpp file.
- Moved all the widgets out of GWidgets.cpp into their own files. Also I've made available native Win32 versions of the controls in src/win32/Widgets for those that want them. The owner-drawn versions are much better anyway, but there are some valid reasons for using the Win32 controls. Although you'll have to remove the controls from the Lgi project and add the Win32 ones yourself. Also by default #include "Lgi.h" doesn't include all the widgets, you have to do that in separate includes. This is to improve rebuild times in the case that you change something in one of the widget header files.