Câu hỏi Tại sao libindicator báo cáo tất cả các tín hiệu sự kiện cuộn như UP?


Tôi đang cố điều tra lỗi này; ý chính là, nếu bạn có chỉ báo ứng dụng Unity và bạn cuộn qua nó, sự kiện cuộn luôn luôn là 'up', ngay cả khi bạn cuộn xuống.

Đây là một kịch bản Python mẫu tạo ra một chỉ báo ứng dụng. Chạy nó, sau đó di chuột qua chỉ báo (biểu tượng Firefox) và di chuyển lên và xuống. Đầu ra luôn là:

from gi.repository import Gtk, Gdk, AppIndicator3

if __name__ == "__main__":
    menu = Gtk.Menu()
    quit = Gtk.MenuItem("Quit")
    quit.connect("activate", Gtk.main_quit)
    menu.append(quit)
    menu.show_all()

    def scroll(ind, steps, direction):
    print steps, direction
    if direction != Gdk.ScrollDirection.UP:
        print "Things seem ok"

    indicator = AppIndicator3.Indicator.new('testscroll', '', AppIndicator3.IndicatorCategory.APPLICATION_STATUS)
    indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
    indicator.set_icon("/usr/share/pixmaps/firefox.png")
    indicator.connect("scroll-event", scroll)
    indicator.set_menu(menu)
    Gtk.main()

Tôi có thể thấy rằng tín hiệu đang được được định nghĩa ở đây nhưng tôi không thể thấy nơi sự kiện cuộn thực sự được phát ra.

Tín hiệu sự kiện cuộn được phát ra ở đâu? Trường hợp trong mã sẽ 'lỗi' có khả năng có nguồn gốc và không chính xác báo cáo một hướng lên? (Tôi mới phát triển Ubuntu, vì vậy xin lỗi nếu một cái gì đó là chết rõ ràng)


2
2017-07-10 22:49


gốc


Tín hiệu được phát ra từ chỉ báo-applet (trong sự thống nhất, các dịch vụ / bảng điều khiển-dịch vụ.c, hoặc mã chỉ thị-applet cũ src / applet-main.c). Nhưng lỗi không có ở đó, nó hoạt động tốt từ C: paste.ubuntu.com/5863471 . Nó có thể là một lỗi trong nội tâm gobject hoặc các ràng buộc python cụ thể. - Jason Conti
Thú vị khi biết rằng nó hoạt động trong C! Tôi sẽ tìm thấy các ràng buộc python ở đâu? Tôi hy vọng sẽ thu hẹp nó và hy vọng tự sửa lỗi. - Mendhak
Nó có thể nằm trong các ràng buộc python (gói nguồn pygobject) hoặc trong các chú thích gobject-introspection trong libappindicator. Tôi nhận thấy Gtk.ResponseType enum hoạt động chính xác trong tín hiệu 'response' cho Gtk.Dialog, nhưng chúng chỉ chú thích nó như là một gint, trong khi 'scroll-event' được chú thích như Gtk.ScrollDirection. Vì vậy, sửa chữa dễ dàng hơn có thể thay đổi chú thích, trong khi sửa chữa khó khăn hơn có thể là để tìm ra cách để làm enums từ callbacks trong bindings python (nếu đó thực sự là vấn đề). - Jason Conti
Tôi cũng bị cắn bởi lỗi này cho ứng dụng đa dạng của tôi. Tôi báo cáo nó cho bugzilla của Gnome cho dự án pygobject: bugzilla.gnome.org/show_bug.cgi?id=732470 - Peter Levi


Các câu trả lời: