Author: iratqq
Date: Tue Jan 13 03:58:30 2009
New Revision: 5709

Modified:
   trunk/gtk/gtk-im-uim.c
   trunk/scm/action.scm
   trunk/scm/im-custom.scm
   trunk/xim/ximserver.cpp

Log:
* scm/im-custom.scm (bridge-show-with?):
  - Add new knob.

* scm/action.scm (context-propagate-prop-list-update):
  - Add switch bridge-show-input-state? on/off on
    bridge-show-input-state-with-mode.

* gtk/gtk-im-uim.c (update_prop_list_cb):
* xim/ximserver.cpp (InputContext::update_prop_list):
  - Hide indicator on bridge-show-input-state-with-mode.

  Add kinput2 like indicator mode.


Modified: trunk/gtk/gtk-im-uim.c
==============================================================================
--- trunk/gtk/gtk-im-uim.c      (original)
+++ trunk/gtk/gtk-im-uim.c      Tue Jan 13 03:58:30 2009
@@ -618,6 +618,7 @@
   IMUIMContext *uic = (IMUIMContext *)ptr;
   GString *prop_list;
   uim_bool show_state;
+  char *show_state_with;

   if (uic != focused_context || disable_focused_context)
     return;
@@ -629,21 +630,26 @@
   g_string_free(prop_list, TRUE);

   show_state = uim_scm_symbol_value_bool("bridge-show-input-state?");
-  if (show_state && uic->win) {
-    gint timeout;
-    gint x, y;
-    GString *label;
-
-    gdk_window_get_origin(uic->win, &x, &y);
-    label = get_caret_state_label_from_prop_list(str);
- caret_state_indicator_update(uic->caret_state_indicator, x, y, label->str);
-    g_string_free(label, TRUE);
- timeout = uim_scm_symbol_value_int("bridge-show-input-state-time-length"); + show_state_with = uim_scm_c_symbol(uim_scm_symbol_value("bridge-show-with?"));
+  if (uic->win) {
+    if (show_state) {
+      gint timeout;
+      gint x, y;
+      GString *label;
+
+      gdk_window_get_origin(uic->win, &x, &y);
+      label = get_caret_state_label_from_prop_list(str);
+ caret_state_indicator_update(uic->caret_state_indicator, x, y, label->str);
+      g_string_free(label, TRUE);
+ timeout = uim_scm_symbol_value_int("bridge-show-input-state-time-length");

-    if (timeout != 0)
-      caret_state_indicator_set_timeout(uic->caret_state_indicator,
+      if (timeout != 0)
+       caret_state_indicator_set_timeout(uic->caret_state_indicator,
                                        timeout * 1000);
-    gtk_widget_show_all(uic->caret_state_indicator);
+      gtk_widget_show_all(uic->caret_state_indicator);
+ } else if (strcmp(show_state_with, "bridge-show-input-state-with-mode") == 0) {
+      gtk_widget_hide(uic->caret_state_indicator);
+    }
   }
 }


Modified: trunk/scm/action.scm
==============================================================================
--- trunk/scm/action.scm        (original)
+++ trunk/scm/action.scm        Tue Jan 13 03:58:30 2009
@@ -359,6 +359,13 @@
           (branches (map widget-compose-live-branch
                          widgets))
           (widget-config-tree (apply string-append branches)))
+      (if (eq? bridge-show-with?
+               'bridge-show-input-state-with-mode)
+          (if (eq? (context-current-mode context) 0)
+              (set! bridge-show-input-state? #f)
+              (begin
+                (set! bridge-show-input-state-time-length 0)
+                (set! bridge-show-input-state? #t))))
       (im-update-prop-list context widget-config-tree))))

 ;; API for uim developers

Modified: trunk/scm/im-custom.scm
==============================================================================
--- trunk/scm/im-custom.scm     (original)
+++ trunk/scm/im-custom.scm     Tue Jan 13 03:58:30 2009
@@ -486,6 +486,23 @@
   (N_ "Show input mode nearby cursor")
   (N_ "long description will be here."))

+(define-custom 'bridge-show-with? 'bridge-show-input-state-with-mode
+  '(global visual-preference)
+  (list 'choice
+        (list 'bridge-show-input-state-with-mode
+              (N_ "With mode")
+              (N_ "long description will be here."))
+        (list 'bridge-show-input-state-with-time
+              (N_ "With time")
+              (N_ "long description will be here.")))
+  (N_ "Show input mode")
+  (N_ "long description will be here."))
+
+(custom-add-hook 'bridge-show-with?
+                'custom-activity-hooks
+                (lambda ()
+                   bridge-show-input-state?))
+
 (define-custom 'bridge-show-input-state-time-length 3
   '(global visual-preference)
   '(integer 0 100)
@@ -495,7 +512,9 @@
 (custom-add-hook 'bridge-show-input-state-time-length
                 'custom-activity-hooks
                 (lambda ()
-                  bridge-show-input-state?))
+                  (and bridge-show-input-state?
+                        (eq? bridge-show-with?
+                             'bridge-show-input-state-with-time))))

 ;; EB Library support
 ;; 2005-02-08 Takuro Ashie <[email protected]>

Modified: trunk/xim/ximserver.cpp
==============================================================================
--- trunk/xim/ximserver.cpp     (original)
+++ trunk/xim/ximserver.cpp     Tue Jan 13 03:58:30 2009
@@ -1096,6 +1096,8 @@
     // mismatch during IM switch caused from context-update-widgets.
     uim_bool show_caret_state =
        uim_scm_symbol_value_bool("bridge-show-input-state?");
+    char *show_caret_with =
+       uim_scm_c_symbol(uim_scm_symbol_value("bridge-show-with?"));
     if (show_caret_state == UIM_TRUE) {
        char *label;
        int timeout;
@@ -1107,6 +1109,9 @@
        disp->show_caret_state(label, timeout);
        free(label);
        mCaretStateShown = true;
+ } else if (strcmp(show_caret_with, "bridge-show-input-state-with-mode") == 0) {
+       Canddisp *disp = canddisp_singleton();
+       disp->hide_caret_state();
     }
 #endif
 }

Reply via email to