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

Method reparentWindow

source/x11/xwindow.cpp:801–876  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

799}
800
801int XWindow::reparentWindow(const XWindowPtr& parent, S32 x, S32 y) {
802 if (parent->c_class == InputOnly && c_class != InputOnly) {
803 return BadMatch;
804 }
805 bool needToRemap = false;
806
807 if (isMapped) {
808 unmapWindow();
809 needToRemap = true;
810 }
811 removeFromParent();
812 this->parent = parent;
813 this->left = x;
814 this->top = y;
815 addToParent();
816
817 XServer::getServer()->iterateEventMask(parent->id, SubstructureNotifyMask, [this, parent, x, y](const DisplayDataPtr& data) {
818 XEvent event = {};
819 event.xreparent.type = ReparentNotify;
820 event.xreparent.display = data->displayAddress;
821 event.xreparent.event = parent->id;
822 event.xreparent.window = id;
823 event.xreparent.parent = parent->id;
824 event.xreparent.x = x;
825 event.xreparent.y = y;
826 event.xreparent.serial = data->getNextEventSerial();
827 event.xreparent.override_redirect = this->attributes.override_redirect;
828 data->putEvent(event);
829
830 if (XServer::getServer()->trace) {
831 BString log;
832 log.append(data->displayId, 16);
833 log += " Event";
834 log += " ReparentNofity";
835 log += " event=";
836 log.append(parent->id, 16);
837 log += " win=";
838 log.append(id, 16);
839 log += " parent=";
840 log.append(parent->id, 16);
841 klog(log.c_str());
842 }
843 });
844
845 XServer::getServer()->iterateEventMask(id, StructureNotifyMask, [this, parent, x, y](const DisplayDataPtr& data) {
846 XEvent event = {};
847 event.xreparent.type = ReparentNotify;
848 event.xreparent.display = data->displayAddress;
849 event.xreparent.event = id;
850 event.xreparent.window = id;
851 event.xreparent.parent = parent->id;
852 event.xreparent.x = x;
853 event.xreparent.y = y;
854 event.xreparent.serial = data->getNextEventSerial();
855 event.xreparent.override_redirect = this->attributes.override_redirect;
856 data->putEvent(event);
857
858 if (XServer::getServer()->trace) {

Callers 1

x11_ReparentWindowFunction · 0.80

Calls 6

klogFunction · 0.85
iterateEventMaskMethod · 0.80
getNextEventSerialMethod · 0.80
putEventMethod · 0.80
appendMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected