Re: pop up windows

Bart Massey <[email protected]> Sat, 15 Feb 2025 21:31:07 -0800
Newsgroups gmane.comp.freedesktop.xcb
Message-ID <CAA6gtpkbpvoY5OiK3Tk15Ww-iDbdW+gUGMub53c5EqOeUA7UPg@mail.gmail.com>
--000000000000247422062e3bb9eb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Note that in the xcb_grab_pointer() call you are passing an extensive event
mask, whereas with XGrabPointer() you pass only a few events. The big event
mask includes events that are not allowed according to the protocol
specification: I do not know whether XCB or the server care though. You
might want to try
     XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE |
XCB_EVENT_MASK_POINTER_MOTION
instead of  0xFFFE.

More importantly, the grab is not complete until the reply to the
xcb_grab_pointer() request has been received. That means you need to get
that reply before going on. I ended up with code like this: it may not be
quite what you want, but may be better than what you have.

  xcb_grab_pointer_cookie_t grab_cookie;

  xcb_grab_pointer_reply_t *grab_reply;

  xcb_generic_error_t *grab_error;


...

    puts("grab pointer");

    grab_cookie =3D xcb_grab_pointer(

        connection,

        1,

        iface->window,

        XCB_EVENT_MASK_BUTTON_PRESS |

          XCB_EVENT_MASK_BUTTON_RELEASE |

          XCB_EVENT_MASK_POINTER_MOTION,

        XCB_GRAB_MODE_ASYNC,

        XCB_GRAB_MODE_ASYNC,

        XCB_NONE,

        XCB_NONE,

        XCB_CURRENT_TIME

    );

    grab_reply =3D xcb_grab_pointer_reply(connection, grab_cookie,
&grab_error);
    if (!grab_reply || grab_reply->status !=3D XCB_GRAB_STATUS_SUCCESS) {

      printf("grab failed");

      return false;

    }

The grab seemed to succeed on my box, so I guess things are good. Try that
and let us know how it goes.

Thanks for sharing this journey with us!


On Sat, Feb 15, 2025 at 2:57=E2=80=AFAM Steven J Abner <[email protected]=
> wrote:

> On Fri, Feb 14 2025 at 11:13:56 PM +0000, Steven J Abner
> <[email protected]> wrote:
> > Solution... don't use xcb_grab_pointer()
>
> So happy! just clickin' away :)
>
> But felt there is one lose end. I believe xcb_grab_pointer() reads
> nearly as XGrabPointer(). If they're not suppose to be the same, maybe
> a documentation update? If it's suppose to be the same, well....
>
> Not sure if this suffices as a bug notice or where it gets reported if
> it is a bug.
> Thank you.. click, click
> Steve
>
>
>

