• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A multilingual input method framework


Commit MetaInfo

Revision1ac01a0d238cc1124db6349afca8faa3cf394228 (tree)
Zeit2005-09-01 01:54:16
Autorekato <ekato@ff9a...>
Commiterekato

Log Message

* xim/ : Port changes in r1366 from trunk.

Ändern Zusammenfassung

Diff

--- a/xim/ximic.cpp
+++ b/xim/ximic.cpp
@@ -407,6 +407,9 @@ void XimIC::setFocus()
407407 }
408408 }
409409
410+// Note that the sequence of XIM_SET_IC_FOCUS and XIM_UNSET_FOCUS
411+// events is not consistent. Be careful about hiding caret state and
412+// candidate window.
410413 void XimIC::unsetFocus()
411414 {
412415 if (!mIsActive)
@@ -415,14 +418,6 @@ void XimIC::unsetFocus()
415418 mIsActive = false;
416419 nrActiveIC--;
417420 m_kkContext->focusOut();
418- // Since the sequence of XIM_SET_IC_FOCUS and XIM_UNSET_FOCUS
419- // events is not consistent, unsetting focus of candidate window
420- // is now handled in XimIC::setFocus() and focus_in message from
421- // helper application.
422- //
423- // if (mConvdisp && m_kkContext->hasActiveCandwin()) {
424- // mConvdisp->unset_focus();
425- // }
426421 }
427422
428423 void XimIC::OnKeyEvent(keyEventX e)
--- a/xim/ximserver.cpp
+++ b/xim/ximserver.cpp
@@ -305,7 +305,7 @@ InputContext::~InputContext()
305305 mFocusedContext = NULL;
306306
307307 if (mConvdisp)
308- mConvdisp->set_pe(0);
308+ mConvdisp->set_pe(NULL);
309309
310310 delete m_pe;
311311 uim_release_context(mUc);
@@ -451,6 +451,13 @@ void
451451 InputContext::focusOut()
452452 {
453453 uim_helper_client_focus_out(mUc);
454+ if (mFocusedContext == this) {
455+ Canddisp *disp = canddisp_singleton();
456+ if (isCaretStateShown())
457+ disp->hide_caret_state();
458+ if (hasActiveCandwin())
459+ disp->hide();
460+ }
454461 }
455462
456463 XimServer *
@@ -471,7 +478,7 @@ InputContext::commit_cb(void *ptr, const char *str)
471478 InputContext *ic = (InputContext *)ptr;
472479 XimIC *xic = ic->get_ic();
473480
474- clear_cb(ptr);
481+ ic->clear_pe_stat();
475482 ic->update_preedit();
476483 xic->commit_string(str);
477484 }
@@ -479,7 +486,7 @@ InputContext::commit_cb(void *ptr, const char *str)
479486 void InputContext::clear_cb(void *ptr)
480487 {
481488 InputContext *ic = (InputContext *)ptr;
482- ic->clear_preedit();
489+ ic->clear_pe_stat();
483490 }
484491
485492 void InputContext::pushback_cb(void *ptr, int attr, const char *str)
@@ -534,11 +541,18 @@ void InputContext::update_prop_label_cb(void *ptr, const char *str)
534541 ic->update_prop_label(str);
535542 }
536543
537-void InputContext::clear_preedit()
544+void InputContext::clear_pe_stat()
538545 {
539546 m_pe->clear();
540547 }
541548
549+void InputContext::clear_preedit()
550+{
551+ clear_pe_stat();
552+ if (mConvdisp)
553+ mConvdisp->clear_preedit();
554+}
555+
542556 uString InputContext::get_preedit_string()
543557 {
544558 uString str;
@@ -614,11 +628,10 @@ bool InputContext::hasActiveCandwin()
614628 return mCandwinActive;
615629 }
616630
631+// reset
617632 void InputContext::clear()
618633 {
619634 clear_preedit();
620- if (mConvdisp)
621- mConvdisp->clear_preedit();
622635 candidate_deactivate();
623636 uim_reset_context(mUc);
624637 }
--- a/xim/ximserver.h
+++ b/xim/ximserver.h
@@ -193,15 +193,15 @@ public:
193193 static void update_prop_label_cb(void *ptr, const char *str);
194194 static InputContext *focusedContext();
195195 static void deletefocusedContext();
196-protected:
196+private:
197197 void commit_string(char *);
198+ void clear_pe_stat();
199+
198200 XimIC *mXic;
199201 XimServer *mServer;
200202 pe_stat *m_pe;
201203 Convdisp *mConvdisp;
202204 uim_context mUc;
203-private:
204- static InputContext *mFocusedContext;
205205 bool mCandwinActive;
206206 int mDisplayLimit;
207207 int mNumPage;
@@ -211,6 +211,8 @@ private:
211211 char *mEngineName;
212212 char *mLocaleName;
213213 bool mCaretStateShown;
214+private:
215+ static InputContext *mFocusedContext;
214216 };
215217
216218 class Locale {