~ubuntu-branches/ubuntu/wily/scim/wily-proposed

« back to all changes in this revision

Viewing changes to debian/patches/26_scim-1.4.7-trayicon.patch

  • Committer: Bazaar Package Importer
  • Author(s): Rolf Leggewie
  • Date: 2010-08-11 18:28:44 UTC
  • mfrom: (3.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20100811182844-rnn95k63cwehtm75
Tags: 1.4.9-5
* debian/copyright: add my copyright
* debian/control: update to standard 3.9.1, no further changes necessary

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Author: Ikuya Awashiro <ikuya@fruitsbasket.info>
 
2
Status: included upstream in svn r256, can be dropped past 1.4.9
 
3
Description: Use better tray icon
 
4
https://bugzilla.redhat.com/show_bug.cgi?id=447848
 
5
--- a/extras/panel/scim_panel_gtk.cpp
 
6
+++ b/extras/panel/scim_panel_gtk.cpp
 
7
@@ -60,7 +60,7 @@
 
8
 #include "scimstringview.h"
 
9
 
 
10
 #if ENABLE_TRAY_ICON
 
11
-  #include "scimtrayicon.h"
 
12
+//  #include "scimtrayicon.h"
 
13
 #endif
 
14
 
 
15
 using namespace scim;
 
16
@@ -276,6 +276,13 @@
 
17
 #if ENABLE_TRAY_ICON
 
18
 static void       ui_tray_icon_destroy_cb              (GtkObject      *object,
 
19
                                                         gpointer        user_data);
 
20
+static void       ui_tray_icon_popup_menu_cb           (GtkStatusIcon  *status_icon,
 
21
+                                                        guint           button, 
 
22
+                                                        guint           activate_time,
 
23
+                                                        gpointer        user_data);
 
24
+
 
25
+static void       ui_tray_icon_activate_cb             (GtkStatusIcon  *status_icon,
 
26
+                                                        gpointer        user_data);
 
27
 #endif
 
28
 
 
29
 // Client Property Callback
 
30
@@ -399,9 +406,9 @@
 
31
 static PangoFontDescription *_default_font_desc        = 0;
 
32
 
 
33
 #if ENABLE_TRAY_ICON
 
34
-static ScimTrayIcon      *_tray_icon                   = 0;
 
35
-static GtkWidget         *_tray_icon_factory_button    = 0;
 
36
-static gulong             _tray_icon_destroy_signal_id = 0;
 
37
+static GtkStatusIcon     *_tray_icon                   = 0;
 
38
+// static GtkWidget         *_tray_icon_factory_button    = 0;
 
39
+// static gulong             _tray_icon_destroy_signal_id = 0;
 
40
 #endif
 
41
 
 
42
 static gboolean           _input_window_draging        = FALSE;
 
43
@@ -648,9 +655,9 @@
 
44
 
 
45
 #if ENABLE_TRAY_ICON
 
46
     if (_tray_icon) {
 
47
-        g_signal_handler_disconnect (G_OBJECT (_tray_icon),
 
48
-                                     _tray_icon_destroy_signal_id);
 
49
-        gtk_widget_destroy (GTK_WIDGET (_tray_icon));
 
50
+        // g_signal_handler_disconnect (G_OBJECT (_tray_icon),
 
51
+        //                             _tray_icon_destroy_signal_id);
 
52
+        g_object_unref (_tray_icon);
 
53
     }
 
54
     _tray_icon = 0;
 
55
 #endif
 
56
@@ -1305,9 +1312,9 @@
 
57
         }
 
58
 
 
59
 #if ENABLE_TRAY_ICON
 
60
-        if (_tray_icon) {
 
61
-            gtk_window_set_screen (GTK_WINDOW (_tray_icon), screen);
 
62
-        }
 
63
+        // if (_tray_icon) {
 
64
+        //     gtk_window_set_screen (GTK_WINDOW (_tray_icon), screen);
 
65
+        // }
 
66
 #endif
 
