Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
August 06, 2017 gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
GtkEventBox - Enter GtkEventBox - Enter Down GtkEventBox - Leave Up GtkEventBox - Leave GtkEventBox - Leave That is when I move the mouse over the event box then click then move out out then release. I would expect Enter Down Leave Up The fact that enter and leave are not paired equally is a problem. Can be worked around but seems like it would be a bug. the code is simply ebox.addOnEnterNotify(delegate(Event e, Widget w) { writeln(w.getName(), " - ", "Enter"); return true; }); ebox.addOnLeaveNotify((Event e, Widget w) { writeln(w.getName(), " - ", "Leave"); return true; }); |
August 06, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to Johnson Jones | On 06-08-17 03:25, Johnson Jones wrote: > GtkEventBox - Enter > GtkEventBox - Enter > Down > GtkEventBox - Leave > Up > GtkEventBox - Leave > GtkEventBox - Leave > > That is when I move the mouse over the event box then click then move out out then release. > > I would expect > > Enter Down Leave Up > > The fact that enter and leave are not paired equally is a problem. Can be worked around but seems like it would be a bug. > > the code is simply > > > ebox.addOnEnterNotify(delegate(Event e, Widget w) > { > writeln(w.getName(), " - ", "Enter"); > return true; }); > > ebox.addOnLeaveNotify((Event e, Widget w) > { writeln(w.getName(), " - ", "Leave"); > return true; > }); Do you have an more complete example that i could test. -- Mike Wey |
August 06, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wey | On Sunday, 6 August 2017 at 09:42:03 UTC, Mike Wey wrote: > On 06-08-17 03:25, Johnson Jones wrote: >> GtkEventBox - Enter >> GtkEventBox - Enter >> Down >> GtkEventBox - Leave >> Up >> GtkEventBox - Leave >> GtkEventBox - Leave >> >> That is when I move the mouse over the event box then click then move out out then release. >> >> I would expect >> >> Enter Down Leave Up >> >> The fact that enter and leave are not paired equally is a problem. Can be worked around but seems like it would be a bug. >> >> the code is simply >> >> >> ebox.addOnEnterNotify(delegate(Event e, Widget w) >> { >> writeln(w.getName(), " - ", "Enter"); >> return true; }); >> >> ebox.addOnLeaveNotify((Event e, Widget w) >> { writeln(w.getName(), " - ", "Leave"); >> return true; >> }); > > Do you have an more complete example that i could test. I don't really(my code is a bit more complex) but basically all it boils down to is a UI with some nested widgets (an overlay, an box, and a box and one contains the eventbox which I added those callbacks on. I think that something like https://github.com/gtkd-developers/GtkD/blob/master/demos/gtkD/TestWindow/TestWindow.d should probably work by just adding an eventbox somewhere and adding that code above. If it doesn't exhibit the same behavior then it has something to do with my project and I could try to reduce it to a minimal example. |
August 06, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to FoxyBrown | On 06-08-17 16:58, FoxyBrown wrote: > I don't really(my code is a bit more complex) but basically all it boils down to is a UI with some nested widgets (an overlay, an box, and a box and one contains the eventbox which I added those callbacks on. > > I think that something like > > https://github.com/gtkd-developers/GtkD/blob/master/demos/gtkD/TestWindow/TestWindow.d > > > should probably work by just adding an eventbox somewhere and adding that code above. > > If it doesn't exhibit the same behavior then it has something to do with my project and I could try to reduce it to a minimal example. > To test i put the label that is on the label page in an event box but that doesn't reproduce the issue. I get just a single event on enter and a single event on leave. -- Mike Wey |
August 06, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wey | On Sunday, 6 August 2017 at 18:26:20 UTC, Mike Wey wrote: > On 06-08-17 16:58, FoxyBrown wrote: >> I don't really(my code is a bit more complex) but basically all it boils down to is a UI with some nested widgets (an overlay, an box, and a box and one contains the eventbox which I added those callbacks on. >> >> I think that something like >> >> https://github.com/gtkd-developers/GtkD/blob/master/demos/gtkD/TestWindow/TestWindow.d >> >> >> should probably work by just adding an eventbox somewhere and adding that code above. >> >> If it doesn't exhibit the same behavior then it has something to do with my project and I could try to reduce it to a minimal example. >> > To test i put the label that is on the label page in an event box but that doesn't reproduce the issue. I get just a single event on enter and a single event on leave. Ok, I will try to work on figuring out what is going and and potentially reduce to a test case. It might be on my end. I'm pretty sure I'm not adding You might try a separator though in the event box and might try to add it handling various events(maybe even other events for the event box)... things related to the mouse. Here's the glade code for the event box I'm using <object class="GtkEventBox" id="MainSeparator"> <property name="height_request">5</property> <property name="visible">True</property> <property name="can_focus">False</property> <property name="above_child">True</property> <child> <object class="GtkSeparator"> <property name="height_request">5</property> <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">False</property> <property name="events"/> <property name="orientation">vertical</property> </object> </child> </object> Try that when you get some time and see if that changes anything. If it doesn't then it's surely in my code or in the gtk version I'm using(still using msys, I'll update to what you released to see if that fixes it). At least we can narrow it down a little... |
August 07, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to FoxyBrown | On Sunday, 6 August 2017 at 19:27:15 UTC, FoxyBrown wrote:
> <child>
> <object class="GtkSeparator">
I don't know gtk, but I would suspect moving the mouse over the child triggers the enter/leave notifications too and it bubbles up to the parent.
|
August 07, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Monday, 7 August 2017 at 16:13:18 UTC, Adam D. Ruppe wrote:
> On Sunday, 6 August 2017 at 19:27:15 UTC, FoxyBrown wrote:
>> <child>
>> <object class="GtkSeparator">
>
> I don't know gtk, but I would suspect moving the mouse over the child triggers the enter/leave notifications too and it bubbles up to the parent.
Yeah, but both those events are from EventBox. If that were true I'd except Separator to be shown as the widget that has the event. I do return true from the handler which I believe is suppose to stop any more handlers.
Although, it does sound something like what you are saying... but it also doesn't explain why the events are not paired, which is the more serious issue.
|
August 07, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to FoxyBrown | On 06-08-17 21:27, FoxyBrown wrote: > On Sunday, 6 August 2017 at 18:26:20 UTC, Mike Wey wrote: >> On 06-08-17 16:58, FoxyBrown wrote: >>> I don't really(my code is a bit more complex) but basically all it boils down to is a UI with some nested widgets (an overlay, an box, and a box and one contains the eventbox which I added those callbacks on. >>> >>> I think that something like >>> >>> https://github.com/gtkd-developers/GtkD/blob/master/demos/gtkD/TestWindow/TestWindow.d >>> >>> >>> >>> should probably work by just adding an eventbox somewhere and adding that code above. >>> >>> If it doesn't exhibit the same behavior then it has something to do with my project and I could try to reduce it to a minimal example. >>> >> To test i put the label that is on the label page in an event box but that doesn't reproduce the issue. I get just a single event on enter and a single event on leave. > > Ok, I will try to work on figuring out what is going and and potentially reduce to a test case. It might be on my end. I'm pretty sure I'm not adding > > You might try a separator though in the event box and might try to add it handling various events(maybe even other events for the event box)... things related to the mouse. > > Here's the glade code for the event box I'm using > > <object class="GtkEventBox" id="MainSeparator"> > <property name="height_request">5</property> > <property name="visible">True</property> > <property name="can_focus">False</property> > <property name="above_child">True</property> > <child> > <object class="GtkSeparator"> > <property name="height_request">5</property> > <property name="visible">True</property> > <property name="sensitive">False</property> > <property name="can_focus">False</property> > <property name="events"/> > <property name="orientation">vertical</property> > </object> > </child> > </object> > > > Try that when you get some time and see if that changes anything. If it doesn't then it's surely in my code or in the gtk version I'm using(still using msys, I'll update to what you released to see if that fixes it). At least we can narrow it down a little... > Also seems to be working properly with a Separator. -- Mike Wey |
August 07, 2017 Re: gtkD: events being triggered twice | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wey | On Monday, 7 August 2017 at 21:01:33 UTC, Mike Wey wrote:
> On 06-08-17 21:27, FoxyBrown wrote:
>> [...]
>
> Also seems to be working properly with a Separator.
Ok, I guess it's on my end, I don't see how since I'm not doing a hell of a lot and only gtk is calling those event handlers, I'll try to create a test app at some point. I've already added logic to prevent multiple reentries though so, for now I've solved the problem.
|
Copyright © 1999-2021 by the D Language Foundation