| 211 |
211 |
| 212 /************************************************************************** |
212 /************************************************************************** |
| 213 * Callbacks |
213 * Callbacks |
| 214 **************************************************************************/ |
214 **************************************************************************/ |
| 215 |
215 |
| 216 static gint |
216 static gboolean |
| 217 close_conv_cb(GtkWidget *w, PidginConversation *gtkconv) |
217 close_conv_cb(GtkWidget *w, GdkEventButton *event, PidginConversation *gtkconv) |
| 218 { |
218 { |
| 219 GList *list = g_list_copy(gtkconv->convs); |
219 GList *list = g_list_copy(gtkconv->convs); |
| 220 |
220 |
| 221 g_list_foreach(list, (GFunc)purple_conversation_destroy, NULL); |
221 g_list_foreach(list, (GFunc)purple_conversation_destroy, NULL); |
| 222 g_list_free(list); |
222 g_list_free(list); |
| 1329 static void |
1329 static void |
| 1330 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
1330 menu_close_conv_cb(gpointer data, guint action, GtkWidget *widget) |
| 1331 { |
1331 { |
| 1332 PidginWindow *win = data; |
1332 PidginWindow *win = data; |
| 1333 |
1333 |
| 1334 close_conv_cb(NULL, PIDGIN_CONVERSATION(pidgin_conv_window_get_active_conversation(win))); |
1334 close_conv_cb(NULL, NULL, PIDGIN_CONVERSATION(pidgin_conv_window_get_active_conversation(win))); |
| 1335 } |
1335 } |
| 1336 |
1336 |
| 1337 static void |
1337 static void |
| 1338 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
1338 menu_logging_cb(gpointer data, guint action, GtkWidget *widget) |
| 1339 { |
1339 { |
| 6597 pidgin_gdk_pixbuf_make_round(scale); |
6597 pidgin_gdk_pixbuf_make_round(scale); |
| 6598 gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0); |
6598 gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0); |
| 6599 |
6599 |
| 6600 event = gtk_event_box_new(); |
6600 event = gtk_event_box_new(); |
| 6601 gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event); |
6601 gtk_container_add(GTK_CONTAINER(gtkconv->u.im->icon_container), event); |
| |
6602 gtk_event_box_set_visible_window(event, FALSE); |
| 6602 gtk_widget_add_events(event, |
6603 gtk_widget_add_events(event, |
| 6603 GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); |
6604 GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); |
| 6604 g_signal_connect(G_OBJECT(event), "button-press-event", |
6605 g_signal_connect(G_OBJECT(event), "button-press-event", |
| 6605 G_CALLBACK(icon_menu), gtkconv); |
6606 G_CALLBACK(icon_menu), gtkconv); |
| 6606 g_signal_connect(G_OBJECT(event), "motion-notify-event", |
6607 g_signal_connect(G_OBJECT(event), "motion-notify-event", |
| 7493 |
7494 |
| 7494 warn_close_dialog = gtk_dialog_new_with_buttons( |
7495 warn_close_dialog = gtk_dialog_new_with_buttons( |
| 7495 _("Confirm close"), |
7496 _("Confirm close"), |
| 7496 GTK_WINDOW(gtkwin->window), GTK_DIALOG_MODAL, |
7497 GTK_WINDOW(gtkwin->window), GTK_DIALOG_MODAL, |
| 7497 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
7498 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
| 7498 PIDGIN_STOCK_CLOSE_TABS, GTK_RESPONSE_OK, NULL); |
7499 GTK_STOCK_CLOSE, GTK_RESPONSE_OK, NULL); |
| 7499 |
7500 |
| 7500 gtk_dialog_set_default_response(GTK_DIALOG(warn_close_dialog), |
7501 gtk_dialog_set_default_response(GTK_DIALOG(warn_close_dialog), |
| 7501 GTK_RESPONSE_OK); |
7502 GTK_RESPONSE_OK); |
| 7502 |
7503 |
| 7503 gtk_container_set_border_width(GTK_CONTAINER(warn_close_dialog), |
7504 gtk_container_set_border_width(GTK_CONTAINER(warn_close_dialog), |
| 8056 PidginConversation *gtkconv; |
8057 PidginConversation *gtkconv; |
| 8057 |
8058 |
| 8058 gtkconv = g_object_get_data(menu, "clicked_tab"); |
8059 gtkconv = g_object_get_data(menu, "clicked_tab"); |
| 8059 |
8060 |
| 8060 if (gtkconv) |
8061 if (gtkconv) |
| 8061 close_conv_cb(NULL, gtkconv); |
8062 close_conv_cb(NULL, NULL, gtkconv); |
| 8062 } |
8063 } |
| 8063 |
8064 |
| 8064 static gboolean |
8065 static gboolean |
| 8065 right_click_menu_cb(GtkNotebook *notebook, GdkEventButton *event, PidginWindow *win) |
8066 right_click_menu_cb(GtkNotebook *notebook, GdkEventButton *event, PidginWindow *win) |
| 8066 { |
8067 { |
| 8563 if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) |
8564 if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) |
| 8564 pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data)); |
8565 pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data)); |
| 8565 |
8566 |
| 8566 |
8567 |
| 8567 /* Close button. */ |
8568 /* Close button. */ |
| 8568 gtkconv->close = gtk_button_new(); |
8569 gtkconv->close = gtk_event_box_new(); |
| 8569 gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &close_button_width, &close_button_height); |
8570 gtk_event_box_set_visible_window(gtkconv->close, FALSE); |
| 8570 if (gtk_check_version(2, 4, 2) == NULL) { |
8571 close_image = gtk_label_new(NULL); |
| 8571 /* Need to account for extra padding around the gtkbutton */ |
8572 gtk_label_set_markup(GTK_LABEL(close_image),"<b>×</b>"); |
| 8572 gtk_widget_style_get(GTK_WIDGET(gtkconv->close), |
|
| 8573 "focus-line-width", &focus_width, |
|
| 8574 "focus-padding", &focus_pad, |
|
| 8575 NULL); |
|
| 8576 close_button_width += (focus_width + focus_pad) * 2; |
|
| 8577 close_button_height += (focus_width + focus_pad) * 2; |
|
| 8578 } |
|
| 8579 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), |
|
| 8580 close_button_width, close_button_height); |
|
| 8581 |
|
| 8582 gtk_button_set_relief(GTK_BUTTON(gtkconv->close), GTK_RELIEF_NONE); |
|
| 8583 close_image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); |
|
| 8584 gtk_widget_show(close_image); |
8573 gtk_widget_show(close_image); |
| 8585 gtk_container_add(GTK_CONTAINER(gtkconv->close), close_image); |
8574 gtk_container_add(GTK_CONTAINER(gtkconv->close), close_image); |
| 8586 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
8575 gtk_tooltips_set_tip(gtkconv->tooltips, gtkconv->close, |
| 8587 _("Close conversation"), NULL); |
8576 _("Close conversation"), NULL); |
| 8588 |
8577 |
| 8589 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", |
8578 g_signal_connect(G_OBJECT(gtkconv->close), "button-press-event", |
| 8590 G_CALLBACK(close_conv_cb), gtkconv); |
8579 G_CALLBACK(close_conv_cb), gtkconv); |
| 8591 |
8580 |
| 8592 #if !GTK_CHECK_VERSION(2,6,0) |
8581 #if !GTK_CHECK_VERSION(2,6,0) |
| 8593 /* |
8582 /* |
| 8594 * I love Galeon. They have a fix for that stupid annoying visible |
8583 * I love Galeon. They have a fix for that stupid annoying visible |