67
 
 
68
         if (_help_dialog) {
 
69
@@ -1330,65 +1337,75 @@
 
70
 #endif
 
71
 
 
72
 #if ENABLE_TRAY_ICON
 
73
-static gboolean
 
74
-ui_tray_icon_expose_event_cb (GtkWidget *widget, GdkEventExpose *event)
 
75
-{
 
76
-    gdk_window_clear_area (widget->window, event->area.x, event->area.y,
 
77
-                           event->area.width, event->area.height);
 
78
-    return FALSE;
 
79
-}
 
80
-
 
81
-static void
 
82
-ui_tray_icon_style_set_cb (GtkWidget *widget, GtkStyle *previous_style)
 
83
-{
 
84
-    gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
 
85
-}
 
86
-
 
87
-static void
 
88
-ui_tray_icon_realize_cb (GtkWidget *widget)
 
89
-{
 
90
-    if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
 
91
-        return;
 
92
-
 
93
-    gtk_widget_set_app_paintable (widget, TRUE);
 
94
-    gtk_widget_set_double_buffered (widget, FALSE);
 
95
-    gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
 
96
-    g_signal_connect (widget, "expose_event",
 
97
-                      G_CALLBACK (ui_tray_icon_expose_event_cb), NULL);
 
98
-    g_signal_connect_after (widget, "style_set",
 
99
-                            G_CALLBACK (ui_tray_icon_style_set_cb), NULL);
 
100
-}
 
101
+// static gboolean
 
102
+// ui_tray_icon_expose_event_cb (GtkWidget *widget, GdkEventExpose *event)
 
103
+// {
 
104
+//     gdk_window_clear_area (widget->window, event->area.x, event->area.y,
 
105
+//                            event->area.width, event->area.height);
 
106
+//     return FALSE;
 
107
+// }
 
108
+// 
 
109
+// static void
 
110
+// ui_tray_icon_style_set_cb (GtkWidget *widget, GtkStyle *previous_style)
 
111
+// {
 
112
+//     gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
 
113
+// }
 
114
+// 
 
115
+// static void
 
116
+// ui_tray_icon_realize_cb (GtkWidget *widget)
 
117
+// {
 
118
+//     if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
 
119
+//         return;
 
120
+// 
 
121
+//     gtk_widget_set_app_paintable (widget, TRUE);
 
122
+//     gtk_widget_set_double_buffered (widget, FALSE);
 
123
+//     gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
 
124
+//     g_signal_connect (widget, "expose_event",
 
125
+//                       G_CALLBACK (ui_tray_icon_expose_event_cb), NULL);
 
126
+//     g_signal_connect_after (widget, "style_set",
 
127
+//                             G_CALLBACK (ui_tray_icon_style_set_cb), NULL);
 
128
+// }
 
129
 
 
130
 static gboolean
 
131
 ui_create_tray_icon_when_idle (gpointer data)
 
132
 {
 
133
     GtkWidget *image;
 
134
 
 
135
-    _tray_icon = scim_tray_icon_new ("SCIM Tray Icon");
 
136
-    g_signal_connect (G_OBJECT (_tray_icon), "realize",
 
137
-                      G_CALLBACK (ui_tray_icon_realize_cb), NULL);
 
138
-
 
139
-    _tray_icon_destroy_signal_id = 
 
140
-    g_signal_connect (G_OBJECT (_tray_icon), "destroy",
 
141
-                      G_CALLBACK (ui_tray_icon_destroy_cb),
 
142
-                      0);
 
143
+    _tray_icon = gtk_status_icon_new_from_file (SCIM_KEYBOARD_ICON_FILE);
 
144
+    // g_signal_connect (G_OBJECT (_tray_icon), "realize",
 
145
+    //                   G_CALLBACK (ui_tray_icon_realize_cb), NULL);
 
146
+
 
147
+    // _tray_icon_destroy_signal_id = 
 
148
+    // g_signal_connect (G_OBJECT (_tray_icon), "destroy",
 
149
+    //                   G_CALLBACK (ui_tray_icon_destroy_cb),
 
150
+    //                   0);
 
151
+
 
152
+    // image = ui_create_icon (SCIM_KEYBOARD_ICON_FILE,
 
153
+    //                         NULL,
 
154
+    //                         TRAY_ICON_SIZE,
 
155
+    //                         TRAY_ICON_SIZE,
 
156
+    //                         true);
 
157
+
 
158
+    // _tray_icon_factory_button = gtk_event_box_new ();
 
159
+    // g_signal_connect (G_OBJECT (_tray_icon_factory_button), "realize",
 
160
+    //                   G_CALLBACK (ui_tray_icon_realize_cb), NULL);
 
161
+    // gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), image);
 
162
+    // gtk_container_add (GTK_CONTAINER (_tray_icon), _tray_icon_factory_button);
 
163
 
 
164
-    image = ui_create_icon (SCIM_KEYBOARD_ICON_FILE,
 
165
-                            NULL,
 
166
-                            TRAY_ICON_SIZE,
 
167
-                            TRAY_ICON_SIZE,
 
168
-                            true);
 
169
-
 
170
-    _tray_icon_factory_button = gtk_event_box_new ();
 
171
-    g_signal_connect (G_OBJECT (_tray_icon_factory_button), "realize",
 
172
-                      G_CALLBACK (ui_tray_icon_realize_cb), NULL);
 
173
-    gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), image);
 
174
-    gtk_container_add (GTK_CONTAINER (_tray_icon), _tray_icon_factory_button);
 
