IsAcceptedKey() not working on GridCellEditor?

I’m trying to modify the keys that can be used to start editing a custom grid cell editor.

I’ve noticed the following function on wxWidgets sources:

    // return true to allow the given key to start editing: the base class
    // version only checks that the event has no modifiers. The derived
    // classes are supposed to do "if ( base::IsAcceptedKey() && ... )" in
    // their IsAcceptedKey() implementation, although, of course, it is not a
    // mandatory requirment.
    //
    // NB: if the key is F2 (special), editing will always start and this
    //     method will not be called at all (but StartingKey() will)
    virtual bool IsAcceptedKey(wxKeyEvent& event);

It is referenced on wxPython demo for custom editors (demo\GridCustEditor.py):

    def IsAcceptedKey(self, evt):
        """
        Return True to allow the given key to start editing: the base class
        version only checks that the event has no modifiers.  F2 is special
        and will always start the editor.
        """
        self.log.write("MyCellEditor: IsAcceptedKey: %d\n" % (evt.GetKeyCode()))

        ## We can ask the base class to do it
        #return super(MyCellEditor, self).IsAcceptedKey(evt)

        # or do it ourselves
        return (not (evt.ControlDown() or evt.AltDown()) and
                evt.GetKeyCode() != wx.WXK_SHIFT)

But I can’t get it to work. When I run the demo and begin edits using key presses, the log doesn’t show any traces of “IsAcceptedKey”. Modifying the function to return False changes nothing.

I’m on tag wxPython-4.0.7 running on python 2.7

Any help please?

Thanks,
Yaniv

It looks like several virtual methods are missing there. I’ve created an issue at GitHub to track work on this fix.

1 Like