Производный класс Gtk.Bin не получает MotionNotifyEvent - PullRequest
0 голосов
/ 05 января 2012

Я занимаюсь разработкой приложения на основе Gtk #, которое использует пользовательский виджет, полученный из Gtk.Bin. По какой-то неизвестной мне причине он не получает события движения мыши. Код ниже никогда не вызывается:

    [GLib.ConnectBefore]
    protected override bool OnMotionNotifyEvent (Gdk.EventMotion evnt)
    {
        Console.Out.WriteLine( "Mouse move!" );

        return base.OnMotionNotifyEvent (evnt);                 
    }

Я также расширил маску событий виджета для получения всех событий (в конструкторе):

AddEvents(( int ) Gdk.EventMask.AllEventsMask );

Есть идеи?

1 Ответ

0 голосов
/ 06 января 2012

Gtk.Bin - контейнер без окон, поэтому он не получает события мыши по умолчанию.

Вы можете создать Gdk.Window вручную в своем подклассе, чтобы получать события мыши, или проще перейти к подклассу Gtk.EventBox, который является подклассом Gtk.Bin, разработанным для этой цели, путем внутреннего создания егособственное окно Gdk.

...