175
-    g_signal_connect (G_OBJECT (_tray_icon_factory_button), "button-release-event",
 
176
-                      G_CALLBACK (ui_factory_button_click_cb),
 
177
+    
 
178
+    // g_signal_connect (G_OBJECT (_tray_icon_factory_button), "button-release-event",
 
179
+    //                   G_CALLBACK (ui_factory_button_click_cb),
 
180
+    //                   0);
 
181
+    
 
182
+    g_signal_connect (G_OBJECT (_tray_icon), "popup-menu",
 
183
+                      G_CALLBACK (ui_tray_icon_popup_menu_cb),
 
184
+                      0);
 
185
+    
 
186
+    g_signal_connect (G_OBJECT (_tray_icon), "activate",
 
187
+                      G_CALLBACK (ui_tray_icon_activate_cb),
 
188
                       0);
 
189
 
 
190
-    gtk_widget_show_all (GTK_WIDGET (_tray_icon));
 
191
+    gtk_status_icon_set_visible (_tray_icon, TRUE);
 
192
 
 
193
     return FALSE;
 
194
 }
 
195
@@ -1679,6 +1696,19 @@
 
196
 }
 
197
 
 
198
 static void
 
199
+ui_tray_icon_popup_menu_cb (GtkStatusIcon *status_icon, guint button, 
 
200
+    guint activate_time, gpointer user_data)
 
201
+{
 
202
+    action_show_command_menu ();
 
203
+}
 
204
+
 
205
+static void
 
206
+ui_tray_icon_activate_cb (GtkStatusIcon *status_icon, gpointer user_data)
 
207
+{
 
208
+    _panel_agent->request_factory_menu ();
 
209
+}
 
210
+
 
211
+static void
 
212
 ui_factory_menu_activate_cb (GtkMenuItem *item,
 
213
                              gpointer     user_data)
 
214
 {
 
215
@@ -2236,19 +2266,19 @@
 
216
 }
 
217
 
 
218
 #if ENABLE_TRAY_ICON
 
219
-static void
 
220
-ui_tray_icon_destroy_cb (GtkObject      *object,
 
221
-                         gpointer        user_data)
 
222
-{
 
223
-    SCIM_DEBUG_MAIN (1) << "Tray Icon destroyed!\n";
 
224
-
 
225
-    gtk_widget_destroy (GTK_WIDGET (object));
 
226
-
 
227
-    _tray_icon = 0;
 
228
-    _tray_icon_factory_button = 0;
 
229
-
 
230
-    g_idle_add (ui_create_tray_icon_when_idle, NULL);
 
231
-}
 
232
+// static void
 
233
+// ui_tray_icon_destroy_cb (GtkObject      *object,
 
234
+//                          gpointer        user_data)
 
235
+// {
 
236
+//     SCIM_DEBUG_MAIN (1) << "Tray Icon destroyed!\n";
 
237
+// 
 
238
+//     gtk_widget_destroy (GTK_WIDGET (object));
 
239
+// 
 
240
+//     _tray_icon = 0;
 
241
+//     _tray_icon_factory_button = 0;
 
242
+// 
 
243
+//     g_idle_add (ui_create_tray_icon_when_idle, NULL);
 
244
+// }
 
245
 #endif
 
246
 
 
247
 static void
 
248
@@ -2681,18 +2711,21 @@
 
249
     }
 
250
 
 
251
 #if ENABLE_TRAY_ICON
 
252
-    if (_tray_icon_factory_button) {
 
253
-        GtkWidget *icon = gtk_bin_get_child (GTK_BIN (_tray_icon_factory_button));
 
254
+    // if (_tray_icon_factory_button) {
 
255
+    //     GtkWidget *icon = gtk_bin_get_child (GTK_BIN (_tray_icon_factory_button));
 
256
 
 
257
-        if (icon)
 
258
-            gtk_container_remove (GTK_CONTAINER (_tray_icon_factory_button), icon);
 
259
+    //     if (icon)
 
260
+    //         gtk_container_remove (GTK_CONTAINER (_tray_icon_factory_button), icon);
 
261
 
 
262
-        icon = ui_create_icon (info.icon, NULL, TRAY_ICON_SIZE, TRAY_ICON_SIZE, true);
 
263
+    //     icon = ui_create_icon (info.icon, NULL, TRAY_ICON_SIZE, TRAY_ICON_SIZE, true);
 
264
 
 
265
-        gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), icon);
 
266
+    //     gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), icon);
 
267
 
 
268
-        if (_tooltips)
 
269
-            gtk_tooltips_set_tip (_tooltips, _tray_icon_factory_button, info.name.c_str (), NULL);
 
270
+    //     if (_tooltips)
 
271
+    //         gtk_tooltips_set_tip (_tooltips, _tray_icon_factory_button, info.name.c_str (), NULL);
 
272
+    // }
 
273
+    if (_tray_icon) {
 
274
+        gtk_status_icon_set_from_file (_tray_icon, info.icon.c_str());
 
275
     }
 
276
 #endif
 
277