On 09-02-18 16:44, Luís Marques wrote:

I'm having trouble getting a DrawingArea to have focus. I've set up all of the properties that I could find related to focus:

drawingArea.addEvents(GdkEventMask.ALL_EVENTS_MASK);
drawingArea.setCanFocus(true);
drawingArea.setFocusOnClick(true);
drawingArea.setReceivesDefault(true);
drawingArea.grabFocus();

Indeed, when the window opens the DrawingArea has focus, which I can see because the drawing handler checks the focus with hasFocus and conditionally draws a line. But once I click some other control that captures focus (e.g. a TreeView) the focus never returns to the DrawingArea.

I thought that the DrawingArea might be rejecting the focus, so I tried adding handlers for addOnFocus and addOnFocusIn that returned true to prevent any other further event handling, but that didn't work either.

Any ideas?

Is the drawing handler actually called? you may need to invalidate the
DrawingArea by calling queueDraw in the OnFocusIn handler.