Conky: Klik kanan mouse tidak berfungsi untuk saya di Linux setelah a0d4393

Dibuat pada 18 Des 2018  ·  4Komentar  ·  Sumber: brndnmtthws/conky

Hai. Klik kanan mouse tidak berfungsi untuk saya di Linux setelah a0d4393, dan bekerja dengan tambalan ini . Mengapa?

bug

Komentar yang paling membantu

Jika Anda ingin fungsionalitas XShape bekerja dengan andal di bawah semua pengelola jendela, itu harus dipanggil setelah aplikasi menerima MapNotify . Juga, beberapa WM (Openbox) memiliki jendela induk yang tidak terlihat meskipun _NET_WM_WINDOW_TYPE disetel ke _NET_WM_WINDOW_TYPE_DESKTOP , dan karenanya harus menerapkan kode yang sama ke induknya. Sebagai contoh:

while (XPending(display) > 0) {
    XEvent ev;
    XNextEvent(display, &ev);
    switch (ev.type) {
        /* ... */
        case MapNotify: {
            Window root = DefaultRootWindow(display);
            Window win = w->w;
            while (win != None) {
                Region region;
                if ((region = XCreateRegion())) {
                    XShapeCombineRegion(display, w->w, ShapeInput, 0, 0, region, ShapeSet);
                    XDestroyRegion(region);
                }
                Window parent;
                find_parent(win, &parent);
                win = (parent == root ? None : parent);
            }
            XFlush(display);
            break;
        }
    }
}

Hormat kami, seseorang yang menghabiskan waktu terlalu lama untuk men-debug ini dalam proyek terpisah.

Semua 4 komentar

Sayangnya memiliki barang XShape di main_loop() menyebabkan crash dalam beberapa kasus. Saya tidak dapat menemukan mantra sihir yang benar untuk membuat Xlib bahagia dalam kasus itu.

Jika Anda ingin fungsionalitas XShape bekerja dengan andal di bawah semua pengelola jendela, itu harus dipanggil setelah aplikasi menerima MapNotify . Juga, beberapa WM (Openbox) memiliki jendela induk yang tidak terlihat meskipun _NET_WM_WINDOW_TYPE disetel ke _NET_WM_WINDOW_TYPE_DESKTOP , dan karenanya harus menerapkan kode yang sama ke induknya. Sebagai contoh:

while (XPending(display) > 0) {
    XEvent ev;
    XNextEvent(display, &ev);
    switch (ev.type) {
        /* ... */
        case MapNotify: {
            Window root = DefaultRootWindow(display);
            Window win = w->w;
            while (win != None) {
                Region region;
                if ((region = XCreateRegion())) {
                    XShapeCombineRegion(display, w->w, ShapeInput, 0, 0, region, ShapeSet);
                    XDestroyRegion(region);
                }
                Window parent;
                find_parent(win, &parent);
                win = (parent == root ? None : parent);
            }
            XFlush(display);
            break;
        }
    }
}

Hormat kami, seseorang yang menghabiskan waktu terlalu lama untuk men-debug ini dalam proyek terpisah.

@ wacossusca34 baik mengetahuinya, terima kasih atas masukannya.

@brndnmtthws apakah saran di atas bagus untuk digabungkan? Sepertinya itu harus berhasil

Apakah halaman ini membantu?
0 / 5 - 0 peringkat