MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / buttonNotify

Method buttonNotify

source/x11/xwindow.cpp:1385–1427  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1383}
1384
1385void XWindow::buttonNotify(const DisplayDataPtr& data, U32 button, S32 x, S32 y, bool pressed) {
1386 S32 window_x = x;
1387 S32 window_y = y;
1388 screenToWindow(window_x, window_y);
1389
1390 // winex11 doesn't seem to use subwindow
1391 XEvent event = {};
1392 event.type = pressed ? ButtonPress : ButtonRelease;
1393 event.xbutton.serial = data->getNextEventSerial();
1394 event.xbutton.display = data->displayAddress;
1395 event.xbutton.window = id;
1396 event.xbutton.root = data->root;
1397 event.xbutton.subwindow = 0;
1398 event.xbutton.time = XServer::getServer()->getEventTime();
1399 event.xbutton.x = window_x;
1400 event.xbutton.y = window_y;
1401 event.xbutton.x_root = x;
1402 event.xbutton.y_root = y;
1403 event.xbutton.state = XServer::getServer()->getInputModifiers();
1404 event.xbutton.button = button;
1405 event.xbutton.same_screen = True;
1406 data->putEvent(event);
1407
1408 // The state member is set to indicate the logical state of the pointer buttons and modifier keys just prior to the event
1409 if (pressed) {
1410 event.xbutton.state &= ~((Button1Mask) << (button - 1));
1411 } else {
1412 event.xbutton.state |= ((Button1Mask) << (button - 1));
1413 }
1414 if (XServer::getServer()->trace) {
1415 BString log;
1416 log.append(data->displayId, 16);
1417 log += " Event";
1418 log += pressed ? " ButtonPress" : " ButtonRelease";
1419 log += " button=";
1420 log += button;
1421 log += " root=";
1422 log.append(XServer::getServer()->getRoot()->id, 16);
1423 log += " event=";
1424 log.append(id, 16);
1425 klog(log.c_str());
1426 }
1427}
1428
1429bool XWindow::mouseButtonScreenCoords(U32 button, S32 x, S32 y, bool pressed) {
1430 bool found = false;

Callers 1

mouseButtonMethod · 0.80

Calls 7

klogFunction · 0.85
getNextEventSerialMethod · 0.80
getEventTimeMethod · 0.80
putEventMethod · 0.80
getInputModifiersMethod · 0.45
appendMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected