Zorba the Hutt (zorbathut) wrote,
Zorba the Hutt

the fun of custom windowing libraries:

I double-click someone's name on Trillian, and the chat window pops up and immediately vanishes again.


I try again. Same result. A few more times just for fun.

I finally figure out what's happening. It's popping up in exactly the right place for me to hit the "close" button. Now, Windows' built-in windowing libraries are smart enough to handle this correctly - the window will only close if you call a MouseDown event on the button (i.e. if you click it, rather than just happening to have the button down with the pointer over it), and the underlying window - the one I originally clicked on - would eat the MouseDown event before the window that's being created would have a chance to see it.

I don't honestly know which Trillian is screwing up on - it's possible that it's somehow passing the MouseDown event to the child window, and it's also possible that the window is merely noticing "oh, someone's holding the button down!" (Testing by dragging from the text window over the close box indicates that it's probably the former, but I don't know for certain, there are too many variables.) However, this is another of those "why did you reinvent the wheel?" situations.

Custom windowing libraries are 99% of the time Bad Mojo, as is skinnability. Sure, it's pretty, but it absolutely slaughters usability. How would it feel if every single program you used had different interface semantics - if "enter" on one program was the default option, but you had to use "space" on another, and they all had different positions and icons for the "minimize" "maximize" "close" buttons, and so on and so forth?

A lot of people don't know this, but both Windows and MacOS have *very* strict and detailed usability documents, going over everything from button placement to naming conventions, and there's a *reason* for this. (Interesting fact: MacOSX violates many of their usability documents and ignores others, as do many programs written for MacOSX. Of course, so do many programs for Windows, but the OS itself is extremely consistent in that case.)

Note that even if an interface *feels* like it's just as fast with the skin, that doesn't necessarily mean it is - studies have shown that humans are absolutely horrible at judging themselves on this, sometimes not noticing even a 50% productivity decrease.

You gotta love all the parts of CS that nobody notices.
  • Post a new comment


    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.