Kristian Lyngstøl's Blog

Multihead updates and mouse panning

Posted on 2007-06-10

As I mentioned in my last update, I've been focusing on improving the normal multihead support. It required some minor and anticipated refactoring of the code that has now been completed.

I expect there to be some minor glitches, I'll try to squash them as I spot them, but for now, it seems to work well. Zoom can now zoom individually on each head, and it should deal with the mouse correctly, and set the zoom level/target correctly when targeting a window. If you are using multiple heads, let me know if there are any improvements you feel I should make here; Due to the unusually warm days we've been having in Oslo the past week, I've been doing most of my work outside in the shade, and thus have not been using multihead as much as I would've wanted.

An added benefit of the refactoring is that it will now be fairly trivial to store and restore zoom states on the fly. The changes moved the state of a zoomed area into it's own data structure, so it's now only a matter of storing a copy of this somewhere and later restoring it, to set specific zoom-targets in a very proper and generic fashion.

I've also added some mouse panning code and restraining. The restraining is not pretty: I can't grab input, nor would there be any window (though I could create one) to restrain the mouse to, so I'm left with warping the pointer whenever it moves outside of the visible area until I come up with something better. Mouse panning seems to work well, though: By moving the mouse outside the zoomed area, the zoomed area will tag along. This has introduced some minor glitches I'm currently tracking down, but nothing too serious.

Along with this, I've also had an API of some sort in mind while working. I haven't come up with something specific yet; I've gotten a few good mails with advice on how to proceed, and I'm keeping all doors open until I've played more with AT-SPI/ATK, Gnome-mag and Orca. The code I'm writing is getting more and more suited for implementing an API though.

As for current plans, I have to focus on my last exam in economics on Thursday. Somehow, the PHP exam last Monday and databases exam on Friday required less preparation than the only one not directly related to computer technology. I expect be doing some minor tinkering and experimenting with AT-SPI and DBus along with tweaks and polish when possible, though.