Author: iratqq
Date: Thu Jan 22 07:28:52 2009
New Revision: 5779
Modified:
trunk/gtk/gtk-im-uim.c
trunk/scm/action.scm
trunk/xim/ximserver.cpp
Log:
* scm/action.scm (context-propagate-prop-list-update):
- Avoid overwrite custom-value.
(bridge-show-input-state-with-on?): New value.
* xim/ximserver.cpp (InputContext::update_prop_list):
* gtk/gtk-im-uim.c (update_prop_list_cb):
- Check bridge-show-input-state-mode-on?.
Modified: trunk/gtk/gtk-im-uim.c
==============================================================================
--- trunk/gtk/gtk-im-uim.c (original)
+++ trunk/gtk/gtk-im-uim.c Thu Jan 22 07:28:52 2009
@@ -619,6 +619,8 @@
GString *prop_list;
uim_bool show_state;
char *show_state_with;
+ uim_bool show_state_mode;
+ uim_bool show_state_mode_on;
if (uic != focused_context || disable_focused_context)
return;
@@ -631,8 +633,11 @@
show_state = uim_scm_symbol_value_bool("bridge-show-input-state?");
show_state_with =
uim_scm_c_symbol(uim_scm_symbol_value("bridge-show-with?"));
+ show_state_mode = (strcmp(show_state_with, "mode") == 0);
+ show_state_mode_on =
uim_scm_symbol_value_bool("bridge-show-input-state-mode-on?");
+
if (uic->win) {
- if (show_state) {
+ if (show_state && !(show_state_mode && !show_state_mode_on)) {
gint timeout;
gint x, y;
GString *label;
@@ -641,13 +646,16 @@
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 (strcmp(show_state_with, "time") == 0)
+ timeout =
uim_scm_symbol_value_int("bridge-show-input-state-time-length");
+ else
+ timeout = 0;
if (timeout != 0)
caret_state_indicator_set_timeout(uic->caret_state_indicator,
timeout * 1000);
gtk_widget_show_all(uic->caret_state_indicator);
- } else if (strcmp(show_state_with, "mode") == 0) {
+ } else if (show_state_mode && !show_state_mode_on) {
gtk_widget_hide(uic->caret_state_indicator);
}
}
Modified: trunk/scm/action.scm
==============================================================================
--- trunk/scm/action.scm (original)
+++ trunk/scm/action.scm Thu Jan 22 07:28:52 2009
@@ -353,6 +353,8 @@
(if (not (null? (filter-map widget-update-state! widgets)))
(context-propagate-widget-states context)))))
+(define bridge-show-input-state-mode-on? #f)
+
(define context-propagate-prop-list-update
(lambda (context)
(let* ((widgets (context-widgets context))
@@ -362,10 +364,8 @@
(if (eq? bridge-show-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))))
+ (set! bridge-show-input-state-mode-on? #f)
+ (set! bridge-show-input-state-mode-on? #t)))
(im-update-prop-list context widget-config-tree))))
;; API for uim developers
Modified: trunk/xim/ximserver.cpp
==============================================================================
--- trunk/xim/ximserver.cpp (original)
+++ trunk/xim/ximserver.cpp Thu Jan 22 07:28:52 2009
@@ -1098,7 +1098,10 @@
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) {
+ uim_bool show_caret_mode = (strcmp(show_caret_with, "mode") == 0);
+ uim_bool show_caret_mode_on =
uim_scm_symbol_value_bool("bridge-show-input-state-mode-on?");
+
+ if (show_caret_state == UIM_TRUE && !(show_caret_mode
&& !show_caret_mode_on)) {
char *label;
int timeout;
Canddisp *disp = canddisp_singleton();
@@ -1109,7 +1112,7 @@
disp->show_caret_state(label, timeout);
free(label);
mCaretStateShown = true;
- } else if (strcmp(show_caret_with, "mode") == 0) {
+ } else if (show_caret_mode && !show_caret_mode_on) {
Canddisp *disp = canddisp_singleton();
disp->hide_caret_state();
}