]> Pileus Git - ~andy/gtk/commitdiff
only pass key events to the focus widget if it is sensitive.
authorTim Janik <timj@gtk.org>
Mon, 11 Jan 1999 12:22:52 +0000 (12:22 +0000)
committerTim Janik <timj@src.gnome.org>
Mon, 11 Jan 1999 12:22:52 +0000 (12:22 +0000)
Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>

        * gtk/gtkwindow.c:
        (gtk_window_key_release_event):
        (gtk_window_key_press_event): only pass key events to the focus widget
        if it is sensitive.

        * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
        submenu if it isn't sensitive.
        (gtk_menu_item_paint): state_type doesn't need to be reset to
        GTK_STATE_INSENSITIVE if the widget is insensitive anyways.

        * gtk/gtkcontainer.c (gtk_container_real_focus):
        * gtk/gtklist.c (gtk_list_focus):
        * gtk/gtkmenushell.c (gtk_menu_shell_move_selected):
        * gtk/gtknotebook.c (gtk_notebook_focus):
        s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
        sensitivity is determined through the parent as well,
        GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
        else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
        sensitivity.

        * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
        object if it is an insensitive widget.

17 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkaccelgroup.c
gtk/gtkclist.c
gtk/gtkcontainer.c
gtk/gtklist.c
gtk/gtkmenuitem.c
gtk/gtkmenushell.c
gtk/gtknotebook.c
gtk/gtkwindow.c
gtk/testgtkrc
tests/testgtkrc

index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index 719cd4798399b89febf0cfa6580610c39839c935..fd6528f241907edac7eff98eff8c686be475f951 100644 (file)
@@ -1,3 +1,28 @@
+Mon Jan 11 13:18:37 1999  Tim Janik  <timj@gtk.org>
+
+       * gtk/gtkwindow.c:
+       (gtk_window_key_release_event): 
+       (gtk_window_key_press_event): only pass key events to the focus widget
+       if it is sensitive.
+
+       * gtk/gtkmenuitem.c (gtk_menu_item_select_timeout): don't popup the
+       submenu if it isn't sensitive.
+       (gtk_menu_item_paint): state_type doesn't need to be reset to
+       GTK_STATE_INSENSITIVE if the widget is insensitive anyways.
+
+       * gtk/gtkcontainer.c (gtk_container_real_focus): 
+       * gtk/gtklist.c (gtk_list_focus): 
+       * gtk/gtkmenushell.c (gtk_menu_shell_move_selected): 
+       * gtk/gtknotebook.c (gtk_notebook_focus): 
+       s/GTK_WIDGET_SENSITIVE/GTK_WIDGET_IS_SENSITIVE/ since a widgets
+       sensitivity is determined through the parent as well,
+       GTK_WIDGET_SENSITIVE is only of interest inside gtkwidget.c, everywhere
+       else GTK_WIDGET_IS_SENSITIVE (widget) needs to be used to check for
+       sensitivity.
+
+       * gtk/gtkaccelgroup.c (gtk_accel_group_activate): don't activate
+       object if it is an insensitive widget.
+
 Mon, 11 Jan 1999 08:09:08 +0100 Paolo Molaro <lupus@debian.org>
 
        * gtk/gtktypeutils.[ch]: add gtk_type_{add,remove}_creation_hook().
