[Android Themes] jubeh:
I finally downloaded all the android source code and I've been studying it, that damn download took forever, anyway, I was reading through some of the java and c sources and xml layout files and I've finally understood why the clock makes the launcher loop. First, the xml for the home layout by default (left the license since I'm, in a way, distributing the source):

−
<!--
Copyright (C) 2009 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

[url]http://www.apache.org/licenses/LICENSE-2.0[/url]

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
−
<favorites>
<clock launcher:screen="2" launcher:x="1" launcher:y="0"/>
<search launcher:screen="1" launcher:x="0" launcher:y="0"/>
<favorite launcher:packageName="com.android.contacts" launcher:className="com.android.contacts.DialtactsActivity" launcher:screen="1" launcher:x="0" launcher:y="3"/>
<favorite launcher:packageName="com.android.contacts" launcher:className="com.android.contacts.DialtactsContactsEntryActivity" launcher:screen="1" launcher:x="1" launcher:y="3"/>
<favorite launcher:packageName="com.android.browser" launcher:className="com.android.browser.BrowserActivity" launcher:screen="1" launcher:x="2" launcher:y="3"/>
<favorite launcher:packageName="com.google.android.apps.maps" launcher:className="com.google.android.maps.MapsActivity" launcher:screen="1" launcher:x="3" launcher:y="3"/>
<favorite launcher:packageName="com.android.mms" launcher:className="com.android.mms.ui.ConversationList" launcher:screen="1" launcher:x="0" launcher:y="2"/>
<favorite launcher:packageName="com.android.vending" launcher:className="com.android.vending.AssetBrowserActivity" launcher:screen="1" launcher:x="3" launcher:y="2"/>
</favorites>

your clock is 4x3, and the clock is loaded by default at the second screen at position 1,0 (from a grid going from 0,0 to 3,3), the default clock is only 2x2, so it occupies (1,0) (2,0) (1,1) and (2,1), which are all valid ranges in the grid. Your clock also occupies (3,0) (3,1) (1,2) (2,2) and (3,2), at that point all is well, the problem comes with it also trying to occupy (4,0) (4,1) and (4,2), which are outside the normal range. A solution would be to make the clock 3x3, but that would leave it at an offset when placing at the desktop. The correct solution, though, would be to edit the default_workspace.xml inside res/xml and change the default clock position to (0,0), but that would require rebuilding the apk from source (as far as i know at this point) because the xml that's already in the apk seems to be already encoded in something unreadable (as a regular xml anyway)

---edit---

damn smileys, wrapped the code around code tags

Also, forgot to mention this is inside Launcher.apk

---edit---

I should mention too, this is the default layout for android 1.5 launcher from google (who uses 1.0 anymore anyway), other launchers have their own layouts (like rogers), but yeah, sadly, most of them center the clock. On the people that had the clock shrinked, they were using a launcher version that not only specifies an initial x,y, but also a definite clock size, and the system just resizes the widget, that information gets written to /data prefferences, so when you update without wipe, the clock is already constrained to that region.