X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Feggfindbar.c;h=eb1f9a48628941a9abd8de4c8201395fc71a6f71;hb=96852fbc06ed138962d160a087e1371ac7a8910c;hp=063a220b43c8d5952e36e1dc0ae879eed8eede27;hpb=ce80b45c492900e204b314c27000d8fd99687130;p=evince.git diff --git a/shell/eggfindbar.c b/shell/eggfindbar.c index 063a220b..eb1f9a48 100644 --- a/shell/eggfindbar.c +++ b/shell/eggfindbar.c @@ -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"); }