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