Closed earl-ducaine closed 5 years ago
So you say that all slots should have initargs?
So you say that all slots should have initargs?
Perhaps not. That's really an architecture question. In the old framework, def-clx-class
, created the equivalent of an :initarg
for each slot. Using defclass
, the new policy seems to be that only those slots specifically needed for constructors have :initarg
Maybe that was intentional and is a better design choice?
But I think each slot of wm-hints
should have an :initarg
and make-wm-hints
should accept them. The xrender extension uses defstruct, so this issue doesn't apply there and the other CLX classes I've looked at seem to conform to the documentation.
master branch has been reset
(ql version: clx-20180711-git) Related to issue #104, it is no longer possible to pass arbitrary initialization parameters to
xlib
constructors when creating the standard objects (fonts, windows, etc.)The old
xlib
class system mapped all class slots to a&key
in the constructor lambda list, unless that feature was explicitly turned off in the class definition.Note, that in the new code, most classes work fine since slots mentioned in the documentation are explicitly given
:initargs
to match the documentation. But this breaks some code that depends on incompletely documented features likewm-hints
. In cases like that, those values must be set after object creation. An example of code that used to work.