[gtk/wip/baedert/for-master] main: Remove popover special casing



commit 388999b96fdf1638d49498ce286674cdc43058a6
Author: Timm Bäder <mail baedert org>
Date:   Thu Nov 7 17:47:51 2019 +0100

    main: Remove popover special casing
    
    Their parent is their actual parent these days.

 gtk/gtkmain.c          | 58 +-------------------------------------------------
 gtk/gtkwindow.c        | 46 ---------------------------------------
 gtk/gtkwindowprivate.h |  5 -----
 3 files changed, 1 insertion(+), 108 deletions(-)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 7d3f43bc9b..91e5c45824 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1342,55 +1342,7 @@ rewrite_event_for_grabs (GdkEvent *event)
     return NULL;
 }
 
-static GtkWidget *
-widget_get_popover_ancestor (GtkWidget *widget,
-                             GtkWindow *window)
-{
-  GtkWidget *parent = gtk_widget_get_parent (widget);
-
-  while (parent && parent != GTK_WIDGET (window))
-    {
-      widget = parent;
-      parent = gtk_widget_get_parent (widget);
-    }
-
-  if (!parent || parent != GTK_WIDGET (window))
-    return NULL;
-
-  if (_gtk_window_is_popover_widget (GTK_WINDOW (window), widget))
-    return widget;
-
-  return NULL;
-}
-
-static gboolean
-check_event_in_child_popover (GtkWidget *event_widget,
-                              GtkWidget *grab_widget)
-{
-  GtkWidget *window, *popover = NULL, *popover_parent = NULL;
-
-  if (grab_widget == event_widget)
-    return FALSE;
-
-  window = gtk_widget_get_ancestor (event_widget, GTK_TYPE_WINDOW);
-
-  if (!window)
-    return FALSE;
-
-  popover = widget_get_popover_ancestor (event_widget, GTK_WINDOW (window));
-
-  if (!popover)
-    return FALSE;
-
-  popover_parent = _gtk_window_get_popover_parent (GTK_WINDOW (window), popover);
-
-  if (!popover_parent)
-    return FALSE;
-
-  return (popover_parent == grab_widget || gtk_widget_is_ancestor (popover_parent, grab_widget));
-}
-
-static GdkNotifyType
+  static GdkNotifyType
 get_virtual_notify_type (GdkNotifyType notify_type)
 {
   switch (notify_type)
@@ -1940,14 +1892,6 @@ gtk_main_do_event (GdkEvent *event)
        gtk_widget_is_ancestor (target_widget, grab_widget)))
     grab_widget = target_widget;
 
-  /* popovers are not really a "child" of their "parent" in the widget/window
-   * hierarchy sense, we however want to interact with popovers spawn by widgets
-   * within grab_widget. If this is the case, we let the event go through
-   * unaffected by the grab.
-   */
-  if (check_event_in_child_popover (target_widget, grab_widget))
-    grab_widget = target_widget;
-
   /* If the widget receiving events is actually blocked by another
    * device GTK grab
    */
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 4891a36167..b6d3a9083b 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -8885,52 +8885,6 @@ _gtk_window_get_popover_position (GtkWindow             *window,
     *rect = data->rect;
 }
 
-/*<private>
- * _gtk_window_get_popover_parent:
- * @window: A #GtkWindow
- * @popover: A popover #GtkWidget
- *
- * Returns the conceptual parent of this popover, the real
- * parent will always be @window.
- *
- * Returns: (nullable): The conceptual parent widget, or %NULL.
- **/
-GtkWidget *
-_gtk_window_get_popover_parent (GtkWindow *window,
-                                GtkWidget *popover)
-{
-  GtkWindowPopover *data;
-
-  g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
-  g_return_val_if_fail (GTK_IS_WIDGET (popover), NULL);
-
-  data = _gtk_window_has_popover (window, popover);
-
-  if (data && data->parent)
-    return data->parent;
-
-  return NULL;
-}
-
-/*<private>
- * _gtk_window_is_popover_widget:
- * @window: A #GtkWindow
- * @possible_popover: A possible popover of @window
- *
- * Returns #TRUE if @possible_popover is a popover of @window.
- *
- * Returns: Whether the widget is a popover of @window
- **/
-gboolean
-_gtk_window_is_popover_widget (GtkWindow *window,
-                               GtkWidget *possible_popover)
-{
-  g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE);
-  g_return_val_if_fail (GTK_IS_WIDGET (possible_popover), FALSE);
-
-  return _gtk_window_has_popover (window, possible_popover) != NULL;
-}
-
 void
 _gtk_window_raise_popover (GtkWindow *window,
                            GtkWidget *widget)
diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h
index c803c56d61..634d9ee66e 100644
--- a/gtk/gtkwindowprivate.h
+++ b/gtk/gtkwindowprivate.h
@@ -107,11 +107,6 @@ void    _gtk_window_get_popover_position (GtkWindow                   *window,
 void    _gtk_window_raise_popover        (GtkWindow                   *window,
                                           GtkWidget                   *popover);
 
-GtkWidget * _gtk_window_get_popover_parent (GtkWindow *window,
-                                            GtkWidget *popover);
-gboolean    _gtk_window_is_popover_widget  (GtkWindow *window,
-                                            GtkWidget *popover);
-
 GdkPaintable *    gtk_window_get_icon_for_size (GtkWindow *window,
                                                 int        size);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]