]> Pileus Git - ~andy/gtk/blobdiff - modules/other/gail/gailwidget.c
Deprecate flag macros for toplevel, state, no window and composite child
[~andy/gtk] / modules / other / gail / gailwidget.c
index 9b371927c4ae774996aa43d4165a1be83a3cf711..10e5cb5842a29ee02c0476dc6de0d2f0c7dd0599 100644 (file)
@@ -20,6 +20,9 @@
 #include "config.h"
 
 #include <string.h>
+
+#undef GTK_DISABLE_DEPRECATED
+
 #include <gtk/gtk.h>
 #ifdef GDK_WINDOWING_X11
 #include <gdk/x11/gdkx.h>
@@ -103,6 +106,7 @@ static void       gail_widget_real_initialize    (AtkObject     *obj,
                                                   gpointer      data);
 static GtkWidget* gail_widget_find_viewport      (GtkWidget     *widget);
 static gboolean   gail_widget_on_screen          (GtkWidget     *widget);
+static gboolean   gail_widget_all_parents_visible(GtkWidget     *widget);
 
 G_DEFINE_TYPE_WITH_CODE (GailWidget, gail_widget, GTK_TYPE_ACCESSIBLE,
                          G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init))
@@ -239,7 +243,6 @@ gail_widget_get_description (AtkObject *accessible)
     {
       /* Get the tooltip from the widget */
       GtkAccessible *obj = GTK_ACCESSIBLE (accessible);
-      GtkTooltipsData *data;
 
       gail_return_val_if_fail (obj, NULL);
 
@@ -250,12 +253,8 @@ gail_widget_get_description (AtkObject *accessible)
         return NULL;
  
       gail_return_val_if_fail (GTK_WIDGET (obj->widget), NULL);
-    
-      data = gtk_tooltips_data_get (obj->widget);
-      if (data == NULL)
-        return NULL;
 
-      return data->tip_text;
+      return gtk_widget_get_tooltip_text (obj->widget);
     }
 }
 
@@ -515,8 +514,8 @@ gail_widget_ref_state_set (AtkObject *accessible)
       if (GTK_WIDGET_VISIBLE (widget))
         {
           atk_state_set_add_state (state_set, ATK_STATE_VISIBLE);
-          if (gail_widget_on_screen (widget) &&
-              GTK_WIDGET_MAPPED (widget))
+          if (gail_widget_on_screen (widget) && GTK_WIDGET_MAPPED (widget) &&
+              gail_widget_all_parents_visible (widget))
             {
               atk_state_set_add_state (state_set, ATK_STATE_SHOWING);
             }
@@ -740,7 +739,7 @@ gail_widget_grab_focus (AtkComponent   *component)
     {
       gtk_widget_grab_focus (widget);
       toplevel = gtk_widget_get_toplevel (widget);
-      if (GTK_WIDGET_TOPLEVEL (toplevel))
+      if (gtk_widget_is_toplevel (toplevel))
        {
 #ifdef GDK_WINDOWING_X11
          gtk_window_present_with_time (GTK_WINDOW (toplevel), gdk_x11_get_server_time (widget->window));
@@ -778,7 +777,7 @@ gail_widget_set_extents (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       if (coord_type == ATK_XY_WINDOW)
         {
@@ -793,14 +792,14 @@ gail_widget_set_extents (AtkComponent   *component,
           else
             {
               gtk_widget_set_uposition (widget, x_current, y_current);
-              gtk_widget_set_usize (widget, width, height);
+              gtk_widget_set_size_request (widget, width, height);
               return TRUE;
             }
         }
       else if (coord_type == ATK_XY_SCREEN)
         {  
           gtk_widget_set_uposition (widget, x, y);
-          gtk_widget_set_usize (widget, width, height);
+          gtk_widget_set_size_request (widget, width, height);
           return TRUE;
         }
     }
@@ -822,7 +821,7 @@ gail_widget_set_position (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
       if (coord_type == ATK_XY_WINDOW)
         {
@@ -863,9 +862,9 @@ gail_widget_set_size (AtkComponent   *component,
     return FALSE;
   gail_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  if (GTK_WIDGET_TOPLEVEL (widget))
+  if (gtk_widget_is_toplevel (widget))
     {
-      gtk_widget_set_usize (widget, width, height);
+      gtk_widget_set_size_request (widget, width, height);
       return TRUE;
     }
   else
@@ -1076,3 +1075,30 @@ static gboolean gail_widget_on_screen (GtkWidget *widget)
 
   return return_value;
 }
+
+/**
+ * gail_widget_all_parents_visible:
+ * @widget: a #GtkWidget
+ *
+ * Checks if all the predecesors (the parent widget, his parent, etc) are visible
+ * Used to check properly the SHOWING state.
+ *
+ * Return value: TRUE if all the parent hierarchy is visible, FALSE otherwise
+ **/
+static gboolean gail_widget_all_parents_visible (GtkWidget *widget)
+{
+  GtkWidget *iter_parent = NULL;
+  gboolean result = TRUE;
+
+  for (iter_parent = gtk_widget_get_parent (widget); iter_parent;
+       iter_parent = gtk_widget_get_parent (iter_parent))
+    {
+      if (!GTK_WIDGET_VISIBLE (iter_parent))
+        {
+          result = FALSE;
+          break;
+        }
+    }
+
+  return result;
+}