Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
continue
if window.is_tray():
debug("screenshot: skipping tray window %s", wid)
continue
if not window.is_managed():
debug("screenshot: window %s is not/no longer managed", wid)
continue
if window.is_OR():
x, y = window.get_property("geometry")[:2]
else:
x, y = self._desktop_manager.window_geometry(window)[:2]
debug("screenshot: position(%s)=%s,%s", window, x, y)
w, h = window.get_dimensions()
debug("screenshot: size(%s)=%sx%s", window, w, h)
try:
img = trap.call_synced(window.get_image, 0, 0, w, h)
except:
log.warn("screenshot: window %s could not be captured", wid)
continue
if img is None:
log.warn("screenshot: no pixels for window %s", wid)
continue
debug("screenshot: image=%s, size=%s", (img, img.get_size()))
if img.get_pixel_format() not in ("RGB", "RGBA", "XRGB", "BGRX", "ARGB", "BGRA"):
log.warn("window pixels for window %s using an unexpected rgb format: %s", wid, img.get_pixel_format())
continue
item = (wid, x, y, img)
if window.is_OR():
OR_regions.append(item)
elif self._has_focus==wid:
#window with focus first (drawn last)
regions.insert(0, item)
root = self.clipboard.get_display().get_default_screen().get_root_window()
xroot = get_xwindow(root)
X11Window.sendClientMessage(xroot, xroot, False, constants["StructureNotifyMask"],
"MANAGER",
ts_num, selection_xatom, self._xwindow, 0, 0)
if old_owner != constants["XNone"] and when is self.FORCE:
# Block in a recursive mainloop until the previous owner has
# cleared out.
def getwin():
window = get_pywindow(self.clipboard, old_owner)
window.set_events(window.get_events() | gtk.gdk.STRUCTURE_MASK)
return window
try:
window = trap.call_synced(getwin)
log("got window")
except XError:
log("Previous owner is already gone, not blocking")
else:
log("Waiting for previous owner to exit...")
add_event_receiver(window, self)
gtk.main()
log("...they did.")
window = get_pywindow(self.clipboard, self._xwindow)
window.set_title("Xpra-ManagerSelection")
def _process_button_action(self, proto, packet):
ss = self._server_sources.get(proto)
if ss is None:
return
wid, button, pressed, pointer, modifiers = packet[1:6]
self._process_mouse_common(proto, wid, pointer, modifiers)
ss.user_event()
try:
trap.call_synced(X11Keyboard.xtest_fake_button, button, pressed)
except XError:
err = "Failed to pass on (un)press of mouse button %s" % button
if button>=4:
err += " (perhaps your Xvfb does not support mousewheels?)"
log.warn(err)
def set_windows_cursor(self, gtkwindows, new_cursor):
cursor = None
if len(new_cursor)>0:
cursor = None
if len(new_cursor)>=9 and cursor_names:
cursor_name = new_cursor[8]
if cursor_name:
gdk_cursor = cursor_names.get(cursor_name.upper())
if gdk_cursor is not None:
try:
from xpra.x11.gtk_x11.error import trap
log("setting new cursor: %s=%s", cursor_name, gdk_cursor)
cursor = trap.call_synced(gdk.Cursor, gdk_cursor)
except:
pass
if cursor is None:
w, h, xhot, yhot, serial, pixels = new_cursor[2:8]
log("new cursor at %s,%s with serial=%s, dimensions: %sx%s, len(pixels)=%s" % (xhot,yhot, serial, w,h, len(pixels)))
pixbuf = gdk.pixbuf_new_from_data(pixels, gdk.COLORSPACE_RGB, True, 8, w, h, w * 4)
x = max(0, min(xhot, w-1))
y = max(0, min(yhot, h-1))
size = gdk.display_get_default().get_default_cursor_size()
if size>0 and (size
def _owner(self):
owner_x = X11Window.XGetSelectionOwner(self._selection)
if owner_x == constants["XNone"]:
return None
try:
return trap.call_synced(get_pywindow, self._clipboard, owner_x)
except XError:
log("X error while fetching owner of XSettings data; ignored")
return None
def fake_key(self, keycode, press):
trap.call_synced(X11Keyboard.xtest_fake_key, keycode, press)
shm_image = trap.call_synced(shm.get_image, handle.get_pixmap(), x, y, width, height)
#logger("get_image(..) XShm image: %s", shm_image)
if shm_image:
return shm_image
except Exception, e:
if type(e)==XError and e.msg=="BadMatch":
logger("get_image(%s, %s, %s, %s) get_image BadMatch ignored (window already gone?)", x, y, width, height)
else:
log.warn("get_image(%s, %s, %s, %s) get_image %s", x, y, width, height, e, exc_info=True)
try:
w = min(handle.get_width(), width)
h = min(handle.get_height(), height)
if w!=width or h!=height:
logger("get_image(%s, %s, %s, %s) clamped to pixmap dimensions: %sx%s", x, y, width, height, w, h)
return trap.call_synced(handle.get_image, x, y, w, h)
except Exception, e:
if type(e)==XError and e.msg=="BadMatch":
logger("get_image(%s, %s, %s, %s) get_image BadMatch ignored (window already gone?)", x, y, width, height)
else:
log.warn("get_image(%s, %s, %s, %s) get_image %s", x, y, width, height, e, exc_info=True)
return None
def system_bell(window, device, percent, pitch, duration, bell_class, bell_id, bell_name):
global device_bell
if device_bell is None:
return False
try:
xwindow = get_xwindow(window)
trap.call_synced(device_bell, xwindow, device, bell_class, bell_id, percent, bell_name)
return True
except XError, e:
log.error("error using device_bell: %s, switching native X11 bell support off", e)
device_bell = None
return False
def do_set_workspace(self, workspace):
assert HAS_X11_BINDINGS
root = self.gdk_window().get_screen().get_root_window()
ndesktops = self.xget_u32_property(root, "_NET_NUMBER_OF_DESKTOPS")
self.debug("set_workspace() ndesktops=%s", ndesktops)
if ndesktops is None or ndesktops<=1:
return -1
workspace = max(0, min(ndesktops-1, workspace))
event_mask = constants["SubstructureNotifyMask"] | constants["SubstructureRedirectMask"]
def send():
root_window = get_xwindow(root)
window = get_xwindow(self.gdk_window())
X11Window.sendClientMessage(root_window, window, False, event_mask, "_NET_WM_DESKTOP",
workspace, constants["CurrentTime"],
0, 0, 0)
trap.call_synced(send)
return workspace