rpms/scim/devel scim-1.4.7-timeout.patch, NONE, 1.1 scim-1.4.7-trayicon.patch, NONE, 1.1 scim.spec, 1.122, 1.123
Huang Peng (phuang)
fedora-extras-commits at redhat.com
Thu Jul 17 06:03:23 UTC 2008
Author: phuang
Update of /cvs/pkgs/rpms/scim/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30930
Modified Files:
scim.spec
Added Files:
scim-1.4.7-timeout.patch scim-1.4.7-trayicon.patch
Log Message:
Fix bug 447848 & bug 444150.
scim-1.4.7-timeout.patch:
--- NEW FILE scim-1.4.7-timeout.patch ---
diff -up scim-1.4.7/extras/panel/scim_panel_gtk.cpp.timeout scim-1.4.7/extras/panel/scim_panel_gtk.cpp
--- scim-1.4.7/extras/panel/scim_panel_gtk.cpp.timeout 2008-07-17 09:44:53.000000000 +0800
+++ scim-1.4.7/extras/panel/scim_panel_gtk.cpp 2008-07-17 10:47:57.000000000 +0800
@@ -638,6 +638,7 @@ ui_initialize (void)
GtkWidget *input_window_vbox;
ui_load_config ();
+ _toolbar_hidden = false;
if (_lookup_table_window) gtk_widget_destroy (_lookup_table_window);
if (_input_window) gtk_widget_destroy (_input_window);
@@ -1024,8 +1025,13 @@ ui_initialize (void)
}
//Init timeout callback
+ if (_toolbar_hide_timeout != 0) {
+ g_source_remove (_toolbar_hide_timeout);
+ _toolbar_hide_timeout = 0;
+
+ }
if (_toolbar_always_show && _toolbar_hide_timeout_max > 0) {
- _toolbar_hide_timeout = gtk_timeout_add (1000, ui_hide_window_timeout_cb, NULL);
+ _toolbar_hide_timeout = g_timeout_add (1000, ui_hide_window_timeout_cb, NULL);
g_signal_connect (G_OBJECT (_toolbar_window), "enter-notify-event",
G_CALLBACK (ui_toolbar_window_crossing_cb),
GINT_TO_POINTER (0));
@@ -2492,11 +2498,14 @@ panel_agent_thread_func (gpointer data)
if (!_panel_agent->run ())
std::cerr << "Failed to run Panel.\n";
-
+/*
G_LOCK (_global_resource_lock);
_should_exit = true;
G_UNLOCK (_global_resource_lock);
-
+*/
+ gdk_threads_enter ();
+ gtk_main_quit ();
+ gdk_threads_leave ();
g_thread_exit (NULL);
return ((gpointer) NULL);
}
@@ -3703,7 +3712,7 @@ int main (int argc, char *argv [])
start_auto_start_helpers ();
- _check_exit_timeout = gtk_timeout_add (500, check_exit_timeout_cb, NULL);
+ // _check_exit_timeout = g_timeout_add (500, check_exit_timeout_cb, NULL);
gdk_threads_enter ();
gtk_main ();
scim-1.4.7-trayicon.patch:
--- NEW FILE scim-1.4.7-trayicon.patch ---
diff -up scim-1.4.7/extras/panel/scim_panel_gtk.cpp.trayicon scim-1.4.7/extras/panel/scim_panel_gtk.cpp
--- scim-1.4.7/extras/panel/scim_panel_gtk.cpp.trayicon 2008-07-17 10:57:23.000000000 +0800
+++ scim-1.4.7/extras/panel/scim_panel_gtk.cpp 2008-07-17 13:57:55.000000000 +0800
@@ -60,7 +60,7 @@
#include "scimstringview.h"
#if ENABLE_TRAY_ICON
- #include "scimtrayicon.h"
+// #include "scimtrayicon.h"
#endif
using namespace scim;
@@ -276,6 +276,13 @@ static void ui_command_menu_deacti
#if ENABLE_TRAY_ICON
static void ui_tray_icon_destroy_cb (GtkObject *object,
gpointer user_data);
+static void ui_tray_icon_popup_menu_cb (GtkStatusIcon *status_icon,
+ guint button,
+ guint activate_time,
+ gpointer user_data);
+
+static void ui_tray_icon_activate_cb (GtkStatusIcon *status_icon,
+ gpointer user_data);
#endif
// Client Property Callback
@@ -399,9 +406,9 @@ static GtkTooltips *_tooltips
static PangoFontDescription *_default_font_desc = 0;
#if ENABLE_TRAY_ICON
-static ScimTrayIcon *_tray_icon = 0;
-static GtkWidget *_tray_icon_factory_button = 0;
-static gulong _tray_icon_destroy_signal_id = 0;
+static GtkStatusIcon *_tray_icon = 0;
+// static GtkWidget *_tray_icon_factory_button = 0;
+// static gulong _tray_icon_destroy_signal_id = 0;
#endif
static gboolean _input_window_draging = FALSE;
@@ -648,9 +655,9 @@ ui_initialize (void)
#if ENABLE_TRAY_ICON
if (_tray_icon) {
- g_signal_handler_disconnect (G_OBJECT (_tray_icon),
- _tray_icon_destroy_signal_id);
- gtk_widget_destroy (GTK_WIDGET (_tray_icon));
+ // g_signal_handler_disconnect (G_OBJECT (_tray_icon),
+ // _tray_icon_destroy_signal_id);
+ g_object_unref (_tray_icon);
}
_tray_icon = 0;
#endif
@@ -1305,9 +1312,9 @@ ui_switch_screen (GdkScreen *screen)
}
#if ENABLE_TRAY_ICON
- if (_tray_icon) {
- gtk_window_set_screen (GTK_WINDOW (_tray_icon), screen);
- }
+ // if (_tray_icon) {
+ // gtk_window_set_screen (GTK_WINDOW (_tray_icon), screen);
+ // }
#endif
if (_help_dialog) {
@@ -1330,65 +1337,75 @@ ui_switch_screen (GdkScreen *screen)
#endif
#if ENABLE_TRAY_ICON
-static gboolean
-ui_tray_icon_expose_event_cb (GtkWidget *widget, GdkEventExpose *event)
-{
- gdk_window_clear_area (widget->window, event->area.x, event->area.y,
- event->area.width, event->area.height);
- return FALSE;
-}
-
-static void
-ui_tray_icon_style_set_cb (GtkWidget *widget, GtkStyle *previous_style)
-{
- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
-}
-
-static void
-ui_tray_icon_realize_cb (GtkWidget *widget)
-{
- if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
- return;
-
- gtk_widget_set_app_paintable (widget, TRUE);
- gtk_widget_set_double_buffered (widget, FALSE);
- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
- g_signal_connect (widget, "expose_event",
- G_CALLBACK (ui_tray_icon_expose_event_cb), NULL);
- g_signal_connect_after (widget, "style_set",
- G_CALLBACK (ui_tray_icon_style_set_cb), NULL);
-}
+// static gboolean
+// ui_tray_icon_expose_event_cb (GtkWidget *widget, GdkEventExpose *event)
+// {
+// gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+// event->area.width, event->area.height);
+// return FALSE;
+// }
+//
+// static void
+// ui_tray_icon_style_set_cb (GtkWidget *widget, GtkStyle *previous_style)
+// {
+// gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+// }
+//
+// static void
+// ui_tray_icon_realize_cb (GtkWidget *widget)
+// {
+// if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
+// return;
+//
+// gtk_widget_set_app_paintable (widget, TRUE);
+// gtk_widget_set_double_buffered (widget, FALSE);
+// gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+// g_signal_connect (widget, "expose_event",
+// G_CALLBACK (ui_tray_icon_expose_event_cb), NULL);
+// g_signal_connect_after (widget, "style_set",
+// G_CALLBACK (ui_tray_icon_style_set_cb), NULL);
+// }
static gboolean
ui_create_tray_icon_when_idle (gpointer data)
{
GtkWidget *image;
- _tray_icon = scim_tray_icon_new ("SCIM Tray Icon");
- g_signal_connect (G_OBJECT (_tray_icon), "realize",
- G_CALLBACK (ui_tray_icon_realize_cb), NULL);
-
- _tray_icon_destroy_signal_id =
- g_signal_connect (G_OBJECT (_tray_icon), "destroy",
- G_CALLBACK (ui_tray_icon_destroy_cb),
- 0);
+ _tray_icon = gtk_status_icon_new_from_file (SCIM_KEYBOARD_ICON_FILE);
+ // g_signal_connect (G_OBJECT (_tray_icon), "realize",
+ // G_CALLBACK (ui_tray_icon_realize_cb), NULL);
+
+ // _tray_icon_destroy_signal_id =
+ // g_signal_connect (G_OBJECT (_tray_icon), "destroy",
+ // G_CALLBACK (ui_tray_icon_destroy_cb),
+ // 0);
+
+ // image = ui_create_icon (SCIM_KEYBOARD_ICON_FILE,
+ // NULL,
+ // TRAY_ICON_SIZE,
+ // TRAY_ICON_SIZE,
+ // true);
+
+ // _tray_icon_factory_button = gtk_event_box_new ();
+ // g_signal_connect (G_OBJECT (_tray_icon_factory_button), "realize",
+ // G_CALLBACK (ui_tray_icon_realize_cb), NULL);
+ // gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), image);
+ // gtk_container_add (GTK_CONTAINER (_tray_icon), _tray_icon_factory_button);
- image = ui_create_icon (SCIM_KEYBOARD_ICON_FILE,
- NULL,
- TRAY_ICON_SIZE,
- TRAY_ICON_SIZE,
- true);
-
- _tray_icon_factory_button = gtk_event_box_new ();
- g_signal_connect (G_OBJECT (_tray_icon_factory_button), "realize",
- G_CALLBACK (ui_tray_icon_realize_cb), NULL);
- gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), image);
- gtk_container_add (GTK_CONTAINER (_tray_icon), _tray_icon_factory_button);
- g_signal_connect (G_OBJECT (_tray_icon_factory_button), "button-release-event",
- G_CALLBACK (ui_factory_button_click_cb),
+
+ // g_signal_connect (G_OBJECT (_tray_icon_factory_button), "button-release-event",
+ // G_CALLBACK (ui_factory_button_click_cb),
+ // 0);
+
+ g_signal_connect (G_OBJECT (_tray_icon), "popup-menu",
+ G_CALLBACK (ui_tray_icon_popup_menu_cb),
+ 0);
+
+ g_signal_connect (G_OBJECT (_tray_icon), "activate",
+ G_CALLBACK (ui_tray_icon_activate_cb),
0);
- gtk_widget_show_all (GTK_WIDGET (_tray_icon));
+ gtk_status_icon_set_visible (_tray_icon, TRUE);
return FALSE;
}
@@ -1679,6 +1696,19 @@ ui_factory_button_click_cb (GtkWidget *b
}
static void
+ui_tray_icon_popup_menu_cb (GtkStatusIcon *status_icon, guint button,
+ guint activate_time, gpointer user_data)
+{
+ action_show_command_menu ();
+}
+
+static void
+ui_tray_icon_activate_cb (GtkStatusIcon *status_icon, gpointer user_data)
+{
+ _panel_agent->request_factory_menu ();
+}
+
+static void
ui_factory_menu_activate_cb (GtkMenuItem *item,
gpointer user_data)
{
@@ -2236,19 +2266,19 @@ ui_command_menu_deactivate_cb (GtkWidget
}
#if ENABLE_TRAY_ICON
-static void
-ui_tray_icon_destroy_cb (GtkObject *object,
- gpointer user_data)
-{
- SCIM_DEBUG_MAIN (1) << "Tray Icon destroyed!\n";
-
- gtk_widget_destroy (GTK_WIDGET (object));
-
- _tray_icon = 0;
- _tray_icon_factory_button = 0;
-
- g_idle_add (ui_create_tray_icon_when_idle, NULL);
-}
+// static void
+// ui_tray_icon_destroy_cb (GtkObject *object,
+// gpointer user_data)
+// {
+// SCIM_DEBUG_MAIN (1) << "Tray Icon destroyed!\n";
+//
+// gtk_widget_destroy (GTK_WIDGET (object));
+//
+// _tray_icon = 0;
+// _tray_icon_factory_button = 0;
+//
+// g_idle_add (ui_create_tray_icon_when_idle, NULL);
+// }
#endif
static void
@@ -2681,18 +2711,21 @@ slot_update_factory_info (const PanelFac
}
#if ENABLE_TRAY_ICON
- if (_tray_icon_factory_button) {
- GtkWidget *icon = gtk_bin_get_child (GTK_BIN (_tray_icon_factory_button));
+ // if (_tray_icon_factory_button) {
+ // GtkWidget *icon = gtk_bin_get_child (GTK_BIN (_tray_icon_factory_button));
- if (icon)
- gtk_container_remove (GTK_CONTAINER (_tray_icon_factory_button), icon);
+ // if (icon)
+ // gtk_container_remove (GTK_CONTAINER (_tray_icon_factory_button), icon);
- icon = ui_create_icon (info.icon, NULL, TRAY_ICON_SIZE, TRAY_ICON_SIZE, true);
+ // icon = ui_create_icon (info.icon, NULL, TRAY_ICON_SIZE, TRAY_ICON_SIZE, true);
- gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), icon);
+ // gtk_container_add (GTK_CONTAINER (_tray_icon_factory_button), icon);
- if (_tooltips)
- gtk_tooltips_set_tip (_tooltips, _tray_icon_factory_button, info.name.c_str (), NULL);
+ // if (_tooltips)
+ // gtk_tooltips_set_tip (_tooltips, _tray_icon_factory_button, info.name.c_str (), NULL);
+ // }
+ if (_tray_icon) {
+ gtk_status_icon_set_from_file (_tray_icon, info.icon.c_str());
}
#endif
Index: scim.spec
===================================================================
RCS file: /cvs/pkgs/rpms/scim/devel/scim.spec,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -r1.122 -r1.123
--- scim.spec 1 Jul 2008 04:45:53 -0000 1.122
+++ scim.spec 17 Jul 2008 06:02:21 -0000 1.123
@@ -44,6 +44,8 @@
Patch22: scim-1.4.7-fix-gdm.patch
Patch23: scim-1.4.7-remove-help-frame.patch
Patch24: scim-1.4.7-translation-update-431995.patch
+Patch25: scim-1.4.7-timeout.patch
+Patch26: scim-1.4.7-trayicon.patch
%description
SCIM is a user friendly and full featured input method user interface and
@@ -171,6 +173,8 @@
%patch22 -p1 -b .22-fix-gdm
%patch23 -p1 -b .23-help-frame
%patch24 -p1 -b .24-trans
+%patch25 -p1 -b .25-timeout
+%patch26 -p1 -b .26-trayicon
%if %{snapshot}
@@ -303,6 +307,10 @@
%changelog
+* Thu Jul 17 2008 Huang Peng <phuang at redhat.com> - 1.4.7-27.fc10
+- add patch scim-1.4.7-timeout.patch to fix bug 444150.
+- add patch scim-1.4.7-trayicon.patch to fix bug 447848.
+
* Mon Jun 30 2008 Jens Petersen <petersen at redhat.com> - 1.4.7-26.fc10
- make xinput script no longer require multilib immodules
(Julian Sikorski, #448268)
More information about the fedora-extras-commits
mailing list