diff --git a/dix/property.c b/dix/property.c index 3447bca89..ff1d6693b 100644 --- a/dix/property.c +++ b/dix/property.c @@ -105,10 +105,17 @@ dixLookupProperty(PropertyPtr *result, WindowPtr pWin, Atom propertyName, return rc; } +CallbackListPtr PropertyStateCallback; + static void deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp) { xEvent event; + PropertyStateRec rec = { + .win = pWin, + .prop = pProp, + .state = state + }; UpdateCurrentTimeIf(); event = (xEvent) { .u.property.window = pWin->drawable.id, @@ -117,6 +124,8 @@ deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp) .u.property.time = currentTime.milliseconds, }; event.u.u.type = PropertyNotify; + + CallCallbacks(&PropertyStateCallback, &rec); DeliverEvents(pWin, &event, 1, (WindowPtr) NULL); } diff --git a/include/property.h b/include/property.h index be875e917..d7ccff344 100644 --- a/include/property.h +++ b/include/property.h @@ -51,6 +51,14 @@ SOFTWARE. typedef struct _Property *PropertyPtr; +typedef struct _PropertyStateRec { + WindowPtr win; + PropertyPtr prop; + int state; +} PropertyStateRec; + +extern CallbackListPtr PropertyStateCallback; + extern _X_EXPORT int dixLookupProperty(PropertyPtr * /*result */ , WindowPtr /*pWin */ , Atom /*proprty */ ,