user stats

Member SinceFebruary 7, 2010
Last VisitJuly 25, 2016


coordinator for

Paint.NET PSD Plugin


personal statement

activity stream

July 25, 2016 - PinyinTones: Pushed 34d669d8487d256fe0be28a23da1bde054d3352d, Allow the 'v' character to be entered The 'v' character can now be entered by typing the 'v' key twice. The 'v' key is ordinarily used to enter the Pinyin 'ü' character. However, Pinyin is often mixed with text that is in another language, such as in a vocabulary list. It is inconvenient to have to switch to a different input method whenever a 'v' is needed, especially if lots of input methods are installed. Enabling the 'v' character allows short blocks of non-Pinyin text to be typed without switching out of PinyinTones.

July 24, 2016 - PinyinTones: Pushed a472cc27356e4f702943eca79d0e971631d1aac0, Improve error-handling in _SetTone Pass through all errors to the caller. The composition should only be terminated if all steps succeed.

July 16, 2016 - PinyinTones: Pushed 1d09ec69c2cce4dff6aa398ccf7aa3df91f87029, Release COM pointers safely in cleanup blocks In functions that release all COM pointers in a cleanup block, the pointers should be initialized when declared. Otherwise, an early exit might cause an uninitialized pointer to be accessed and released. Also, early exits must be done with a goto instead of a return, so that the cleanup block runs. The Microsoft sample code does not need to be changed. Some functions release COM pointers within if blocks. Other functions only goto the cleanup block if a reference to the COM object has been successfully obtained, and return early if it has not.

July 13, 2016 - PinyinTones: Pushed e388de0f273a0c5ac041e4fd87914580e4505d57, Use 4-space indent, add more comments Code with a 2-space indent has been converted to a 4-space indent, to match the rest of the codebase. Functions are described in a comment block before the function header.

July 11, 2016 - PinyinTones: Pushed a743161fdc89b5aa19c5f8a62f88b23d2c1e7d1e, Clean up composition on termination The composition must be cleaned up whenever it is terminated, including when PinyinTones did not initiate the termination. For example, the composition will be terminated when a different window gets the focus. Without clean-up, the dotted-underline display attribute will remain in place. After switching back to the original application, it will look like the composition is still active, even though it has already been terminated. Even Microsoft IMEs have trouble with this. The Microsoft Pinyin IME does not clear the display attribute. The Microsoft Japanese IME clears the display attribute at the next keystroke, which of course starts a new composition instead of continuing the original composition. WordPad clears the display attribute itself. Word does not. Notepad is not TSF-aware, yet it gets the best behavior of all -- the composition actually remains active through the focus change.

July 9, 2016 - PinyinTones: Pushed 545e25025fb5138f202894fa2f58b85152cc8765, Cancel composition on Escape key

July 7, 2016 - PinyinTones: Pushed 6537c10313a38e52ba960a981ba27dba5576d64e, Handle Backspace key, ignore arrow keys PinyinTones must handle special keys, since they are no longer inserted into the composition. However, we cannot handle every editing key without duplicating most of the logic in the Windows TextBox control. The Microsoft Pinyin IME handles the Backspace key, but it ignores other editing keys such as the left and right arrow keys. We will follow the same approach. The Backspace key is important because it is used for immediate correction of typos. Other edits can wait until the composition has been terminated. Ignoring the arrow keys will help to set expectations about the limited editability of the composition.

June 12, 2016 - PinyinTones: Pushed 060fc4b71c5e187afc6c0d653203f3ecd4aeeb8f, Return HRESULT from _StartComposition _StartComposition and DoEditSession were throwing away HRESULTs. The HRESULTs are now stored in a variable and returned to the caller. This makes it less likely for an error to leave the text service in an indeterminate state.

June 8, 2016 - PinyinTones: Pushed 626bf1de3b83c8135675b5e8467079456d669ed1, Update build environment to Visual Studio 2015 The Visual C++ project has been retargeted to Visual C++ 2015. The WDK build script inadvertently depended on Visual Studio 2012 by using headers from the bundled Windows SDK 7.1A. It now uses headers from the Windows SDK 7.1, which is a standalone download.

June 8, 2016 - PinyinTones: Pushed 07befc5e7807ae30920f70ff158ffb37d5cbc46c, Handle only specific characters in a composition The idea is to be in a composition as little as possible. Only keys in the Pinyin alphabet will start a composition, and only specific keys are handled within a composition. A tone number will terminate the composition, as will any non-Pinyin key. Previously, any key that produced a Unicode character would start a new composition or be handled by PinyinTones in an existing composition. This had many side effects. The Tab key could no longer be used to tab through a dialog, and the Delete key would leave the program in an indeterminate state. Numerals between 1 and 4 could not be typed. It is much better to handle only specific keys. Keys that are not handled by PinyinTones, such as control keys, can be typed directly into the application outside of a composition. It is also possible to type any number, since numerals are only eaten within a composition.