IT-словарь › Программирование › XmProtocols (Motif)

XmProtocols (Motif)

Программирование Svenska → Обновлено: 2026-10-20

Надстройка Motif над WM_PROTOCOLS из ICCCM, превращающая сообщения оконного менеджера в обычные callback'и, — и причина, по которой столько программ на Motif умирало от щелчка по кнопке закрытия.

В чистом Xlib приложение само выставляет WM_PROTOCOLS и разбирает события ClientMessage. Motif это завернул: XmAddWMProtocolCallback(shell, XmInternAtom(dpy, "WM_DELETE_WINDOW", False), on_close, data) регистрирует протокол и привязывает функцию. Но ресурс оболочки XmNdeleteResponse действовал и сам по себе, а значение по умолчанию, XmDESTROY, уничтожало окно независимо от мнения callback'а. Программа оставалась без главного окна или падала. Лекарство — выставить XmDO_NOTHING и обрабатывать закрытие самому.

Тот же механизм нёс собственное расширение Motif, _MOTIF_WM_MESSAGES. Приложение могло добавлять пункты в оконное меню mwm через ресурс XmNmwmMenu, а когда пользователь выбирал один из них, mwm присылал сообщение обратно через f.send_msg. Пользовались этим немногие, и почти ни один другой оконный менеджер этого не понимал.

← Назад к словарю