Another better solution is to always register the left margin (launcher width + any pad) to X independent of whether the launcher is visible or not and remove the adjustment "left += UNITY_LAUNCHER_WIDTH - 15".
The pros is that there is no "visible" empty column between a visible launcher and the left most icons. The cons is that desktop icons will move when you change the launcher width.
Another better solution is to always register the left margin (launcher width + any pad) to X independent of whether the launcher is visible or not and remove the adjustment "left += UNITY_LAUNCHER_ WIDTH - 15".
The pros is that there is no "visible" empty column between a visible launcher and the left most icons. The cons is that desktop icons will move when you change the launcher width.