This the main topic for project status and feature requests and other project-related feedback.
Please behave, and thanks for participating.
'Big Bad Bombastic Bob'
Project status, as of April 9, 2012
1. Resolved 'focus' issues for modal dialog box. Tested on Gnome 2.32 and fluxbox 1.3.2 .
Summary: Window managers do not always honor 'XSetInputFocus' requests, and will even ignore them if they are not aware that you are trying to manage the window focus yourself. To facilitate this, I added an API to send delayed messages to the application, and a 'SET_FOCUS' client message. The application will then send a _NET_ACTIVE_WINDOW message to the 'root' window prior to doing the 'normal things' you would expect to do in order to set input focus, raise, and map a window. By using a delayed message sent to the application, you avoid 'race condition' issues that might actually be caused BY the window manager. In short, it should work reliably on a wide variety of window managers. It also allows you to explicitly take focus back to your application after you close a window that was previously an active window, and you already have other top-level windows open.
2. Made minor corrections to documentation, and posted doc tarball to 'files' area.
3. Made documentation web site temporarily available, http://bigbadbob.name/X11workbench
Project status as of 4/15/2012
1. created 'splash' screen API, added to startup for the main X11workbench application
2. Refactored DT API's (draw_text.h) and modified STATIC Expose handler to use DTDrawMultiLineText rather than simple XDrawText call. DTDrawMultiLineText now includes the ability to handle underscore characters when they are used for underlining the 'next' character in the string.
3. Updated screen shot to show properly 'line wrapped' character string in 'About' dialog. Original string had no line feeds in it. 'line wrapped' screen displays on two lines within the bounding area, left justified, vertically centered.
Bug fix for 'GenericEvent' (not defined on older versions of X11), and added support for when libXpm is not present. Tested on Windows 7 using 'SFU/SUA' (aka Interix) which does not have libXpm _AND_ does not define 'GenericEvent' in the X11 header files.
NOTE: still recommended to have libXpm installed, if possible. The 'workaround' support has not been fully tested, though it does appear to work pretty well. Conversion of the mask to binary bitmap format (as well as ZPixmap color format) may NOT be 100% reliable on all platforms at this time.
continued effort on maintaining maximum compatibility with minimal dependency load forced a major decision to use XpmXXX APIs rather than the Xft library. Xft is NOT present on all platforms, in the same way that Xutf8XXX APIs are not present on all platforms. So the text rendering helper functions will invoke XpmXXX APIs in hopes that the raster fonts are capable of handling multi-byte character strings (or optionally, UTF8 strings) that contain unicode characters for at least SOME internationalization. The font selection has been updated to include creating a 'Font Set' that strips off the character set designator (i.e. ISO8859-1) and substitutes a "*-*" match for the font set, which causes the font set to include the original font AND all of the other 'matching' fonts for different character sets. This is probably the most easily implemented method of doing this without going to an external library like Xft .
I may consider a compile option to use Xft in the same way you can use libXpm, since it appears that Interix / SFU / SUA is the ONE thing that doesn't have Xft.
Also the documentation is a bit better, with cleanup and improvements.
current status: I have not abandoned this project, I'm simply working on a lot of different things and I now have some time to devote to this project again. There are a few UI bugs that need to be addressed for the various dialog boxes [particularly the 'file open' dialog] and once these are usable I should be able to start on the edit windows.
still 'active', need to update source files with minor fixes. the toolkit seems to be the biggest challenge. once that's complete, everything else falls into place. Amazingly after all these years, nobody else seems to be stepping into this obvious need among X11 developers.
FINALLY got a chance to get the clipboard working!
The X11 clipboard handling is a little strange. in short, the only way to do it right is to spawn a separate thread with its own message/event handler and a private window in order to deal with all of the messaging needed to get the clipboard to work.
At this point, basic clipboard (and associated 'Selection') support is working. LARGE clipboard data [that would require 'chunking'] is not yet supported.
I have tested the clipboard operation with a couple of applications and so far so good. It's till a little quirky and I'll address those quirks later.
This was a huge roadblock to the project. I'm glad it's (mostly) solved. It's such a necessary feature, I had no choice but to make it work.
ADDITIONAL SUPPORT FOR THREADS AND SYNCHRONIZATION
Near the end of 'platform_helper.h' you'll find a number of new APIs for thread and synchronization support. This is basically wrappers for 'pthread' functions for X11. Intent is to make Win32 equivalents at some point in the future, and of course the code already reflects some of that.
Additionally there are some reserved 'print' API functions. The intent is to support printing via some kind of 'metafile' or pixmap. The need to work with all kinds of things (including CUPS, LPD, etc.) means a lot of work in the future, but some of the preliminary research suggests it won't be THAT bad. The hardest part will be in finding out what you have installed and running the appropriate "things" with caveats, test on mutliple distros, etc.
THIS along with the clipboard support is a major update to the project. I shall spend a bit more time on it now that THAT is over with. I just needed some time to decide how to work with it. Any luck and this will release before Wayland.
added features needed to make the editor 'work'. still cannot save or open files; however, the basics of the editor appear to be working as expected, including the ability to highlight text AND put the cursor wherever you want it to go, 'autoscroll' to move the viewport, and other things of that nature.
still need to integrate scrollbars with the document view.
additionally, the 'child frame' is locked in with the tabs, and can assign a different menu, and even do some default menu processing for you. As an example, the 'edit' menu items are (nearly) all handled by the child frame itself. Unfortunately they don't actually DO anything right now, but they will in the near future (things like copy/paste to/from clipboard).
the intent is to make the editor work reliably, then support syntax highlighting for various languages, as well as hard vs soft tabs (auto-config by file type).
once that is done, there will need to be some application-specific 'child frame' windows to edit things like:
a) project settings
b) dialog boxes
c) menu resources
d) pixmaps (this could be in the library rather than part of X11workbench)
additionally, GDB integration for debugging needs to happen. Setting breakpionts, viewing breakpoints, stack frames, and other things need to happen automatically based on the function you are pointing to. This may mean adding another 'tool bar' at the bottom, to manage GDB status and commands [or else it can be a floating 'tool window', whichever]
so lots of things left to do.
also there are a few dialog box controls (like tree, combo boxes) that need to be completed.
project not abandoned, just on the shelf for a while. I recently updated the doxygen version I've been using, so I'll need to test against that to make sure context help is still working properly, and then update the online documentation over on github.
Some minor tweeks to the code, here and there, as I test things. Need to complete the text editing and scrollbar code for the main edit window. Clipboard operations are mostly working, and so is text entry [up to a point]. Getting the edit window to scroll properly, and getting the file save/load operations to work, would make this an actual 'useful' editor (and meet a lot of the MINIMUM functionality).
Log in to post a comment.