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
}