Merge branch 'gtk-enter-leave-window'

Fixes for wxGTK enter/leave window events.

Closes #11848.

See #24339.
This commit is contained in:
Vadim Zeitlin 2024-02-29 03:01:38 +01:00
commit b03ce7711b
37 changed files with 360 additions and 104 deletions

View file

@ -88,6 +88,23 @@ template<typename T> void InitMouseEvent(wxWindowGTK *win,
event.SetTimestamp( gdk_event->time );
}
// Update the window currently known to be under the mouse pointer.
//
// Returns true if it was updated, false if this window was already known to
// contain the mouse pointer.
bool SetWindowUnderMouse(wxWindowGTK* win);
// Implementation of enter/leave window callbacks.
gboolean
WindowEnterCallback(GtkWidget* widget,
GdkEventCrossing* event,
wxWindowGTK* win);
gboolean
WindowLeaveCallback(GtkWidget* widget,
GdkEventCrossing* event,
wxWindowGTK* win);
} // namespace wxGTKImpl
#endif // _GTK_PRIVATE_EVENT_H_

View file

@ -171,14 +171,9 @@ public:
virtual GtkWidget* GetConnectWidget();
void ConnectWidget( GtkWidget *widget );
// Called from several event handlers, if it returns true or false, the
// same value should be immediately returned by the handler without doing
// anything else. If it returns -1, the handler should continue as usual
int GTKCallbackCommonPrologue(struct _GdkEventAny *event) const;
// Simplified form of GTKCallbackCommonPrologue() which can be used from
// GTK callbacks without return value to check if the event should be
// ignored: if this returns true, the event shouldn't be handled
// Returns true if GTK callbacks are blocked due to a drag event being in
// progress.
bool GTKShouldIgnoreEvent() const;