]> www.fi.muni.cz Git - evince.git/blobdiff - shell/eggfindbar.c
Hungarian translation updated.
[evince.git] / shell / eggfindbar.c
index 063a220b43c8d5952e36e1dc0ae879eed8eede27..eb1f9a48628941a9abd8de4c8201395fc71a6f71 100644 (file)
@@ -80,6 +80,7 @@ enum
     NEXT,
     PREVIOUS,
     CLOSE,
+    SCROLL,
     LAST_SIGNAL
   };
 
@@ -134,6 +135,15 @@ egg_find_bar_class_init (EggFindBarClass *klass)
                  NULL, NULL,
                  g_cclosure_marshal_VOID__VOID,
                  G_TYPE_NONE, 0);
+  find_bar_signals[SCROLL] =
+    g_signal_new ("scroll",
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                  G_STRUCT_OFFSET (EggFindBarClass, scroll),
+                 NULL, NULL,
+                 g_cclosure_marshal_VOID__ENUM,
+                 G_TYPE_NONE, 1,
+                 GTK_TYPE_SCROLL_TYPE);
 
   /**
    * EggFindBar:search_string:
@@ -185,6 +195,14 @@ egg_find_bar_class_init (EggFindBarClass *klass)
 
   gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
                                "close", 0);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Up, 0,
+                                "scroll", 1,
+                                GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Down, 0,
+                                "scroll", 1,
+                                GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD);
 }
 
 static void
@@ -236,7 +254,8 @@ entry_activate_callback (GtkEntry *entry,
 
   /* We activate the "next" button here so we'll get a nice
      animation */
-  gtk_widget_activate (priv->next_button);
+  if (find_bar->priv->search_string != NULL)
+         gtk_widget_activate (priv->next_button);
 }
 
 static void
@@ -252,7 +271,7 @@ entry_changed_callback (GtkEntry *entry,
   text = g_strdup (gtk_entry_get_text (entry));
 
   egg_find_bar_set_search_string (find_bar, text);
-
+  
   g_free (text);
 }
 
@@ -305,8 +324,11 @@ egg_find_bar_init (EggFindBar *find_bar)
 
   priv->previous_button = gtk_button_new_with_mnemonic (_("_Previous"));
   gtk_button_set_focus_on_click (GTK_BUTTON (priv->previous_button), FALSE);
+  gtk_widget_set_sensitive (GTK_WIDGET (priv->previous_button), FALSE);
+
   priv->next_button = gtk_button_new_with_mnemonic (_("_Next"));
   gtk_button_set_focus_on_click (GTK_BUTTON (priv->next_button), FALSE);
+  gtk_widget_set_sensitive (GTK_WIDGET (priv->next_button), FALSE);
 
   image_back = gtk_image_new_from_stock (GTK_STOCK_GO_BACK,
                                          GTK_ICON_SIZE_BUTTON);
@@ -583,6 +605,8 @@ egg_find_bar_set_search_string  (EggFindBar *find_bar,
           (old && search_string &&
            strcmp (old, search_string) != 0))
         {
+         gboolean not_empty;
+         
           priv->search_string = g_strdup (search_string);
           g_free (old);
           
@@ -590,7 +614,12 @@ egg_find_bar_set_search_string  (EggFindBar *find_bar,
                               priv->search_string ?
                               priv->search_string :
                               "");
-          
+          
+          not_empty = (search_string == NULL) ? FALSE : TRUE;           
+
+          gtk_widget_set_sensitive (GTK_WIDGET (find_bar->priv->next_button), not_empty);
+          gtk_widget_set_sensitive (GTK_WIDGET (find_bar->priv->previous_button), not_empty);
+
           g_object_notify (G_OBJECT (find_bar),
                            "search_string");
         }