]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkbindings.c
filechooserbutton: Don't show the (None) item when the combo box is popped up
[~andy/gtk] / gtk / gtkbindings.c
index f85f13b6986385381369d0a4c4e09ff9cccffd83..4cbbeaf6aadbb67cd9e0c9981f00b256363ef54a 100644 (file)
@@ -15,9 +15,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,8 +31,8 @@
 
 #include "gtkbindingsprivate.h"
 #include "gtkkeyhash.h"
+#include "gtkstylecontext.h"
 #include "gtkwidget.h"
-#include "gtkrc.h"
 #include "gtkintl.h"
 
 /**
@@ -480,7 +478,7 @@ binding_compose_params (GObject         *object,
   valid = TRUE;
   for (i = 1; i < query->n_params + 1 && valid; i++)
     {
-      GValue tmp_value = { 0, };
+      GValue tmp_value = G_VALUE_INIT;
 
       g_value_init (params, *types);
 
@@ -603,7 +601,7 @@ gtk_binding_entry_activate (GtkBindingEntry *entry,
       GSignalQuery query;
       guint signal_id;
       GValue *params = NULL;
-      GValue return_val = { 0, };
+      GValue return_val = G_VALUE_INIT;
       gchar *accelerator = NULL;
 
       signal_id = g_signal_lookup (sig->signal_name, G_OBJECT_TYPE (object));
@@ -736,15 +734,28 @@ gtk_binding_set_by_class (gpointer object_class)
     return binding_set;
 
   binding_set = gtk_binding_set_new (g_type_name (G_OBJECT_CLASS_TYPE (class)));
-  gtk_binding_set_add_path (binding_set,
-                            GTK_PATH_CLASS,
-                            g_type_name (G_OBJECT_CLASS_TYPE (class)),
-                            GTK_PATH_PRIO_GTK);
   g_dataset_id_set_data (class, key_id_class_binding_set, binding_set);
 
   return binding_set;
 }
 
+static GtkBindingSet*
+gtk_binding_set_find_interned (const gchar *set_name)
+{
+  GSList *slist;
+
+  for (slist = binding_set_list; slist; slist = slist->next)
+    {
+      GtkBindingSet *binding_set;
+
+      binding_set = slist->data;
+      if (binding_set->set_name == set_name)
+        return binding_set;
+    }
+
+  return NULL;
+}
+
 /**
  * gtk_binding_set_find:
  * @set_name: unique binding set name
@@ -759,19 +770,9 @@ gtk_binding_set_by_class (gpointer object_class)
 GtkBindingSet*
 gtk_binding_set_find (const gchar *set_name)
 {
-  GSList *slist;
-
   g_return_val_if_fail (set_name != NULL, NULL);
 
-  for (slist = binding_set_list; slist; slist = slist->next)
-    {
-      GtkBindingSet *binding_set;
-
-      binding_set = slist->data;
-      if (g_str_equal (binding_set->set_name, (gpointer) set_name))
-        return binding_set;
-    }
-  return NULL;
+  return gtk_binding_set_find_interned (g_intern_string (set_name));
 }
 
 /**
@@ -991,7 +992,7 @@ _gtk_binding_entry_add_signall (GtkBindingSet  *binding_set,
  * @modifiers:   key modifier of binding to install
  * @signal_name: signal to execute upon activation
  * @n_args:      number of arguments to @signal_name
- * @Varargs:     arguments to @signal_name
+ * @...:         arguments to @signal_name
  *
  * Override or install a new key binding for @keyval with @modifiers on
  * @binding_set. When the binding is activated, @signal_name will be
@@ -1406,8 +1407,10 @@ gtk_binding_entry_add_signal_from_string (GtkBindingSet *binding_set,
  * @path_pattern: the actual match pattern
  * @priority: binding priority
  *
- * This function is used internally by the GtkRC parsing mechanism to
- * assign match patterns to #GtkBindingSet structures.
+ * This function was used internally by the GtkRC parsing mechanism
+ * to assign match patterns to #GtkBindingSet structures.
+ *
+ * In GTK+ 3, these match patterns are unused.
  *
  * Deprecated: 3.0
  */
@@ -1572,7 +1575,7 @@ gtk_bindings_activate_list (GObject  *object,
 
       while (class_type && !handled)
         {
-          binding_set = gtk_binding_set_find (g_type_name (class_type));
+          binding_set = gtk_binding_set_find_interned (g_type_name (class_type));
           class_type = g_type_parent (class_type);
 
           if (!binding_set)