Mercurial > pidgin.yaz
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 } |