本文整理汇总了C++中Workspace::root方法的典型用法代码示例。如果您正苦于以下问题:C++ Workspace::root方法的具体用法?C++ Workspace::root怎么用?C++ Workspace::root使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Workspace
的用法示例。
在下文中一共展示了Workspace::root方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runResizeMode
void Kernel::runResizeMode(Thing *thing, XButtonEvent *buttonEvent,
Direction dir, bool resize)
{
Window window = thing->window();
if (!window) {
return;
}
Monitor *monitor = thing->monitor();
Window rootWindow = monitor->rootWindow();
Thing::Type type = thing->type();
Workspace *workspace = (type == Thing::CLIENT) ?
((Client *)thing)->attached() : ((Frame *)thing)->attached();
if (!workspace) {
return;
}
int origX, origY, lastX, lastY, newX, newY, dx, dy;
Rectangle rect(*thing);
XCORE->translateCoordinates(window, rootWindow,
buttonEvent->x, buttonEvent->y,
&lastX, &lastY);
newX = newY = 0;
origX = lastX;
origY = lastY;
XCORE->grabPointer(window,
ButtonMotionMask | ButtonReleaseMask,
buttonEvent->time);
XEvent event;
bool done = false, found = false, firstMotion = true;
XCORE->grabServer();
while (!done) {
found = false;
while (XCORE->checkMaskEvent(
ButtonReleaseMask | ButtonMotionMask, &event))
{
found = true;
if (event.type != MotionNotify) {
break;
}
}
if (!found) {
usleep(20000);
continue;
}
switch (event.type) {
case ButtonRelease:
if (!firstMotion) {
monitor->illuminateTransRect(&rect, thing->titleBarHeight());
dx = newX - origX;
dy = newY - origY;
if ((dir == LEFT) || (dir == UP)) {
// normalization
dx *= -1;
dy *= -1;
}
if (type == Thing::FRAME) {
Split::resize(workspace->root(),
((Frame *)thing)->tree(),
dir, dx, dy);
}
else {
thing->copy(&rect);
thing->resize();
thing->illuminate();
}
XCORE->sync();
}
XCORE->ungrabPointer(event.xbutton.time);
XCORE->ungrabServer();
done = true;
break; // ButtonRelease
case MotionNotify:
XCORE->translateCoordinates(event.xmotion.window,
rootWindow, event.xmotion.x, event.xmotion.y,
&newX, &newY);
dx = newX - lastX;
dy = newY - lastY;
lastX = newX;
lastY = newY;
if (firstMotion) {
firstMotion = false;
}
else {
monitor->illuminateTransRect(&rect, thing->titleBarHeight());
//.........这里部分代码省略.........