x11 통화를 처음 사용합니다._NET_WM_STRUT 및 _NET_WM_STRUT_PARTIAL로 예약 된 데스크톱 공간의 위치 도구 모음
SLED11에서 QT 4.8을 사용하여 사용자 지정 응용 프로그램 도구 모음을 개발 중입니다.
나는 내가 너무 다른 응용 프로그램 창은 그것을 커버 할 수없는 도구 모음 영역을 확보 할 필요가 있음을 이해 일부 포럼을 찾고 X11 호출 (_NET_WM_STRUT 및 _NET_WM_STRUT_PARTIAL)
얻을 예약 된 공간 내 도구 모음의 위치에 문제가 . _NET_WM_STRUT 및 _NET_WM_STRUT_PARTIAL을 (를) 사용했습니다.
이
내가 공간 확보를 위해 사용하는 코드입니다 :void ToolbarWindow::dock(int width, int height)
{
Display *display = QX11Info::display();
int insets[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
insets[2] = height;
insets[8] = 0;
insets[9] = width;
XChangeProperty(display,
winId(),
XInternAtom(QX11Info::display(), "_NET_WM_STRUT", False),
XA_CARDINAL ,
32,
PropModeReplace,
(unsigned char *)&insets, 4);
XChangeProperty(display,
winId(),
XInternAtom(QX11Info::display(), "_NET_WM_STRUT_PARTIAL", False),
XA_CARDINAL ,
32,
PropModeReplace,
(unsigned char *)&insets, 12);
}
을 그리고 난 도구 모음 만들 때 이것은 GUI 컨트롤러 내 전화입니다 :
ToolbarWindow *toolbar = new ToolbarWindow(co);
toolbar->setGeometry(monitor->getX(), monitor->getY(), monitor->getWidth(), 170);
toolbar->show();
toolbar->dock(monitor->getWidth(), 170);
내가 볼 것이 있다는 것입니다을 공간이 예약되어 있지만 도구 모음 아래에 예약 된 영역 나타납니다. 하지만 이것은 내가 원하는 것이 아니며 아래에 머물러있는 모든 다른 창들을 가지고 싶습니다 (최대화되었을 때조차도) 그러나 내 도구 모음은 아닙니다 ... 나는 그 공간을 예약 했으므로 그 공간을 채우기를 원합니다 ...
아무도 도와 줄 수 있습니까?
감사합니다.
도구 모음 창에서 xprop을 사용할 때 스트럿 (strut) 속성이 올바른 값으로 표시됩니까? 'XA_CARDINAL' 속성은 ** int가 아닌'long'이어야합니다. –
이 작업을 안정적으로 수행하려면 윈도우가 _NET_WM_TYPE_DOCK * 유형이어야하며 먼저 매핑 한 다음 위치에 놓아야합니다. 그렇지 않으면 WM *가 때때로 자체 스트럿 (strut) 외부에 배치 될 수 있습니다. –
감사합니다. 오늘 _NET_WM_TYPE_DOCK을 (를) 설정하려고합니다. 알려 드리겠습니다. – Lorenzo