I'm having a little trouble adjusting the part of the code that is responsible for "main cursor is leaving the main window, so deactivate the active tool". I've found gdisplay_update_cursor() , called by gdisplay_canvas_events(), for case GDK_LEAVE_NOTIFY: however, I'm having difficulty understanding it. (probably because its so durn late. but anyways...) my goal is to stop deactivation of active cursor, if there is an xinput device separate from the core pointer. Any suggestions on which areas I should hit? Or suggestions on which of multiple ways I should tackle it? ([ I'm dealing with the 1.2.3 code, if it makes any difference) I'm considering that the two ways are, a) not call gdisplay_update_cursor at all from GDK_LEAVE_NOTIFY, IFF we have a non-core device active b) making gdisplay_update_cursor() more intelligent. Not sure at this point which direction is more appropriate.