t-suw****@users*****
t-suw****@users*****
2007年 11月 11日 (日) 14:18:53 JST
Index: AquaSKK/AsciiConversionMode.cpp
diff -u AquaSKK/AsciiConversionMode.cpp:1.12 AquaSKK/AsciiConversionMode.cpp:1.13
--- AquaSKK/AsciiConversionMode.cpp:1.12 Sat Oct 20 10:38:08 2007
+++ AquaSKK/AsciiConversionMode.cpp Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: AsciiConversionMode.cpp,v 1.12 2007/10/20 01:38:08 t-suwa Exp $
+ $Id: AsciiConversionMode.cpp,v 1.13 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -648,6 +648,8 @@
current_candidate_index,
candidates.size(),
mode);
+
+ parent->setWindowID(candidates_window_id);
}
void AsciiConversionMode::goToNextCandidatesFrame() {
@@ -682,4 +684,6 @@
// ã¦ã¤ã³ãã¦ID(UInt16)ãå«ãCFDataã使ããé¯ã¸éãã
ServerConnectionFactory::theInstance().newConnection().
send(kSKKCloseCandidatesWindow, newCFDataRefWithWindowID(candidates_window_id));
+
+ parent->clearWindowID();
}
Index: AquaSKK/BIM.cpp
diff -u AquaSKK/BIM.cpp:1.16 AquaSKK/BIM.cpp:1.17
--- AquaSKK/BIM.cpp:1.16 Sat Feb 3 13:04:21 2007
+++ AquaSKK/BIM.cpp Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: BIM.cpp,v 1.16 2007/02/03 04:04:21 t-suwa Exp $
+ $Id: BIM.cpp,v 1.17 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -224,6 +224,15 @@
}
}
+CppCFData getWindowID(BIMSessionHandle inSessionHandle) {
+ CppCFData data;
+
+ IMSessionInputMode* session = (*inSessionHandle)->imsession_input_mode;
+ data.append(CFSwapInt16HostToBig(session->getWindowID()));
+
+ return data;
+}
+
// ZbVªANeBuÉÈé
ComponentResult BIMSessionActivate(BIMSessionHandle inSessionHandle) {
ActiveSession::theInstance().Add(inSessionHandle);
@@ -231,8 +240,9 @@
// Ýèð[h
ClientConfiguration::theInstance().reloadConfiguration();
- // ANeBuÉÈÁ½ðIÉ`¦é
- ServerConnectionFactory::theInstance().newConnection().send(kBasicMessageActivated);
+ // ANeBuÉÈÁ½ðT[o[É`¦é
+ ServerConnectionFactory::theInstance().newConnection().send(kBasicMessageActivated,
+ getWindowID(inSessionHandle));
// L[{[hCAEgðú»·é
InitializeKeyboardLayout();
@@ -244,10 +254,9 @@
ComponentResult BIMSessionDeactivate(BIMSessionHandle inSessionHandle) {
ActiveSession::theInstance().Remove(inSessionHandle);
- // ANeBuÅÈÈÁ½ðIÉ`¦éB
- if(ActiveSession::theInstance().Count() == 0) {
- ServerConnectionFactory::theInstance().newConnection().send(kBasicMessageDeactivated);
- }
+ // ANeBuÅÈÈÁ½ðT[o[É`¦é
+ ServerConnectionFactory::theInstance().newConnection().send(kBasicMessageDeactivated,
+ getWindowID(inSessionHandle));
return 0;
}
Index: AquaSKK/CandidatesManager.h
diff -u AquaSKK/CandidatesManager.h:1.5 AquaSKK/CandidatesManager.h:1.6
--- AquaSKK/CandidatesManager.h:1.5 Sat Nov 10 20:05:05 2007
+++ AquaSKK/CandidatesManager.h Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: CandidatesManager.h,v 1.5 2007/11/10 11:05:05 t-suwa Exp $
+ $Id: CandidatesManager.h,v 1.6 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -40,5 +40,7 @@
void windowNext(unsigned int window_id);
void windowPrev(unsigned int window_id);
void closeWindow(unsigned int window_id);
+ void showWindow(unsigned int window_id);
+ void hideWindow(unsigned int window_id);
CandidatesWindowController* getWindowController(unsigned window_id);
};
Index: AquaSKK/CandidatesManager.mm
diff -u AquaSKK/CandidatesManager.mm:1.7 AquaSKK/CandidatesManager.mm:1.8
--- AquaSKK/CandidatesManager.mm:1.7 Sat Nov 10 20:05:05 2007
+++ AquaSKK/CandidatesManager.mm Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/* -*- objc -*-
- $Id: CandidatesManager.mm,v 1.7 2007/11/10 11:05:05 t-suwa Exp $
+ $Id: CandidatesManager.mm,v 1.8 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -115,6 +115,18 @@
cand_windows[window_id] = NULL;
}
+void CandidatesManager::showWindow(unsigned int window_id) {
+ CandidatesWindowController* cwc = cand_windows[window_id];
+
+ [[cwc window] orderFront:nil];
+}
+
+void CandidatesManager::hideWindow(unsigned int window_id) {
+ CandidatesWindowController* cwc = cand_windows[window_id];
+
+ [[cwc window] orderOut:nil];
+}
+
CandidatesWindowController* CandidatesManager::getWindowController(unsigned window_id) {
return cand_windows[window_id];
}
Index: AquaSKK/ChangeLog
diff -u AquaSKK/ChangeLog:1.53 AquaSKK/ChangeLog:1.54
--- AquaSKK/ChangeLog:1.53 Sun Nov 11 01:54:24 2007
+++ AquaSKK/ChangeLog Sun Nov 11 14:18:52 2007
@@ -1,5 +1,11 @@
2007-11-11 Tomotaka SUWA <t.suw****@mac*****>
+ * BIM.cpp, ParentInputMode.*, *ConversionMode.cpp,
+ ServerMessageReceiver.*: åè£ã¦ã£ã³ãã¦ã®ã¢ã¯ãã£ãåã»éã¢ã¯ãã£ã
+ åã«å¯¾å¿ã
+
+ * CandidatesManager.*: showWindow() 㨠hideWindow() ã追å ã
+
* KanjiConversionMode.cpp: ãã«ãæ¤ç´¢ã¨ Spotlight æ¤ç´¢ã§åè£ã¦ã£ã³
ãã¦ãåé¢ã«è¡¨ç¤ºãããªãä¸å
·åãä¿®æ£ã
Index: AquaSKK/Info-AquaSKKInputMethod.plist
diff -u AquaSKK/Info-AquaSKKInputMethod.plist:1.21 AquaSKK/Info-AquaSKKInputMethod.plist:1.22
--- AquaSKK/Info-AquaSKKInputMethod.plist:1.21 Sat Nov 10 20:05:05 2007
+++ AquaSKK/Info-AquaSKKInputMethod.plist Sun Nov 11 14:18:52 2007
@@ -23,7 +23,7 @@
<key>CFBundleSignature</key>
<string>askk</string>
<key>CFBundleVersion</key>
- <string>2007-11-10</string>
+ <string>2007-11-11</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>tsInputMethodIconFileKey</key>
Index: AquaSKK/Info-AquaSKKServer.plist
diff -u AquaSKK/Info-AquaSKKServer.plist:1.21 AquaSKK/Info-AquaSKKServer.plist:1.22
--- AquaSKK/Info-AquaSKKServer.plist:1.21 Sat Nov 10 20:05:05 2007
+++ AquaSKK/Info-AquaSKKServer.plist Sun Nov 11 14:18:52 2007
@@ -23,7 +23,7 @@
<key>CFBundleSignature</key>
<string>askk</string>
<key>CFBundleVersion</key>
- <string>2007-11-10</string>
+ <string>2007-11-11</string>
<key>NSMainNibFile</key>
<string>Principal</string>
<key>NSPrincipalClass</key>
Index: AquaSKK/KanjiConversionMode.cpp
diff -u AquaSKK/KanjiConversionMode.cpp:1.17 AquaSKK/KanjiConversionMode.cpp:1.18
--- AquaSKK/KanjiConversionMode.cpp:1.17 Sun Nov 11 01:54:25 2007
+++ AquaSKK/KanjiConversionMode.cpp Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: KanjiConversionMode.cpp,v 1.17 2007/11/10 16:54:25 t-suwa Exp $
+ $Id: KanjiConversionMode.cpp,v 1.18 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -1145,6 +1145,8 @@
candidates_window_num_of_frames,
candidates_window_current_frame,
current_candidate_index, candidates.size(), mode);
+
+ parent->setWindowID(candidates_window_id);
}
SInt32 getCandidatesWindowLevel(const Point& pt) {
@@ -1277,6 +1279,8 @@
// ã¦ã¤ã³ãã¦ID(UInt16)ãå«ãCFDataã使ããé¯ã¸éãã
ServerConnectionFactory::theInstance().newConnection().
send(kSKKCloseCandidatesWindow, newCFDataRefWithWindowID(candidates_window_id));
+
+ parent->clearWindowID();
}
void mergeCandidates(const NumericConverter& numconv,
Index: AquaSKK/ParentInputMode.cpp
diff -u AquaSKK/ParentInputMode.cpp:1.7 AquaSKK/ParentInputMode.cpp:1.8
--- AquaSKK/ParentInputMode.cpp:1.7 Sat Oct 20 10:38:08 2007
+++ AquaSKK/ParentInputMode.cpp Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: ParentInputMode.cpp,v 1.7 2007/10/20 01:38:08 t-suwa Exp $
+ $Id: ParentInputMode.cpp,v 1.8 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -44,17 +44,17 @@
#include "SKKConfig.h"
ParentInputMode::ParentInputMode()
- :hiragana_input_mode(*this),
- zen_kata_input_mode(*this),
- han_kata_input_mode(*this),
- han_asc_input_mode(*this),
- zen_asc_input_mode(*this),
- kanji_conversion_mode(*this),
- ascii_conversion_mode(*this),
- is_kanji_mode(false),
- is_ascii_conv_mode(false),
- current_input_mode(&hiragana_input_mode) {
- // empty
+ : hiragana_input_mode(*this),
+ zen_kata_input_mode(*this),
+ han_kata_input_mode(*this),
+ han_asc_input_mode(*this),
+ zen_asc_input_mode(*this),
+ kanji_conversion_mode(*this),
+ ascii_conversion_mode(*this),
+ is_kanji_mode(false),
+ is_ascii_conv_mode(false),
+ current_input_mode(&hiragana_input_mode) {
+ clearWindowID();
}
ParentInputMode::~ParentInputMode() {
@@ -317,3 +317,15 @@
redisplay();
}
}
+
+void ParentInputMode::setWindowID(unsigned short id) {
+ windowID_ = id;
+}
+
+void ParentInputMode::clearWindowID() {
+ windowID_ = 0xffff;
+}
+
+unsigned short ParentInputMode::getWindowID() const {
+ return windowID_;
+}
Index: AquaSKK/ParentInputMode.h
diff -u AquaSKK/ParentInputMode.h:1.6 AquaSKK/ParentInputMode.h:1.7
--- AquaSKK/ParentInputMode.h:1.6 Wed May 17 01:13:10 2006
+++ AquaSKK/ParentInputMode.h Sun Nov 11 14:18:52 2007
@@ -1,10 +1,10 @@
/*
- $Id: ParentInputMode.h,v 1.6 2006/05/16 16:13:10 t-suwa Exp $
+ $Id: ParentInputMode.h,v 1.7 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
Copyright (C) 2002-2004 phonohawk
- Copyright (C) 2006 Tomotaka SUWA <t.suw****@mac*****>
+ Copyright (C) 2006-2007 Tomotaka SUWA <t.suw****@mac*****>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -51,6 +51,8 @@
class ChildInputMode;
class ParentInputMode: public InputMode {
+ unsigned short windowID_;
+
protected:
HiraganaInputMode hiragana_input_mode;
ZenKataInputMode zen_kata_input_mode;
@@ -124,6 +126,10 @@
// ¶ñð\¦·éÉÄÎêéBÇÌæ¤É\¦·é©ÍïÌNXªè·éB
virtual void display(const CppCFString& str_to_display) = 0;
+
+ void setWindowID(unsigned short id);
+ void clearWindowID();
+ unsigned short getWindowID() const;
};
#endif // INC__ParentInputMode__
Index: AquaSKK/ServerMessageReceiver.h
diff -u AquaSKK/ServerMessageReceiver.h:1.6 AquaSKK/ServerMessageReceiver.h:1.7
--- AquaSKK/ServerMessageReceiver.h:1.6 Tue Jun 12 23:25:08 2007
+++ AquaSKK/ServerMessageReceiver.h Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/*
- $Id: ServerMessageReceiver.h,v 1.6 2007/06/12 14:25:08 t-suwa Exp $
+ $Id: ServerMessageReceiver.h,v 1.7 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -51,6 +51,8 @@
void showPreferencesBox();
CppCFData fetchCompletions(const CppCFData& attachment);
CppCFData valueForKey(NSString* key);
+ void showCandidatesWindow(const CppCFData& data);
+ void hideCandidatesWindow(const CppCFData& data);
public:
static void start(const CFStringRef loopMode);
Index: AquaSKK/ServerMessageReceiver.mm
diff -u AquaSKK/ServerMessageReceiver.mm:1.11 AquaSKK/ServerMessageReceiver.mm:1.12
--- AquaSKK/ServerMessageReceiver.mm:1.11 Sat Nov 10 20:05:05 2007
+++ AquaSKK/ServerMessageReceiver.mm Sun Nov 11 14:18:52 2007
@@ -1,5 +1,5 @@
/* -*- objc -*-
- $Id: ServerMessageReceiver.mm,v 1.11 2007/11/10 11:05:05 t-suwa Exp $
+ $Id: ServerMessageReceiver.mm,v 1.12 2007/11/11 05:18:52 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -70,69 +70,87 @@
switch(msgid) {
case kBasicMessageActivated: // ã¯ã©ã¤ã¢ã³ããã¢ã¯ãã£ãã«ãªã£ã
ClientConnectionFactory::theInstance().setDefaultTarget(header.fProcessSerialNumber);
+ showCandidatesWindow(body);
break;
+
case kBasicMessageDeactivated: { // ã¯ã©ã¤ã¢ã³ããã¢ã¯ãã£ãã§ãªããªã£ã
ProcessSerialNumber psn;
psn.highLongOfPSN = 0;
psn.lowLongOfPSN = kNoProcess;
-
ClientConnectionFactory::theInstance().setDefaultTarget(psn);
+ hideCandidatesWindow(body);
break;
}
+
case kBasicMessageHidePalettes: // ãã¬ãããé ãããTSMããæç¤ºãå
¥ã£ã
break;
+
case kSKKMessageSearch:
reply = searchWord(body);
break;
+
case kSKKCreateCandidatesWindow:
reply = createCandidatesWindow(body);
break;
+
case kSKKCandidatesWindowNext:
reply = candidatesWindowNext(body);
break;
+
case kSKKCandidatesWindowPrev:
reply = candidatesWindowPrev(body);
break;
+
case kSKKCloseCandidatesWindow:
closeCandidatesWindow(body);
break;
+
case kSKKRegisterThisToUserDic:
registerThisToUserDic(body);
break;
+
case kSKKRegisterToggleEntry:
registerToggleEntry(body);
break;
+
case kSKKRemoveThisFromUserDic:
removeThisFromUserDic(body);
break;
+
case kSKKShowAboutBox:
showAboutBox();
break;
+
case kSKKShowPreferencesBox:
showPreferencesBox();
break;
+
case kSKKShowWordRegistrationBox:
break;
+
case kSKKFetchCompletions:
reply = fetchCompletions(body);
break;
+
case kBasicMessageIsSkkEggLikeNewline:
reply = valueForKey(KEY_egg_like_newline);
break;
+
case kBasicMessageIsNumericKeypad_HalfWidth:
reply = valueForKey(KEY_numkeypad_use_halfwidth);
break;
+
case kBasicMessageIsAsciiModeStartup:
reply = valueForKey(KEY_force_ascii_mode_startup);
break;
+
case kBasicMessageUseNumericConversion:
reply = valueForKey(KEY_use_numeric_conversion);
break;
+
case kBasicMessageKbdLayoutId:
reply = valueForKey(KEY_keyboard_layout_id);
break;
- default:
- break;
}
return reply;
@@ -292,3 +310,19 @@
return CppCFData(&result, sizeof(result));
}
+
+void ServerMessageReceiver::showCandidatesWindow(const CppCFData& data) {
+ unsigned short window_id = CFSwapInt16BigToHost(data.getUInt16(0));
+ if(window_id == 0xffff) return;
+
+ CandidatesManager& cm = CandidatesManager::sharedManager();
+ cm.showWindow(window_id);
+}
+
+void ServerMessageReceiver::hideCandidatesWindow(const CppCFData& data) {
+ unsigned short window_id = CFSwapInt16BigToHost(data.getUInt16(0));
+ if(window_id == 0xffff) return;
+
+ CandidatesManager& cm = CandidatesManager::sharedManager();
+ cm.hideWindow(window_id);
+}