Lisp HUG Maillist Archive

LWW CAPI hang w/ dynamic menu

I haven't had a chance to test this on LWM, but I'm hoping someone here has a suggestion for me. Sorry I don't have a dead-simple example to test. My thinking is that I'm missing something and that's causing my problem.

I have an interface with a menu that has a dynamic component inside. Something like this:

(define-interface foo ()
  ((things ... :initform nil :accessor foo-things))
  (:panes ...)
  (:layouts ...)
  (:menus
   (view-menu
    "View"
    ((:component
       ((:menu
          ((:component
            ()
            :items-function 'all-things
            :interaction :multiple-selection))))))))

  (:default-initargs ...))

And my all-things function is defined similar to this:

(defmethod all-things ((interface foo))
  (mapcar #'thing-name (foo-things interface)))

When I load up the interface, the first time I go to the View menu it works perfectly and I get my menu items. However, the second time I open up the View menu the application (and all LW) hangs and the process needs to be killed.

I've tried numerous ideas I've had.

Anyway, I'm out of ideas currently after several hours of trying various things and if anyone has run into this before and can point me to the yellow brick road, I'd be very appreciative. :-)

Jeff M.

Re: LWW CAPI hang w/ dynamic menu

Just wanted to add that I have a define-menu for a context menu that has the exact same dynamic menu, which displays the exact same behavior: the first time it works and the second time it hangs.

Jeffrey Massung
Wednesday, January 15, 2014 10:02 AM
I haven't had a chance to test this on LWM, but I'm hoping someone here has a suggestion for me. Sorry I don't have a dead-simple example to test. My thinking is that I'm missing something and that's causing my problem.

I have an interface with a menu that has a dynamic component inside. Something like this:

(define-interface foo ()
  ((things ... :initform nil :accessor foo-things))
  (:panes ...)
  (:layouts ...)
  (:menus
   (view-menu
    "View"
    ((:component
       ((:menu
          ((:component
            ()
            :items-function 'all-things
            :interaction :multiple-selection))))))))

  (:default-initargs ...))

And my all-things function is defined similar to this:

(defmethod all-things ((interface foo))
  (mapcar #'thing-name (foo-things interface)))

When I load up the interface, the first time I go to the View menu it works perfectly and I get my menu items. However, the second time I open up the View menu the application (and all LW) hangs and the process needs to be killed.

I've tried numerous ideas I've had.

Anyway, I'm out of ideas currently after several hours of trying various things and if anyone has run into this before and can point me to the yellow brick road, I'd be very appreciative. :-)

Jeff M.
Updated at: 2020-12-10 08:34 UTC