I hope the following is useful. I am enjoying the
3.6.beta, particularly with this change. The attached
patch works against the 3.6 beta source.
It adds the capability to specify a target desktop for
launcher icons. The '*' desktop is the default and
reproduces the current behavior. A desktop number will
make the launcher only appear when the user is on that
desktop. This feature allows users to set up
specialized desktops with appropriate tools without
cluttering their other general-purpose desktops. E.g.
only the "Development" desktop might have KDevelop and
Quanta icons, while only the Internet desktop would
The ConfMenuDialog has been enhanced to accomodate the
changes. The launcher icon list is now a ListView with
an additional column for the desktop. Unfortunately
this caused the changes to confmenudialog.cpp to be
large. I had to move the separate items list into the
list view item objects. Their memory is managed with
the list view item as a single allocated object which
is freed by the list view (I checked). The Item object
now stores a desktop #. Zero stands for "all desktops"
(seen as '*' in the GUI). The desktop number is stored
as an ignored "Desktop=" property in the .desktop
files. It should be invisible to older versions of the
program or to other programs, including KDE. The
change in ksmoothdock.cpp performs the filtering by
desktop and forces a full refresh if non-zero desktop
#'s are specified.
Let me know if you have any questions or any
suggestions. My email is firstname.lastname@example.org.
Thanks for the great program!