本文整理汇总了C++中WindowManager::js方法的典型用法代码示例。如果您正苦于以下问题:C++ WindowManager::js方法的具体用法?C++ WindowManager::js怎么用?C++ WindowManager::js使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WindowManager
的用法示例。
在下文中一共展示了WindowManager::js方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
Client *Client::manage(xcb_window_t window, int screenNumber)
{
assert(sClients.count(window) == 0);
Client *ptr = new Client(window);
ptr->mScreenNumber = screenNumber;
ptr->init();
WindowManager *wm = WindowManager::instance();
wm->js().onClient(ptr);
xcb_ewmh_connection_t* ewmhConn = wm->ewmhConnection();
bool focus = false;
if (!ptr->mEwmhState.contains(ewmhConn->_NET_WM_STATE_STICKY)) {
Workspace *ws = wm->activeWorkspace(screenNumber);
assert(ws);
ptr->mWorkspace = ws;
ws->addClient(ptr);
focus = true;
}
ptr->complete();
if (focus)
ptr->focus();
sClients[window] = ptr;
return ptr;
}
示例2: warning
Client *Client::create(const Rect& rect, int screenNumber, const String &clazz, const String &instance, bool movable)
{
WindowManager *wm = WindowManager::instance();
xcb_connection_t* conn = wm->connection();
xcb_screen_t* scr = wm->screens().at(screenNumber);
xcb_window_t window = xcb_generate_id(conn);
const uint32_t values[] = {
scr->black_pixel,
XCB_GRAVITY_NORTH_WEST,
XCB_GRAVITY_NORTH_WEST,
1,
(XCB_EVENT_MASK_STRUCTURE_NOTIFY
| XCB_EVENT_MASK_ENTER_WINDOW
| XCB_EVENT_MASK_LEAVE_WINDOW
| XCB_EVENT_MASK_EXPOSURE
| XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT
| XCB_EVENT_MASK_POINTER_MOTION
| XCB_EVENT_MASK_BUTTON_PRESS
| XCB_EVENT_MASK_BUTTON_RELEASE)
};
warning() << "creating client window" << rect;
xcb_create_window(conn, XCB_COPY_FROM_PARENT, window, scr->root,
rect.x, rect.y, rect.width, rect.height, 0,
XCB_COPY_FROM_PARENT, XCB_COPY_FROM_PARENT,
XCB_CW_BORDER_PIXEL | XCB_CW_BIT_GRAVITY | XCB_CW_WIN_GRAVITY
| XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK, values);
xcb_icccm_wm_hints_t wmHints;
xcb_icccm_wm_hints_set_none(&wmHints);
xcb_icccm_wm_hints_set_input(&wmHints, 0);
xcb_icccm_set_wm_hints(conn, window, &wmHints);
xcb_size_hints_t wmNormalHints;
memset(&wmNormalHints, 0, sizeof(wmNormalHints));
xcb_icccm_size_hints_set_position(&wmNormalHints, 1, rect.x, rect.y);
xcb_icccm_size_hints_set_size(&wmNormalHints, 1, rect.width, rect.height);
xcb_icccm_set_wm_normal_hints(conn, window, &wmNormalHints);
String className = clazz + ' ' + instance;
className[clazz.size()] = '\0';
xcb_icccm_set_wm_class(conn, window, className.size(), className.constData());
Client *ptr = new Client(window);
ptr->mMovable = movable;
ptr->mRect = rect;
ptr->mOwned = true;
ptr->mScreenNumber = screenNumber;
ptr->init();
ptr->mNoFocus = true;
Workspace *ws = wm->activeWorkspace(screenNumber);
assert(ws);
ptr->mWorkspace = ws;
ws->addClient(ptr);
wm->js().onClient(ptr);
ptr->complete();
sClients[window] = ptr;
return ptr;
}
示例3: complete
void Client::complete()
{
WindowManager *wm = WindowManager::instance();
xcb_connection_t* conn = wm->connection();
xcb_ewmh_connection_t* ewmhConn = wm->ewmhConnection();
if (mEwmhState.contains(ewmhConn->_NET_WM_STATE_STICKY)) {
// don't put in layout
#warning support strut windows in layouts (reserved space)
#warning support partial struts
Rect rect = wm->rect(mScreenNumber);
if (mStrut.left) {
if (mRect.width != static_cast<int>(mStrut.left))
mRect.width = mStrut.left;
mRect.x = rect.x;
rect.x += mRect.width;
rect.width -= mRect.width;
} else if (mStrut.right) {
if (mRect.width != static_cast<int>(mStrut.right))
mRect.width = mStrut.right;
mRect.x = rect.x + rect.width - mStrut.right;
rect.width -= mStrut.right;
} else if (mStrut.top) {
if (mRect.height != static_cast<int>(mStrut.top))
mRect.height = mStrut.top;
mRect.y = rect.y;
rect.y += mRect.height;
rect.height -= mRect.height;
} else if (mStrut.bottom) {
if (mRect.height != static_cast<int>(mStrut.bottom))
mRect.height = mStrut.bottom;
mRect.y = rect.y + rect.height - mStrut.bottom;
rect.height -= mStrut.bottom;
}
wm->setRect(rect, mScreenNumber);
warning() << "fixed at" << mRect;
} else {
if (shouldLayout()) {
wm->js().onLayout(this);
warning() << "laid out at" << mRect;
}
}
#warning do startup-notification stuff here
if (!mOwned)
xcb_change_save_set(conn, XCB_SET_MODE_INSERT, mWindow);
xcb_screen_t* scr = screen();
mFrame = xcb_generate_id(conn);
const uint32_t values[] = {
scr->black_pixel,
XCB_GRAVITY_NORTH_WEST,
XCB_GRAVITY_NORTH_WEST,
1,
(XCB_EVENT_MASK_STRUCTURE_NOTIFY
| XCB_EVENT_MASK_ENTER_WINDOW
| XCB_EVENT_MASK_LEAVE_WINDOW
| XCB_EVENT_MASK_EXPOSURE
| XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT
| XCB_EVENT_MASK_POINTER_MOTION
| XCB_EVENT_MASK_BUTTON_PRESS
| XCB_EVENT_MASK_BUTTON_RELEASE)
};
warning() << "creating frame window" << mRect;
xcb_create_window(conn, XCB_COPY_FROM_PARENT, mFrame, scr->root,
mRect.x, mRect.y, mRect.width, mRect.height, 0,
XCB_COPY_FROM_PARENT, XCB_COPY_FROM_PARENT,
XCB_CW_BORDER_PIXEL | XCB_CW_BIT_GRAVITY | XCB_CW_WIN_GRAVITY
| XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK, values);
{
ServerGrabScope grabScope(conn);
const uint32_t noValue[] = { 0 };
xcb_change_window_attributes(conn, scr->root, XCB_CW_EVENT_MASK, noValue);
xcb_reparent_window(conn, mWindow, mFrame, 0, 0);
const uint32_t rootEvent[] = { Types::RootEventMask };
xcb_change_window_attributes(conn, scr->root, XCB_CW_EVENT_MASK, rootEvent);
xcb_grab_button(conn, false, mWindow, XCB_EVENT_MASK_BUTTON_PRESS,
XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC, scr->root,
XCB_NONE, 1, XCB_BUTTON_MASK_ANY);
const uint32_t windowEvent[] = { Types::ClientInputMask };
xcb_change_window_attributes(conn, mWindow, XCB_CW_EVENT_MASK, windowEvent);
}
{
uint16_t windowMask = XCB_CONFIG_WINDOW_WIDTH|XCB_CONFIG_WINDOW_HEIGHT|XCB_CONFIG_WINDOW_BORDER_WIDTH;
uint32_t windowValues[3];
int i = 0;
windowValues[i++] = mRect.width;
windowValues[i++] = mRect.height;
windowValues[i++] = 0;
xcb_configure_window(conn, mWindow, windowMask, windowValues);
}
#warning do xinerama placement
const uint32_t stateMode[] = { XCB_ICCCM_WM_STATE_NORMAL, XCB_NONE };
xcb_change_property(conn, XCB_PROP_MODE_REPLACE, mWindow, Atoms::WM_STATE, Atoms::WM_STATE, 32, 2, stateMode);
map();
raise();
warning() << "created and mapped parent client for frame" << mFrame << "with window" << mWindow;
}