Move ekiga to desktop directory
[unleashed-userland.git] / components / desktop / ekiga / patches / ekiga-07-chat-tab-switch.patch
blobd5f2e83be0c052c6d0ebcd5ba08b1eadf5974280
1 diff -urN ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-area.cpp ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-area.cpp
2 --- ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-area.cpp 2011-07-07 15:47:55.898867468 +0800
3 +++ ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-area.cpp 2011-07-07 15:48:20.617227559 +0800
4 @@ -97,6 +97,7 @@
6 static GObjectClass* parent_class = NULL;
8 +static GtkWidget* tab_message = NULL;
9 /* declaration of internal api */
11 static gboolean message_send_after_buffering (gpointer data);
12 @@ -1381,7 +1382,7 @@
13 gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0);
15 self->priv->message = gtk_text_view_new ();
18 gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (self->priv->message),
19 GTK_WRAP_WORD_CHAR);
20 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (self->priv->message), TRUE);
21 @@ -1408,8 +1409,40 @@
22 g_signal_connect (G_OBJECT (self), "grab-focus",
23 G_CALLBACK (on_chat_area_grab_focus), self->priv->message);
24 gtk_widget_grab_focus (self->priv->message);
25 + tab_switch (NULL, (GtkWidget*)self->priv->message);
28 +static gboolean on_key_press_tab (G_GNUC_UNUSED GtkWidget *w,
29 + GdkEventKey *event,
30 + gpointer* data)
31 +{
32 + if (event->state & GDK_CONTROL_MASK) {
33 + switch (event->keyval) {
34 + case GDK_Tab:
35 + case GDK_KP_Tab:
36 + case GDK_ISO_Left_Tab:
38 + if (gtk_notebook_get_n_pages (GTK_NOTEBOOK (data)) == gtk_notebook_get_current_page (GTK_NOTEBOOK (data))+1)
39 + gtk_notebook_set_current_page (GTK_NOTEBOOK (data), 0);
40 + else
41 + gtk_notebook_next_page (GTK_NOTEBOOK (data));
42 + }
43 + }
46 +void tab_switch (GtkNotebook* notebook,
47 + GtkWidget* message)
49 + if (notebook == NULL && message != NULL)
50 + {
51 + tab_message = message;
53 + } else if (notebook != NULL && message == NULL && tab_message != NULL){
54 + g_signal_connect (GTK_OBJECT(tab_message), "key-press-event",
55 + G_CALLBACK (on_key_press_tab), notebook);
57 + }
60 GType
61 chat_area_get_type ()
62 diff -urN ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-area.h ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-area.h
63 --- ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-area.h 2011-07-07 15:47:55.899257762 +0800
64 +++ ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-area.h 2011-07-07 15:50:24.747737561 +0800
65 @@ -69,6 +69,8 @@
67 const std::string chat_area_get_title (ChatArea* chat);
69 +void tab_switch (GtkNotebook* notebook, GtkWidget* message);
71 /* GObject thingies */
73 #define TYPE_CHAT_AREA (chat_area_get_type ())
74 diff -urN ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-window.cpp ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-window.cpp
75 --- ekiga-3.2.7_old/lib/engine/gui/gtk-frontend/chat-window.cpp 2011-07-07 15:47:55.897707730 +0800
76 +++ ekiga-3.2.7/lib/engine/gui/gtk-frontend/chat-window.cpp 2011-07-07 15:48:51.313533126 +0800
77 @@ -39,6 +39,7 @@
78 #include <glib/gi18n.h>
80 #include "chat-window.h"
81 +#include "chat-area.h"
82 #include "simple-chat-page.h"
83 #include "multiple-chat-page.h"
85 @@ -315,6 +316,7 @@
87 num = gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
88 page, hbox);
89 + tab_switch (GTK_NOTEBOOK (self->priv->notebook), NULL);
90 gtk_widget_show (page);
91 g_signal_connect (page, "message-notice-event",
92 G_CALLBACK (on_message_notice_event), self);
93 @@ -484,6 +486,8 @@
94 gtk_window_add_accel_group (GTK_WINDOW (result), accel);
95 gtk_accel_group_connect (accel, GDK_Escape, (GdkModifierType) 0, GTK_ACCEL_LOCKED,
96 g_cclosure_new_swap (G_CALLBACK (on_escaped), (gpointer) result, NULL));
97 + gtk_accel_group_connect (accel, GDK_w, GDK_CONTROL_MASK, GTK_ACCEL_LOCKED,
98 + g_cclosure_new_swap (G_CALLBACK (on_escaped), (gpointer) result, NULL));
99 g_object_unref (accel);
101 g_signal_connect (result, "focus-in-event",