Add a :send method to selection transfers
This makes the following work on a selection acquire object: o:connect_signal("request", function(_, _, t) t:send{ data = "Hello World!\n" } end) Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
53db43c2b2
commit
a4bac0683e
|
@ -133,6 +133,33 @@ selection_transfer_begin(lua_State *L, int ud, xcb_window_t requestor,
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
luaA_selection_transfer_send(lua_State *L)
|
||||||
|
{
|
||||||
|
size_t data_length;
|
||||||
|
const char *data;
|
||||||
|
uint8_t format = 8;
|
||||||
|
xcb_atom_t type = UTF8_STRING;
|
||||||
|
|
||||||
|
selection_transfer_t *transfer = luaA_checkudata(L, 1, &selection_transfer_class);
|
||||||
|
if (transfer->state != TRANSFER_WAIT_FOR_DATA)
|
||||||
|
luaL_error(L, "Transfer object is not ready for more data to be sent");
|
||||||
|
|
||||||
|
luaA_checktable(L, 2);
|
||||||
|
lua_pushliteral(L, "data");
|
||||||
|
lua_rawget(L, 2);
|
||||||
|
|
||||||
|
data = luaL_checklstring(L, -1, &data_length);
|
||||||
|
|
||||||
|
xcb_change_property(globalconf.connection, XCB_PROP_MODE_REPLACE,
|
||||||
|
transfer->requestor, transfer->property, type, format, data_length, data);
|
||||||
|
selection_transfer_notify(transfer->requestor, transfer->selection,
|
||||||
|
transfer->target, transfer->property, transfer->time);
|
||||||
|
transfer_done(L, transfer);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
selection_transfer_checker(selection_transfer_t *transfer)
|
selection_transfer_checker(selection_transfer_t *transfer)
|
||||||
{
|
{
|
||||||
|
@ -151,6 +178,7 @@ selection_transfer_class_setup(lua_State *L)
|
||||||
{
|
{
|
||||||
LUA_OBJECT_META(selection_transfer)
|
LUA_OBJECT_META(selection_transfer)
|
||||||
LUA_CLASS_META
|
LUA_CLASS_META
|
||||||
|
{ "send", luaA_selection_transfer_send },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue