« July 2007 | Archives index | September 2007 »
August 23, 2007
Install r120, 1 item changed
Xcode project file noise
Posted 12:38 PM
Synergy r405, 16 items changed
Bump version number post-release
Posted 12:37 PM
Install r119, 1 item changed
Tagging for Synergy 3.1.5b release
Posted 12:37 PM
Synergy r404, 1 item changed
Tagging 3.1.5b release
Posted 12:36 PM
Install r118, 33 items changed
Bump version number in Synergy installer target for 3.1.5b release
Posted 12:30 PM
Synergy r403, 17 items changed
Bump version number for release
Posted 12:22 PM
August 12, 2007
Modernize loops (WODebug, 69bc74f)
Modernize loops by switching to Objective-C 2.0 fast enumeration.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:26 PM
Switch to Git-based build numbering (WODebug, f070d67)
Invoke the new Git-based build numbering scripts during the appropriate Shell Script build phases.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:23 PM
Clean up build settings (WODebug, 7bd2719)
Clean up superfluous build settings at project and target levels.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:21 PM
Set up ".gitignore" file (WODebug, d370d53)
Tell Git to ignore ".bak" and ".temp" files, as well as the temporary file created as part of the build numbering system.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:21 PM
Update project bundle format (WODebug, acf354e)
Update the project bundle format to the new Xcode 3.0 format.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:21 PM
Switch to Git-based build numbering system (Synergy Advance, 65e8d69)
Replace the old Subversion-based build numbering with the new Git-based system.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:13 PM
Clean-up build settings (Synergy Advance, 8c0d371)
Remove all redundant build settings at both project and target levels.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 5:10 PM
Convert project bundle to Xcode 3.0 format (Synergy Advance, 62b0784)
This change breaks backwards compatibility with Xcode 2.x series.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:58 PM
Update tests to use new Foundation API (WOCommon, 09eae47)
In ripping out my old NSRect-to-CGRect functions I overlooked a couple of places in the test suite where they were still used. This commit replaces those instances with calls to the system-provided functions.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:30 PM
Updates for changes to CDSA API in Leopard (WOCommon, 787852a)
Quell some compiler warnings by modifying the declared types of some variables and function pointers to match those in the Leopard version of the CDSA API.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:17 PM
Fix NSArray reference which was really an NSMutableArray (WOCommon, ada8ea0)
As part of the change to Objective-C 2.0 fast enumeration I discovered that one of the untyped (id) objects that I was previously treating as a mutable array was actually mislabelled as immutable. This commit adjusts the test to reflect reality, quelling a compiler warning as a result.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:09 PM
Remove reference to "commonInit" method in WOPreferencesWindowController (WOCommon, 5b43413)
Thanks to the better compiler checks stemming from the use of anonymous private categories, found a method that was still declared as being implemented even though the actual implementation had been removed in the distant past. This commit removes the superfluous declaration.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:06 PM
Remove newlineCharacterSet method (WOCommon, 34f23e1)
The system now implements a newlineCharacterSet method which clashes with the implementation in my NSCharacterSet category, so remove the duplicate method.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:04 PM
Update WOBindableMenuWithSeparators for Leopard APIs (WOCommon, 7599e9a)
Now uses NSMenuItem instances rather than untyped objects which conform to the NSMenuItem protocol.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:58 PM
Update WOProxy for Objective-C 2.0 (WOCommon, 87ce76e)
Replace deprecated API calls with appropriate alternatives from Leopard. Also remove methods no longer relevant under garbage collection; in addition the "allocWithZone:" method was replaced with "alloc" because zones don't have meaning under garbage collection.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:55 PM
Remove NSRect to CGRect conversion functions (WOCommon, 78afcea)
These are now provided by the system instead, so remove the functions and their corresponding tests.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:55 PM
Clean-up build settings (WOCommon, 7e8ed20)
At project and target level there were a lot of redundantly-specified build settings which could be omitted and inherited from a higher level, so this commit cleans-up those redundant settings and eliminates some unnecessary overrides.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:02 PM
Add bundle unloading notes (WOCommon, 0f47531)
Now that bundles can be unloaded will need to modify the WOBundle class to support that; this commit adds some notes on one possible strategy for doing this.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:02 PM
Use anonymous private categories (WOCommon, adae16f)
Switch to anonymous private categories (enabled by Objective-C 2.0) where appropriate; this gives the compiler more information and allows it to produce better warnings about missing methods.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:48 PM
Remove deprecated NSUserDefaultsController category (WOCommon, 5d195df)
With the move to Leopard causing many other things to break, now is a great time to remove the deprecated category on NSUserDefaultsController.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:11 PM
Modernize loops (WOCommon, 05a1822)
Remove deprecated WO_ENUMERATE/foreach macros and modernize all loops to use the new Objective-C 2.0 fast enumeration construct. The WO_REVERSE_ENUMERATE and WO_KEY_ENUMERATE macros are retained because they have no equivalent language-level constructs.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:08 PM
Fix spelling error in code documentation (WOCommon, e1bbe80)
Fix a minor typo in the code documentation for the WODebugMacros.h header.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:44 PM
Ignore temporary files (WOCommon, b3c4b51)
Update the ".gitignore" file to also ignore temporary files (with ".bak" and ".temp" extensions).
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:39 PM
Set up Git-based build number versioning (WOCommon, 97d7a32)
Invoke new Git-based build number versioning script instead of the old Subversion-based one. Also add a ".gitignore" file to ignore the resulting temporary file.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:39 PM
Project bundle updates for Xcode 3.0 (WOCommon, 83b721f)
Update project bundle for compatibility with Xcode 3.0.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:39 PM
Run "git status" in backticks (buildtools, 2d25c8b)
As mentioned in the last commit (06d81f7), it's simpler just to run "git status" from backticks seeing as it always seems to return a non-zero exit status; running it through the "command" method is an unnecessary complication.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:17 PM
Use "git status" to detect unclean working copies (buildtools, 06d81f7)
Although parsing the textual output of "git status" in order to detect an unclean working copy doesn't strike me as the most elegant solution, it does seem to be about the only straightforward way to do so.
"env GIT_PAGER=cat git diff --quiet HEAD" works very well for most cases but it ignores untracked content and my goal is not to detect changes to tracked content but to detect unclean working copies. "git ls-files" might be useful as an alternative but it seems that it work require multiple invocations and I would somehow need to manually filter ignored files.
So in the end parsing the "git status" seems like the best solution. In order to implement this I modified the "command" method to optionally allow non-zero exit status because it seems in local testing that "git status" often exits with a non-zero exit code. I may chose to simplify this later and just run the "git status" in backticks directly. At the same time I fixed a bug in the command method where my use of single quotes was preventing variable interpolation.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:12 PM
Use GIT_PAGER instead of PAGER (buildtools, d3177b3)
The previous commit (fd2e869) worked but using GIT_PAGER rather than PAGER is strictly more correct in terms of the intention behind the commit (stopping Git from using the pager).
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 12:52 PM
Set PAGER to cat when capturing git exit status (buildtools, fd2e869)
This script worked but really only out of luck because of the way the environment is set up for commands run in backticks in a Ruby script run from Xcode. In normal operation "git diff" actually pipes all output through a pager, so even when using --quiet you won't get the exit code of git, but of the pager itself! This makes the "--exit-code" option to "git diff" useless, and the same is true for "--quiet" because it implies "--exit-code".
Although the script worked, executing the same commands by hand in the shell failed whenever PAGER was set; to clarify, the "git diff" command did work, but it always returned an exit status of 0, thus preventing the "+" from ever being appended to unclean working copies.
So, to make things clearer and guard against possible future changes in Ruby or Xcode, this commit explicitly sets the PAGER to "cat" so as to deactivate all paging when running "git diff".
The unclean working copy detection method still needs work. "git diff HEAD" will still only pick up changes to content that git already knows about; ie. tracked content. It will not pick up things like the addition of new files. In order to detect this I can either just scan the output of "git status" (which I don't really like because it seems hacky) or somehow use lower-level commands like "git ls-files" to build up a list of modified, new or deleted content.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 12:43 PM
Add temporary file reference to Xcode project (WOBezel, 28ba2ce)
I've added the com.wincent.buildtools.gitrev.h file to the Xcode project in the hope that it will help Xcode's dependency analysis. Regrettably, it seems that this doesn't make any difference: one would hope that Xcode would see that a file included from the Info.plist preprocessing header file is modified and regenerate the property list accordingly, but it does not. The only way to get the Info.plist file to be generated again is to perform a full clean first.
This is definitely a bug in Xcode and one that I don't recall seeing in the last version; I'm going to commit this change anyway seeing as it doesn't do any harm to keep it in the tree.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:16 AM
Remove "Other Sources" group (WOBezel, 3be02fb)
Remove the unused "Other Sources" group from the Xcode project.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:06 AM
Add Git-based build numbers (WOBezel, a25ca59)
Use the new UpdateGitRevisionsNumbers.rb script in the Wincent Build Tools to automatically update the build number as part of each build when required.
This commit also modifies the .gitignore file so as to ignore the temporary file produced as part of the process.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 2:06 AM
Initial version of Git build number scripts (buildtools, bd6ad3d)
This commit adds a simple Git utility module which doesn't do much yet, just reports "revision numbers" (corresponding to the abbreviated hash of the most recent commit), and a script intended for use in an Xcode Shell Script build phase that leverages this module and uses it to create or update a "build number" file that can then be used for as a header for Info.plist preprocessing or other purposes.
This replaces the old scripts which did the same thing in Subversion terms; in the end I decided to go with the abbreviated hash as the build number despite the fact that it's not very human intelligible: its most important attribute is that it uniquely identifies the exact version of the source code that was used to produce a build.
Note that due to a bug in Git the "local changes" variant does not yet work (this is where the build number has a "+" appended to it to indicate local changes since the last commit).
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:52 AM
Tighten up exit status check in post-receive script (snippets, 2be9c00)
The post-receive script currently does a somewhat loose exitstatus check ($? == 0) which happens to work because the Process::Status class evidently overrides the == operator (or implements to_int; I haven't actually looked at the source code to know why this works); rather than relying on this behaviour this commit explicitly compares the exit status ($?.exitstatus == 0) to guard against possible changes to the Ruby API in the future.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:43 AM
August 11, 2007
Objective-C 2.0 modernization (WOHotKey, e3f4f9a)
Sweeping changes across the codebase to take advantage of new features in Objective-C 2.0; this is still not a complete revision and there are still more changes that can be made.
Changes so far effected: use of fast enumeration instead of old enumeration macros; elimination of now-redundant calls to no-op methods such as release, autorelease and friends; elimination of dealloc methods where possible and replacement by finalize methods where necessary; some of the singleton semantics have changed so update some comments to reflect that; some formatting changes for better readability in sections where the code needed to be changed as part of the Objective-C 2.0 modernization; use of shorter, cleaner autoreleased object initialization rather than the alloc/init pattern where possible; removal of dead (unimplemented, unneeded) methods revealed as a consequence of the switch to Objective-C 2.0 anonymous categories; more compact notation for the "work on temporary mutable object but return immutable version" pattern (using the "copy" method; this is a pattern which is made possible by the move to garbage collection); added notes at key-enumeration sites as reminders that these cannot be switched to use the new fast enumeration syntax; and conversion of manually-coded accessors to synthesized properties in many classes.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 7:27 PM
Make "commonInit" pattern subclass-friendly (WOHotKey, d6e6a9b)
The "commonInit" pattern previously used by the WOHotKeyCaptureTextField and WOHotKeyCaptureTextFieldCell classes could produce unexpected results if anyone ever tried to create a subclass that itself called a "commonInit" method.
This commit proofs these classes against that (albeit highly unlikely) possibility by using a class-specific name for the commonInit method. In this way the shared initialization code is still kept in one place, in a "subclass-friendly" way.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 6:10 PM
Use anonymous categories for private functionality (WOHotKey, fc7fca1)
Replace old WOPrivate categories with Objective-C 2.0 anonymous categories; this allows for better compile-time checking.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 6:05 PM
Add missing call to finalize (WOTest, 94a6adf)
The finalize method in the WOMock class was missing a call to super's finalize method.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 6:01 PM
Objective-C 2.0 modernization (WOBezel, e67aedb)
This commit makes a large number of changes across the codebase to take advantage of new features in Objective-C 2.0 and garbage collection: non-retained references converted to weak references; most accessors replaced with properties and synthesized accessors; dealloc methods replaced with finalize methods where appropriate and removed entirely when possible; use of anonymous categories for private methods (allows for better compile-time checking); some formatting changes for better readability where said changes coincide with code which already needed to be modified as part of the Objective-C 2.0 modernization; minor refactoring of some accessor method names as part of the transition to properties (for example, "setIsResizable" and "setIsCloseable" were renamed to "setResizable" and "setCloseable" respectively, while the corresponding getters continue as "isResizable" and "isCloseable"); removal of some methods which should now never be called (retain, release and so on); conversion of some old-style Doxygen comments to new-style ones, in sections where code was being modified anyway as part of the transition.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 6:00 PM
Core Animation notes (WOBezel, ae375d1)
Core Animation makes a lot of the code currently in the WOWindow class redundant. This commit adds some notes noting changes which will be required in order to remove to Core Animation; this is a desirable move to make because it will simplify the code and reduce the memory footprint.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 4:07 PM
Modifications to WOAlertBezelView class for garbage collection (WOBezel, 50e8fed)
Remove autorelease message send which is now a no-op under garbage collection.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:58 PM
Readability edits to WOAlertBezelView class (WOBezel, 69379b9)
Improve readability by eliminating unnecessary braces.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:57 PM
Modify NSCursor category for garbage collection (WOBezel, 73e0de7)
Change previously static local variables to globals so that the desired singleton behaviour can be achieved under garbage collection (ie. once initialized, the custom cursors will act as singletons and be available for the duration of execution).
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:56 PM
Readability improvements to NSBezierPath category (WOBezel, 3e23a51)
Wrapping and column-alignment changes to make the appendRoundedRectanglePath:radius: method in the NSBezierPath category more readable.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:42 PM
Code clean-up for garbage collection (WOTest, 2eab9a2)
I've made a pass through the codebase eliminating message sends that have effectively been turned into no-ops by the move to garbage collection (retain, release, autorelease), as well as replacing "release" messages sent to autorelease pools with "drain", replacing the alloc/init pattern with the straightforward autoreleased alternative where possible (for brevity), removing methods that will now never be meaningfully called (dealloc, release, retainCount etc), and switching some accessors over to synthesized properties where this enabled me to get rid of no-op retain, release and autorelease message sends.
I also performed some minor reformatting (better wrapping and column alignment) where the already-mentioned changes touch code which would benefit from such reformatting (improved readability); there are still plenty of places in the codebase where the wrapping could be tweaked to make better use of the full 132 columns.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 3:26 PM
Workaround Objective-C 2.0 properties bug (WOTest, 2507142)
It turns out that the public-readonly/private-readwrite property pattern is not broken after all, and a simple workaround is available (redeclare all the attributes "in whole" rather than "in part" as the documentation suggests).
This commit applies the new workaround and references the Radar and test case that correspond to the issue.
Signed-off-by: Wincent Colaiuta <win@wincent.com> Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:44 PM
Add test case for Objective-C 2.0 properties bug (WOTest, 3fa7f33)
In a previous commit (f2d45e3) I noted what appears to be a bug in either the Objective-C 2.0 properties implementation (spurious compiler warnings) or in its documentation.
I've prepared this test case demonstrating the problem. In the course of doing so I discovered that the problem has a workaround that is considerably easier than I originally thought, and the bug doesn't actually make it impossible to use the public-readonly/private-readwrite property pattern. I will apply the new workaround in a subsequent commit.
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 1:44 PM
August 9, 2007
Use anonymous private categories (WOTest, cb0f52f)
"Anonymous" private categories (new in Objective-C 2.0) are a better fit for private methods because they provide an indication to the compiler of what methods are expected to be implemented, not just those that "might" be implemented elsewhere (and available at runtime).
Signed-off-by: Wincent Colaiuta <win@wincent.com>
Posted 10:12 PM