index f5570dd4f79da431f4f598932ab1ced9c155d337..0d1c6773e79a045e415d3738030a11e13156bb9d 100644 (file)
@@ -254,7 +254,8 @@ gtk_accel_group_activate (GtkAccelGroup      *accel_group,
   g_return_val_if_fail (accel_group != NULL, FALSE);
   
   entry = gtk_accel_group_lookup (accel_group, accel_key, accel_mods);
-  if (entry && entry->signal_id)
+  if (entry && entry->signal_id &&
+      (!GTK_IS_WIDGET (entry->object) || GTK_WIDGET_IS_SENSITIVE (entry->object)))
     {
       gtk_signal_emit (entry->object, entry->signal_id);
       return TRUE;
index a201f39dc2f55bd7907796ae180037bb312df101..ab6acb6a56dd85cea30c5666b25e1a94a9c62105 100644 (file)
@@ -6446,7 +6446,7 @@ gtk_clist_focus (GtkContainer     *container,
   g_return_val_if_fail (container != NULL, FALSE);
   g_return_val_if_fail (GTK_IS_CLIST (container), FALSE);
 
-  if (!GTK_WIDGET_SENSITIVE (container))
+  if (!GTK_WIDGET_IS_SENSITIVE (container))
     return FALSE;
   
   clist = GTK_CLIST (container);
index f375ae268f3454583a426d566bb750dc248b5a2f..ce8cc9ba2f9bb8354f2cc09044d7076e5a3d6f62 100644 (file)
@@ -1394,7 +1394,7 @@ gtk_container_real_focus (GtkContainer     *container,
   /* Fail if the container is inappropriate for focus movement
    */
   if (!GTK_WIDGET_DRAWABLE (container) ||
-      !GTK_WIDGET_SENSITIVE (container))
+      !GTK_WIDGET_IS_SENSITIVE (container))
     return FALSE;
 
   return_val = FALSE;
@@ -1422,7 +1422,7 @@ gtk_container_real_focus (GtkContainer     *container,
          tmp_list = children;
          while (tmp_list)
            {
-             if (GTK_WIDGET_SENSITIVE (tmp_list->data) &&
+             if (GTK_WIDGET_IS_SENSITIVE (tmp_list->data) &&
                  GTK_WIDGET_DRAWABLE (tmp_list->data) &&
                  (GTK_IS_CONTAINER (tmp_list->data) || GTK_WIDGET_CAN_FOCUS (tmp_list->data)))
                tmp_list = tmp_list->next;
index d0049ec7e678fe39540ee1ef356b6009e61bc693..2d4f3ccbb6df6bb43c8ac7ae0422108d8c685721 100644 (file)
@@ -953,7 +953,7 @@ gtk_list_focus (GtkContainer     *container,
   g_return_val_if_fail (container != NULL, FALSE);
   g_return_val_if_fail (GTK_IS_LIST (container), FALSE);
 
-  if (!GTK_WIDGET_SENSITIVE (container))
+  if (!GTK_WIDGET_IS_SENSITIVE (container))
     return_val = FALSE;
   else if (container->focus_child == NULL ||
       !GTK_WIDGET_HAS_FOCUS (container->focus_child))
index a42893cd4ecbdf7b70225cc41cde535ec723dd12..4b506e0157291d18d326596c59280a9dfd01e277 100644 (file)
@@ -423,8 +423,6 @@ gtk_menu_item_paint (GtkWidget    *widget,
       menu_item = GTK_MENU_ITEM (widget);
 
       state_type = widget->state;
-      if (!GTK_WIDGET_IS_SENSITIVE (widget))
-       state_type = GTK_STATE_INSENSITIVE;
 
       x = GTK_CONTAINER (menu_item)->border_width;
       y = GTK_CONTAINER (menu_item)->border_width;
@@ -627,24 +625,27 @@ gtk_menu_item_select_timeout (gpointer data)
   menu_item = GTK_MENU_ITEM (data);
   menu_item->timer = 0;
 
-  gtk_menu_popup (GTK_MENU (menu_item->submenu),
-                 GTK_WIDGET (menu_item)->parent,
-                 GTK_WIDGET (menu_item),
-                 gtk_menu_item_position_menu,
-                 menu_item,
-                 GTK_MENU_SHELL (GTK_WIDGET (menu_item)->parent)->button,
-                 0);
-
-  /* This is a bit of a hack - we want to select the first item
-   * of menus hanging of a menu bar, but not for cascading submenus
-   */
-  if (GTK_IS_MENU_BAR (GTK_WIDGET (menu_item)->parent))
+  if (GTK_WIDGET_IS_SENSITIVE (menu_item->submenu))
     {
-      GtkMenuShell *submenu = GTK_MENU_SHELL (menu_item->submenu);
-      if (submenu->children)
-       gtk_menu_shell_select_item (submenu, submenu->children->data);
+      gtk_menu_popup (GTK_MENU (menu_item->submenu),
+                     GTK_WIDGET (menu_item)->parent,
+                     GTK_WIDGET (menu_item),
+                     gtk_menu_item_position_menu,
+                     menu_item,
+                     GTK_MENU_SHELL (GTK_WIDGET (menu_item)->parent)->button,
+                     0);
+      
+      /* This is a bit of a hack - we want to select the first item
+       * of menus hanging of a menu bar, but not for cascading submenus
+       */
+      if (GTK_IS_MENU_BAR (GTK_WIDGET (menu_item)->parent))
+       {
+         GtkMenuShell *submenu = GTK_MENU_SHELL (menu_item->submenu);
+         if (submenu->children)
+           gtk_menu_shell_select_item (submenu, submenu->children->data);
+       }
     }
-
+  
   GDK_THREADS_LEAVE ();
 
   return FALSE;
index e6883aa0890b14819f3f4385c8734026112a8c1e..0f6555d1b4a5bf477ab30416677d6541a3d2924f 100644 (file)
@@ -869,7 +869,7 @@ gtk_menu_shell_move_selected (GtkMenuShell  *menu_shell,
          node = node->next;
          while (node != start_node && 
                 (!node ||
-                 !GTK_WIDGET_SENSITIVE (node->data) ||
+                 !GTK_WIDGET_IS_SENSITIVE (node->data) ||
                  !GTK_WIDGET_VISIBLE (node->data) ))
            {
              if (!node)
@@ -883,7 +883,7 @@ gtk_menu_shell_move_selected (GtkMenuShell  *menu_shell,
          node = node->prev;
          while (node != start_node &&
                 (!node ||
-                 !GTK_WIDGET_SENSITIVE (node->data) ||
+                 !GTK_WIDGET_IS_SENSITIVE (node->data) ||
                  !GTK_WIDGET_VISIBLE (node->data) ))
            {
              if (!node)
index 5165bf35f547b1bd9e49e58cf2ccfc1ae93c2861..7181e957a74c566c18a0585eb9329751202cffc9 100644 (file)
@@ -1522,7 +1522,7 @@ gtk_notebook_focus (GtkContainer     *container,
 
   notebook = GTK_NOTEBOOK (container);
 
-  if (!GTK_WIDGET_DRAWABLE (notebook) || !GTK_WIDGET_SENSITIVE (container) ||
+  if (!GTK_WIDGET_DRAWABLE (notebook) || !GTK_WIDGET_IS_SENSITIVE (container) ||
       !notebook->children || !notebook->cur_page)
     return FALSE;
 
@@ -1532,7 +1532,7 @@ gtk_notebook_focus (GtkContainer     *container,
   if (!notebook->show_tabs)
     {
       if (GTK_WIDGET_DRAWABLE (notebook->cur_page->child) &&
-         GTK_WIDGET_SENSITIVE (notebook->cur_page->child))
+         GTK_WIDGET_IS_SENSITIVE (notebook->cur_page->child))
        {
          if (GTK_IS_CONTAINER (notebook->cur_page->child))
            {
index b4c29219a684e8230a6781a3bbf524da43984561..21b997fcd5042b0bd2c03d4058522c1e41f52a94 100644 (file)
@@ -1012,7 +1012,7 @@ gtk_window_key_press_event (GtkWidget   *widget,
 
   handled = FALSE;
   
-  if (window->focus_widget)
+  if (window->focus_widget && GTK_WIDGET_IS_SENSITIVE (window->focus_widget))
     {
       handled = gtk_widget_event (window->focus_widget, (GdkEvent*) event);
     }
@@ -1104,7 +1104,7 @@ gtk_window_key_release_event (GtkWidget   *widget,
   
   window = GTK_WINDOW (widget);
   handled = FALSE;
-  if (window->focus_widget)
+  if (window->focus_widget && GTK_WIDGET_SENSITIVE (window->focus_widget))
     {
       handled = gtk_widget_event (window->focus_widget, (GdkEvent*) event);
     }
index 582b83d4c6cc7fc7e5cd322c8903dc838364f037..fa8cbab45bab8f1f97196c60a29ee423af8c617d 100644 (file)
@@ -123,8 +123,8 @@ binding "test2"
 # application (for hard coded bindings on application basis)
 # rc          (used implicitel by rc files)
 # highest
-class "GtkWindow" binding "test1"           # implicit : rc
-class "GtkWindow" binding : highest "test2" # override "rc" priority
+class "GtkCList" binding  "test1"           # implicit : rc
+#class "GtkWindow" binding : highest "test2" # override "rc" priority
 
 binding "clist-test"
 {
index 582b83d4c6cc7fc7e5cd322c8903dc838364f037..fa8cbab45bab8f1f97196c60a29ee423af8c617d 100644 (file)
@@ -123,8 +123,8 @@ binding "test2"
 # application (for hard coded bindings on application basis)
 # rc          (used implicitel by rc files)
 # highest
-class "GtkWindow" binding "test1"           # implicit : rc
-class "GtkWindow" binding : highest "test2" # override "rc" priority
+class "GtkCList" binding  "test1"           # implicit : rc
+#class "GtkWindow" binding : highest "test2" # override "rc" priority
 
 binding "clist-test"
 {