pidgin/gtkimhtmltoolbar.c

changeset 17394
ebe5e0e583da
parent 17303
138cbb17e5cd
child 17395
26e128801bf0
equal deleted inserted replaced
17392:e88a54874d37 17394:ebe5e0e583da
35 #include "gtkdialogs.h" 35 #include "gtkdialogs.h"
36 #include "gtkimhtmltoolbar.h" 36 #include "gtkimhtmltoolbar.h"
37 #include "gtkthemes.h" 37 #include "gtkthemes.h"
38 #include "gtkutils.h" 38 #include "gtkutils.h"
39 39
40 #include <gdk/gdkkeysyms.h>
41
40 static GtkHBoxClass *parent_class = NULL; 42 static GtkHBoxClass *parent_class = NULL;
41 43
42 static void toggle_button_set_active_block(GtkToggleButton *button, 44 static void toggle_button_set_active_block(GtkToggleButton *button,
43 gboolean is_active, 45 gboolean is_active,
44 GtkIMHtmlToolbar *toolbar); 46 GtkIMHtmlToolbar *toolbar);
623 cur->next = it; 625 cur->next = it;
624 it_last->next = cur; 626 it_last->next = cur;
625 return ls; 627 return ls;
626 } 628 }
627 629
628
629 static gboolean 630 static gboolean
630 smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley) 631 smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley)
631 { 632 {
632 while (list) { 633 while (list) {
633 GtkIMHtmlSmiley *cur = list->data; 634 GtkIMHtmlSmiley *cur = list->data;
636 list = list->next; 637 list = list->next;
637 } 638 }
638 return TRUE; 639 return TRUE;
639 } 640 }
640 641
642 static gboolean
643 smiley_dialog_input_cb(GtkWidget *dialog, GdkEvent *event, GtkIMHtmlToolbar *toolbar)
644 {
645 gboolean close_dialog =
646 (GDK_EVENT_KEY == event->type) ? (GDK_Escape == event->key.keval) :
647 (GDK_EVENT_BUTTON == event->type) ? (1 == event->button.button) : FALSE;
648
649 if (close_dialog)
650 close_smiley_dialog(NULL, NULL, toolbar);
651
652 return close_dialog;
653 }
641 654
642 static void 655 static void
643 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar) 656 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
644 { 657 {
645 GtkWidget *dialog; 658 GtkWidget *dialog;
719 } 732 }
720 else { 733 else {
721 smiley_table = gtk_label_new(_("This theme has no available smileys.")); 734 smiley_table = gtk_label_new(_("This theme has no available smileys."));
722 } 735 }
723 736
737 gtk_widget_add_events (dialog, GDK_KEY_PRESS_MASK | GDK_BUTTON_PRESS_MASK) ;
738 g_signal_connect (G_OBJECT (dialog), "key-press-event", (GCallback)smiley_dialog_input_cb, toolbar) ;
739 g_signal_connect (G_OBJECT (dialog), "button-press-event", (GCallback)smiley_dialog_input_cb, toolbar) ;
724 gtk_container_add(GTK_CONTAINER(dialog), smiley_table); 740 gtk_container_add(GTK_CONTAINER(dialog), smiley_table);
725 741
726 gtk_widget_show(smiley_table); 742 gtk_widget_show(smiley_table);
727 743
728 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); 744 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);

mercurial