Hi Eric,
below you see the current code of this defcustom:
The default-value contains a small bug: The usage of charwidth in the fringe test (i have marked it with ******) is not allowed because this is not bound... either you have to make a let-clause or just use (frame-char-width).... This bug never came up, because you catch the errors and try some old tricks ;-)
But if you fix this bug, you do not need old tricks ;-)
(defcustom semantic-stickyfunc-indent-string
  (if (and window-system (not (featurep 'xemacs)))
       (condition-case nil
    ;; Test scroll bar location
    (let ((charwidth (frame-char-width))
   (scrollpos (frame-parameter (selected-frame)
      (if (or (eq scrollpos 'left)
       ;; Now wait a minute.  If you turn scroll-bar-mode
       ;; on, then off, the new value is t, not left.
       ;; Will this mess up older emacs where the default
       ;; was on the right?  I don't think so since they don't
       ;; support a header line.
       (eq scrollpos t))
   (let ((w (when (boundp 'scroll-bar-width)
       (symbol-value 'scroll-bar-width))))
     (if (not w)
         (setq w (frame-parameter (selected-frame)
     ;; in 21.2, the frame parameter is sometimes empty
     ;; so we need to get the value here.
     (if (not w)
         (setq w (+ (get 'scroll-bar-width 'x-frame-parameter)
      ;; In 21.4, or perhaps 22.1 the x-frame
      ;; parameter is different from the frame
      ;; parameter by only 1 pixel.
     (if (not w)
         "  "
       (setq w (+ 2 w))   ; Some sort of border around
     ; the scrollbar.
       (make-string (/ w charwidth) ? )))
  (error ""))
       (condition-case nil
    ;; Test fringe size.
    (let* ((f (window-fringes))
    (fw (car f))
    (numspace (/ fw charwidth)) ;; ******
      (make-string numspace ? ))
   ;; Well, the fancy new Emacs functions failed.  Try older
   ;; tricks.
   (condition-case nil
       ;; I'm not so sure what's up with the 21.1-21.3 fringe.
       ;; It looks to be about 1 space wide.
       (if (get 'fringe 'face)
    " "
     (error ""))))
    ;; Not Emacs or a window system means no scrollbar or fringe,
    ;; and perhaps not even a header line to worry about.
  "*String used to indent the stickyfunc header.
Customize this string to match the space used by scrollbars and
fringe so it does not appear that the code is moving left/right
when it lands in the sticky line."
  :group 'semantic
  :type 'string)
BTW: One question: How to give the headerline another background color, e.g. yellow...do you know this? If yes could you please add this to the following code, so i can see what you do:
(defconst semantic-stickyfunc-header-line-format
  (cond ((featurep 'xemacs)
 ((>= emacs-major-version 22)
  '(:eval (list
    ;; Magic bit I found on emacswiki.
    (propertize " " 'display '((space :align-to 0)))
 ((= emacs-major-version 21)
  '(:eval (list semantic-stickyfunc-indent-string
 (t nil))
  "The header line format used by sticky func mode.")
To be honest: Currently i steal your nifty stickyfunc-mode for the tree-buffers of ECB, so always in the header-line of a tree-window the current parent-node is sticky - very usefull and cool ;-) Thanks for your very valueable work and solution-template with the stickyfunc-mode! Was quite simple to adjust it for the needs of the tree-buffers..

Klaus Berndl / Capgemini sd&m / München
Senior-Berater / Öffentlicher Sektor
Tel: +49 89 63812-392 / Fax: +49 89 63812-444 /
Mobil: +49 162 2842051 / klaus.berndl@capgemini-sdm.com
Capgemini sd&m AG, Carl-Wery-Straße 42, 81739 München

Vorstand: Edmund Küpper (Vorsitzender), Burkhard Kehrbusch, Rüdiger Azone,
Dr. Uwe Dumslaff, Kai Grambow, Dr. Michael Rading, Josef Ranner
Aufsichtsrat: Pierre Hessler (Vorsitzender)
Sitz und Amtsgericht: München HRB 126057