--000000000000247422062e3bb9eb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdj5Ob3RlIHRoYXQgaW4gdGhlIHhjYl9ncmFiX3BvaW50ZXIoKSBj
YWxsIHlvdSBhcmUgcGFzc2luZyBhbiBleHRlbnNpdmUgZXZlbnQgbWFzaywgd2hlcmVhcyB3aXRo
IFhHcmFiUG9pbnRlcigpIHlvdSBwYXNzIG9ubHkgYSBmZXcgZXZlbnRzLiBUaGUgYmlnIGV2ZW50
IG1hc2sgaW5jbHVkZXMgZXZlbnRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byB0
aGUgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbjogSSBkbyBub3Qga25vdyB3aGV0aGVyIFhDQiBvciB0
aGUgc2VydmVyIGNhcmUgdGhvdWdoLiBZb3UgbWlnaHQgd2FudCB0byB0cnkgPGJyPjwvZGl2Pjxk
aXY+wqDCoMKgwqAgWENCX0VWRU5UX01BU0tfQlVUVE9OX1BSRVNTIHwgWENCX0VWRU5UX01BU0tf
QlVUVE9OX1JFTEVBU0UgfCBYQ0JfRVZFTlRfTUFTS19QT0lOVEVSX01PVElPTjwvZGl2PjxkaXY+
aW5zdGVhZCBvZsKgIDB4RkZGRS48L2Rpdj48YnI+TW9yZSBpbXBvcnRhbnRseSwgdGhlIGdyYWIg
aXMgbm90IGNvbXBsZXRlIHVudGlsIHRoZSByZXBseSB0byB0aGUgeGNiX2dyYWJfcG9pbnRlcigp
IHJlcXVlc3QgaGFzIGJlZW4gcmVjZWl2ZWQuIFRoYXQgbWVhbnMgeW91IG5lZWQgdG8gZ2V0IHRo
YXQgcmVwbHkgYmVmb3JlIGdvaW5nIG9uLiBJIGVuZGVkIHVwIHdpdGggY29kZSBsaWtlIHRoaXM6
IGl0IG1heSBub3QgYmUgcXVpdGUgd2hhdCB5b3Ugd2FudCwgYnV0IG1heSBiZSBiZXR0ZXIgdGhh
biB3aGF0IHlvdSBoYXZlLjxicj48YnI+wqAgeGNiX2dyYWJfcG9pbnRlcl9jb29raWVfdCBncmFi
X2Nvb2tpZTsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqA8YnI+wqAgeGNiX2dyYWJfcG9pbnRlcl9yZXBseV90ICpncmFiX3JlcGx5
OyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCA8YnI+wqAgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZ3JhYl9lcnJvcjsgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqA8YnI+PGJyPjxkaXY+Li4uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7CoCDCoCBwdXRz
KCZxdW90O2dyYWIgcG9pbnRlciZxdW90Oyk7IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDxi
cj7CoCDCoCBncmFiX2Nvb2tpZSA9IHhjYl9ncmFiX3BvaW50ZXIoIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDxicj7C
oCDCoCDCoCDCoCBjb25uZWN0aW9uLCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCA8YnI+wqAgwqAgwqAgwqAgMSwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqA8YnI+wqAgwqAgwqAgwqAgaWZhY2UtJmd0O3dpbmRvdywgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8YnI+wqAgwqAgwqAgwqAgWENCX0VWRU5UX01BU0tfQlVU
VE9OX1BSRVNTIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgPGJyPsKgIMKgIMKgIMKgIMKgIFhDQl9FVkVOVF9NQVNLX0JV
VFRPTl9SRUxFQVNFIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgPGJyPsKgIMKgIMKgIMKgIMKgIFhDQl9FVkVOVF9NQVNLX1BPSU5U
RVJfTU9USU9OLCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoDxicj7CoCDCoCDCoCDCoCBYQ0JfR1JBQl9NT0RFX0FTWU5DLCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoDxicj7CoCDCoCDCoCDCoCBYQ0JfR1JBQl9NT0RFX0FTWU5DLCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxicj7CoCDCoCDCoCDCoCBYQ0JfTk9ORSwgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgPGJyPsKgIMKgIMKgIMKgIFhDQl9OT05FLCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA8YnI+wqAgwqAgwqAgwqAgWENC
X0NVUlJFTlRfVElNRSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxicj7CoCDCoCApOyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxi
cj7CoCDCoCBncmFiX3JlcGx5ID0geGNiX2dyYWJfcG9pbnRlcl9yZXBseShjb25uZWN0aW9uLCBn
cmFiX2Nvb2tpZSwgJmFtcDtncmFiX2Vycm9yKTsgwqAgwqA8YnI+wqAgwqAgaWYgKCFncmFiX3Jl
cGx5IHx8IGdyYWJfcmVwbHktJmd0O3N0YXR1cyAhPSBYQ0JfR1JBQl9TVEFUVVNfU1VDQ0VTUykg
eyDCoCDCoCDCoCDCoCDCoCA8YnI+wqAgwqAgwqAgcHJpbnRmKCZxdW90O2dyYWIgZmFpbGVkJnF1
b3Q7KTsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8YnI+wqAgwqAgwqAgcmV0dXJuIGZhbHNlOyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA8YnI+wqAgwqAgfcKgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5UaGUgZ3JhYiBzZWVtZWQgdG8gc3VjY2VlZCBvbiBteSBib3gsIHNv
IEkgZ3Vlc3MgdGhpbmdzIGFyZSBnb29kLiBUcnkgdGhhdCBhbmQgbGV0IHVzIGtub3cgaG93IGl0
IGdvZXMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGFua3MgZm9yIHNoYXJpbmcgdGhpcyBq
b3VybmV5IHdpdGggdXMhwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgPGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90
ZSBnbWFpbF9xdW90ZV9jb250YWluZXIiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRy
Ij5PbiBTYXQsIEZlYiAxNSwgMjAyNSBhdCAyOjU34oCvQU0gU3RldmVuIEogQWJuZXIgJmx0Ozxh
IGhyZWY9Im1haWx0bzpwaGVvbml4LnNqYUBhdHQubmV0Ij5waGVvbml4LnNqYUBhdHQubmV0PC9h
PiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5
bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIw
NCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij5PbiBGcmksIEZlYiAxNCAyMDI1IGF0IDExOjEz
OjU2IFBNICswMDAwLCBTdGV2ZW4gSiBBYm5lciA8YnI+DQombHQ7PGEgaHJlZj0ibWFpbHRvOnBo
ZW9uaXguc2phQGF0dC5uZXQiIHRhcmdldD0iX2JsYW5rIj5waGVvbml4LnNqYUBhdHQubmV0PC9h
PiZndDsgd3JvdGU6PGJyPg0KJmd0OyBTb2x1dGlvbi4uLiBkb24mIzM5O3QgdXNlIHhjYl9ncmFi
X3BvaW50ZXIoKTxicj4NCjxicj4NClNvIGhhcHB5ISBqdXN0IGNsaWNraW4mIzM5OyBhd2F5IDop
PGJyPg0KPGJyPg0KQnV0IGZlbHQgdGhlcmUgaXMgb25lIGxvc2UgZW5kLiBJIGJlbGlldmUgeGNi
X2dyYWJfcG9pbnRlcigpIHJlYWRzIDxicj4NCm5lYXJseSBhcyBYR3JhYlBvaW50ZXIoKS4gSWYg
dGhleSYjMzk7cmUgbm90IHN1cHBvc2UgdG8gYmUgdGhlIHNhbWUsIG1heWJlIDxicj4NCmEgZG9j
dW1lbnRhdGlvbiB1cGRhdGU/IElmIGl0JiMzOTtzIHN1cHBvc2UgdG8gYmUgdGhlIHNhbWUsIHdl
bGwuLi4uPGJyPg0KPGJyPg0KTm90IHN1cmUgaWYgdGhpcyBzdWZmaWNlcyBhcyBhIGJ1ZyBub3Rp
Y2Ugb3Igd2hlcmUgaXQgZ2V0cyByZXBvcnRlZCBpZiA8YnI+DQppdCBpcyBhIGJ1Zy48YnI+DQpU
aGFuayB5b3UuLiBjbGljaywgY2xpY2s8YnI+DQpTdGV2ZTxicj4NCjxicj4NCjxicj4NCjwvYmxv
Y2txdW90ZT48L2Rpdj4NCg==
--000000000000247422062e3bb9eb--