大家好:
在出现侯选字的时候, 有时候鼠标的光标会挡住侯选字, 这个功能就是在光标进入候选框的时候把鼠标移出去, 这个功能就是在大字的时候把鼠标移开,
因为有的应用程序比如firefox或者是evlution 他们都不会在打字的时候把鼠标光标隐形。

因为我这里 ibus-setup 运行会报错(pull 的最新的代码), 所以没办法作成把这个功能作成一个选项,
我觉得这个功能作成一个选项会更好。

谢谢。 下面是patch 正文。

>From 9fda2a6ce1ecd6820107b7b76eff0d5bd1e4979d Mon Sep 17 00:00:00 2001
From: ZhangJieJing<[email protected]>
Date: Sun, 18 Jan 2009 18:20:59 +0800
Subject: [PATCH] candidate panel: add a function, while mouse cursor
on top of candidate pannel, move out the mouse for user can see the
candidate, since some
 applicatio such as Evolution cann't hide the mouse cursor while
typing.

---
 ui/gtk/candidatepanel.py |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/ui/gtk/candidatepanel.py b/ui/gtk/candidatepanel.py
index 528c7e7..f09d44d 100644
--- a/ui/gtk/candidatepanel.py
+++ b/ui/gtk/candidatepanel.py
@@ -145,11 +145,13 @@ class CandidatePanel(gtk.VBox):
         self.__toplevel.add_events(
             gdk.BUTTON_PRESS_MASK | \
             gdk.BUTTON_RELEASE_MASK | \
-            gdk.BUTTON1_MOTION_MASK)
+            gdk.BUTTON1_MOTION_MASK | \
+            gdk.ENTER_NOTIFY_MASK)
         self.__begin_move = False
         # self.__toplevel.connect("button-press-event",
self.__button_press_event_cb)
         # self.__toplevel.connect("button-release-event",
self.__button_release_event_cb)
         # self.__toplevel.connect("motion-notify-event",
self.__motion_notify_event_cb)
+        self.__toplevel.connect("enter-notify-event",
self.__enter_notify_event_cb)
         self.__toplevel.connect("size-allocate", lambda w, a:
self.__check_position())

         self.__orientation = gtk.ORIENTATION_HORIZONTAL
@@ -459,6 +461,31 @@ class CandidatePanel(gtk.VBox):
             return True
         return False

+    def __enter_notify_event_cb(self, widget, event):
+        """ Move out the mouse cursor to avoid the the candidatepanel
blocking
+        """
+        dx =  dy = 0
+        cursor_width = 20
+        cursor_height = 20
+        # TODO: this mouse cursor 's width should be dynamic get
+
+        width = self.__toplevel.allocation.width
+        height = self.__toplevel.allocation.height
+        if event.x > width/2:
+            dx = width - event.x
+        else:
+            dx = -event.x - cursor_width
+            # - cursor_width for let cursor more get away from panel
+        if event.y > height/2:
+            dy = height - event.y + cursor_height
+        else:
+            dy = -event.y
+        screen = gdk.screen_get_default()
+        gdk.Display.warp_pointer(widget.get_display(),          \
+                                     screen,                    \
+                                     int(event.x_root + dx),    \
+                                     int(event.y_root + dy))
+
     def __motion_notify_event_cb(self, widget, event):
         if self.__begin_move != True:
             return False
--
1.5.4.3

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

回复