comparison gtk/gtkimhtml.c @ 15032:ea6186360b68

[gaim-migrate @ 17814] Make searching in conversations search backwards. Presumingly you want to see the most recent mentions of your search term first. I use it mostly for searching my nick when I See a blue tab in #gaim, and this is useful for that. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Wed, 22 Nov 2006 21:33:51 +0000
parents fd321da41de4
children d0f5147753dd
comparison
equal deleted inserted replaced
15031:b598a78c4550 15032:ea6186360b68
3548 3548
3549 if (new_search) { 3549 if (new_search) {
3550 gtk_imhtml_search_clear(imhtml); 3550 gtk_imhtml_search_clear(imhtml);
3551 g_free(imhtml->search_string); 3551 g_free(imhtml->search_string);
3552 imhtml->search_string = g_strdup(text); 3552 imhtml->search_string = g_strdup(text);
3553 gtk_text_buffer_get_start_iter(imhtml->text_buffer, &iter); 3553 gtk_text_buffer_get_end_iter(imhtml->text_buffer, &iter);
3554 } else { 3554 } else {
3555 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, 3555 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter,
3556 start_mark); 3556 start_mark);
3557 } 3557 }
3558 3558
3559 if (gtk_source_iter_forward_search(&iter, imhtml->search_string, 3559 if (gtk_source_iter_backward_search(&iter, imhtml->search_string,
3560 GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE, 3560 GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE,
3561 &start, &end, NULL)) 3561 &start, &end, NULL))
3562 { 3562 {
3563 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0); 3563 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0);
3564 gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &end, FALSE); 3564 gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &start, FALSE);
3565 if (new_search) 3565 if (new_search)
3566 { 3566 {
3567 gtk_text_buffer_remove_tag_by_name(imhtml->text_buffer, "search", &iter, &end); 3567 gtk_text_buffer_remove_tag_by_name(imhtml->text_buffer, "search", &iter, &end);
3568 do 3568 do
3569 gtk_text_buffer_apply_tag_by_name(imhtml->text_buffer, "search", &start, &end); 3569 gtk_text_buffer_apply_tag_by_name(imhtml->text_buffer, "search", &start, &end);
3570 while (gtk_source_iter_forward_search(&end, imhtml->search_string, 3570 while (gtk_source_iter_backward_search(&start, imhtml->search_string,
3571 GTK_SOURCE_SEARCH_VISIBLE_ONLY | 3571 GTK_SOURCE_SEARCH_VISIBLE_ONLY |
3572 GTK_SOURCE_SEARCH_CASE_INSENSITIVE, 3572 GTK_SOURCE_SEARCH_CASE_INSENSITIVE,
3573 &start, &end, NULL)); 3573 &start, &end, NULL));
3574 } 3574 }
3575 return TRUE; 3575 return TRUE;
3576 } 3576 }
3577 else if (!new_search) 3577 else if (!new_search)
3578 { 3578 {
3579 /* We hit the end, so start at the beginning again. */ 3579 /* We hit the end, so start at the beginning again. */
3580 gtk_text_buffer_get_start_iter(imhtml->text_buffer, &iter); 3580 gtk_text_buffer_get_end_iter(imhtml->text_buffer, &iter);
3581 3581
3582 if (gtk_source_iter_forward_search(&iter, imhtml->search_string, 3582 if (gtk_source_iter_backward_search(&iter, imhtml->search_string,
3583 GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE, 3583 GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE,
3584 &start, &end, NULL)) 3584 &start, &end, NULL))
3585 { 3585 {
3586 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0); 3586 gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0);
3587 gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &end, FALSE); 3587 gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &start, FALSE);
3588 3588
3589 return TRUE; 3589 return TRUE;
3590 } 3590 }
3591 3591
3592 } 3592 }