Mercurial > pidgin
comparison src/gtkimhtmltoolbar.c @ 8516:5b25f72c4723
[gaim-migrate @ 9254]
" Buttons don't push in and out when the cursor enters
regions that are differently formatted. For example, if
you move the cursor to a place where the text is bold,
the B button should probably be pushed in.
this patch adds the toolbar to update to the current
format when the mouse is clicked. I also cleaned up
some duplicated code and some logic." --Gary Kramlich
okay, that less than clear text basically boils down to you can move the
cursor with the mouse as well as the keyboard without confusing the toolbar
now
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Sun, 28 Mar 2004 18:00:04 +0000 |
parents | 887c0259b47b |
children | cc2ce209cc46 |
comparison
equal
deleted
inserted
replaced
8515:0b0d70464cad | 8516:5b25f72c4723 |
---|---|
699 | 699 |
700 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline))) | 700 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline))) |
701 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), | 701 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), |
702 FALSE, toolbar); | 702 FALSE, toolbar); |
703 } | 703 } |
704 static void update_format_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) | 704 |
705 { | 705 static void update_buttons(GtkIMHtmlToolbar *toolbar) { |
706 gboolean bold, italic, underline; | 706 gboolean bold, italic, underline; |
707 | 707 |
708 bold = italic = underline = FALSE; | 708 bold = italic = underline = FALSE; |
709 gtk_imhtml_get_current_format(imhtml, -1, &bold, &italic, &underline); | 709 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), |
710 &bold, &italic, &underline); | |
710 | 711 |
711 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) | 712 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) |
712 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, | 713 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, |
713 toolbar); | 714 toolbar); |
714 | 715 |
715 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) | 716 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) |
716 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, | 717 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, |
717 toolbar); | 718 toolbar); |
718 | 719 |
719 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) | 720 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) |
720 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), | 721 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), |
721 underline, toolbar); | 722 underline, toolbar); |
722 } | 723 } |
723 | 724 |
724 static void cursor_moved_cb(GtkIMHtml *imhtml, GtkMovementStep step, | 725 static void update_format_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) { |
725 gint change, gboolean selected, | 726 update_buttons(toolbar); |
726 GtkIMHtmlToolbar *toolbar) | 727 } |
727 { | 728 |
728 gboolean bold, italic, underline; | 729 static void mark_set_cb(GtkTextBuffer *buffer, GtkTextIter *location, |
729 | 730 GtkTextMark *mark, GtkIMHtmlToolbar *toolbar) |
730 bold = italic = underline = FALSE; | 731 { |
731 gtk_imhtml_get_current_format(imhtml, change, &bold, &italic, &underline); | 732 if(mark != gtk_text_buffer_get_insert(buffer)) |
732 | 733 return; |
733 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) | 734 |
734 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, | 735 update_buttons(toolbar); |
735 toolbar); | |
736 | |
737 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) | |
738 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, | |
739 toolbar); | |
740 | |
741 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) | |
742 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), | |
743 underline, toolbar); | |
744 } | 736 } |
745 | 737 |
746 enum { | 738 enum { |
747 LAST_SIGNAL | 739 LAST_SIGNAL |
748 }; | 740 }; |
1000 toolbar->imhtml = imhtml; | 992 toolbar->imhtml = imhtml; |
1001 g_signal_connect(G_OBJECT(imhtml), "format_buttons_update", G_CALLBACK(update_buttons_cb), toolbar); | 993 g_signal_connect(G_OBJECT(imhtml), "format_buttons_update", G_CALLBACK(update_buttons_cb), toolbar); |
1002 g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", G_CALLBACK(toggle_button_cb), toolbar); | 994 g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", G_CALLBACK(toggle_button_cb), toolbar); |
1003 g_signal_connect(G_OBJECT(imhtml), "format_function_clear", G_CALLBACK(reset_buttons_cb), toolbar); | 995 g_signal_connect(G_OBJECT(imhtml), "format_function_clear", G_CALLBACK(reset_buttons_cb), toolbar); |
1004 g_signal_connect(G_OBJECT(imhtml), "format_function_update", G_CALLBACK(update_format_cb), toolbar); | 996 g_signal_connect(G_OBJECT(imhtml), "format_function_update", G_CALLBACK(update_format_cb), toolbar); |
1005 g_signal_connect_after(G_OBJECT(imhtml), "move_cursor", G_CALLBACK(cursor_moved_cb), toolbar); | 997 g_signal_connect_after(G_OBJECT(GTK_IMHTML(imhtml)->text_buffer), "mark-set", G_CALLBACK(mark_set_cb), toolbar); |
1006 | 998 |
1007 bold = italic = underline = FALSE; | 999 bold = italic = underline = FALSE; |
1008 | 1000 |
1009 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), 0, &bold, &italic, &underline); | 1001 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &underline); |
1010 | 1002 |
1011 if(bold) | 1003 if(bold) |
1012 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, | 1004 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, |
1013 toolbar); | 1005 toolbar); |
1014 | 1006 |