Menu

#792 eggtrayicon causes icons to be placed in their own window

open
icewm-1.2 (683)
6
2008-12-30
2008-01-23
No

A code change in icetray.cc between 1.2.34 and 1.2.35 results in the Gajim tray icon being placed in its own window. When Gajim is closed the window remains (minus icon) but is "broken" and refuses to be killed.

This problem seems to be unique to eggtrayicon and IceWM. Please find attached a test case which I've used to reproduce the problem with 1.2.35 as well as a recent CVS copy. The problem does not seem to exist in 1.2.34 or JWM (Joe's Window Manager).

The change which results in the problem appears to be:

193,195c199,205
< if (fTray2->visible())
< show();
< else
---
> if (fTray2->visible()) {
> if (!fManaged)
> requestDock();
> else
> show();
> } else {
> fManaged = false;

If I remove the call to requestDock() and simply call show() as before the problem seems to go away. I'm not suggesting this as a fix (I'm sure you have a reason for calling requestDock()), but rather to point you to where the problem may lie.

Discussion

  • Anonymous

    Anonymous - 2008-01-23

    Test case.

     
  • Marko Macek

    Marko Macek - 2008-02-11
    • labels: --> icewm-1.2
    • priority: 5 --> 8
    • assigned_to: nobody --> captnmark
     
  • Marko Macek

    Marko Macek - 2008-04-06

    Logged In: YES
    user_id=1814
    Originator: NO

    note: the testcase doesn't cause the problem for me in latest CVS (1.2.35+)

    Be sure that you are using icewmtray from icewm-1.2.35 and not an older version.

     
  • quest

    quest - 2008-11-15

    icewm-1.2.36pre1
    When I have change theme or restarting Icewm - tray icon being placed in its own window. And when I change theme or restarting Icewm again - this "tray" window now without any tray icons - only small black window refuses to be killed.

     
  • quest

    quest - 2008-11-15

    How I can add 2 screenshots in thies report to illustrate this icewmtray's bug?

     
  • quest

    quest - 2008-11-15

    s/thies/this, sorry

     
  • Marko Macek

    Marko Macek - 2008-12-30
    • priority: 8 --> 6
     
  • Stanislav Maslovski

    This bug is present in 1.2.37. I see it with gajim. The bug is usualy seen after I close a single app (does not matter which) that used the systray and then start gajim. Instead of the systray the gajim icon appears in its own window. This window cannot be closed.

    See also icewm-Bugs-2499403.

     
  • Stanislav Maslovski

    I have compiled icewm with debugging enabled. Below I give an example which illustrates some internals of the bug. For me it looks like a race between something unmapping the embedded tray window and something sending docking requests.

    Pre-requisites:
    gajim, linuxdc++
    (actually, can be any app using the tray, with gajim it just happens more often for some reason)

    Initial conditions:
    Empty systray

    The log:
    ============ systray is empty; we start gajim ===================
    Session Management support not available (missing gnome.ui module)
    Network Manager support not available
    icewmtray: window=0xC0003A: reparentNotify serial= 239 event=0xC0003A, parent=0x800018, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: reparentNotify serial= 239 event=0x800018, parent=0x800018, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 240 event=0xC0003A, override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 240 event=0x800018, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 243 event=0xC0003A, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 243 event=0x800018, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: real configureRequest serial= 255 parent=0x800018, (0:0-16x24) border_width=0, above=0x0, detail=0, value_mask=0x10
    icewmtray: window=0x800008: reparentNotify serial= 255 event=0x800008, parent=0x13B, (0:0), override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 256 event=0x800008, parent=0xA006C8, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 256 event=0x800008, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 260 event=0xC0003A, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 260 event=0x800018, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: unmapNotify serial= 303 event=0xC0003A, from_configure=False send_event=False
    icewmtray: window=0xC0003A: unmapNotify serial= 303 event=0x800018, from_configure=False send_event=False
    icewmtray: window=0xC0003A: destroy serial= 303 event=0xC0003A
    icewmtray: window=0xC0003A: destroy serial= 303 event=0x800018
    icewmtray: window=0x800008: unmapNotify serial= 312 event=0x800008, from_configure=False send_event=False
    Requires docutils 0.4 for set_classes to be available
    ============ I quit gajim, and then run linuxdc++ =============
    Loading: Hash database
    Loading: Shared Files
    Loading: Download Queue
    icewmtray: window=0xC00064: reparentNotify serial= 339 event=0xC00064, parent=0x800024, (0:0), override_redirect=False
    icewmtray: window=0xC00064: reparentNotify serial= 339 event=0x800024, parent=0x800024, (0:0), override_redirect=False
    icewmtray: window=0xC00064: mapNotify serial= 340 event=0xC00064, override_redirect=False
    icewmtray: window=0xC00064: mapNotify serial= 340 event=0x800024, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 343 event=0xC00064, (0:0-20x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 343 event=0x800024, (0:0-20x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: real configureRequest serial= 358 parent=0x800024, (0:0-20x24) border_width=0, above=0x0, detail=0, value_mask=0x10
    icewmtray: window=0x800008: reparentNotify serial= 358 event=0x800008, parent=0x13B, (0:0), override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 358 event=0x800008, parent=0xA009A1, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 358 event=0x800008, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 360 event=0xC00064, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 360 event=0x800024, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: unmapNotify serial= 395 event=0xC00064, from_configure=False send_event=False
    icewmtray: window=0xC00064: unmapNotify serial= 395 event=0x800024, from_configure=False send_event=False
    icewmtray: window=0xC00064: destroy serial= 395 event=0xC00064
    icewmtray: window=0xC00064: destroy serial= 395 event=0x800024
    icewmtray: window=0x800008: unmapNotify serial= 404 event=0x800008, from_configure=False send_event=False
    Shutting down...
    ============ quit linuxdc++, and run gajim agian =======
    Session Management support not available (missing gnome.ui module)
    Network Manager support not available
    icewmtray: window=0xC0003A: reparentNotify serial= 431 event=0xC0003A, parent=0x80002E, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: reparentNotify serial= 431 event=0x80002E, parent=0x80002E, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 432 event=0xC0003A, override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 432 event=0x80002E, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 435 event=0xC0003A, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 435 event=0x80002E, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: real configureRequest serial= 445 parent=0x80002E, (0:0-16x24) border_width=0, above=0x0, detail=0, value_mask=0x10
    icewmtray: window=0x800008: reparentNotify serial= 447 event=0x800008, parent=0x13B, (0:0), override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 447 event=0x800008, parent=0xA00CF9, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 447 event=0x800008, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 452 event=0xC0003A, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 452 event=0x80002E, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: unmapNotify serial= 495 event=0xC0003A, from_configure=False send_event=False
    icewmtray: window=0xC0003A: unmapNotify serial= 495 event=0x80002E, from_configure=False send_event=False
    icewmtray: window=0xC0003A: destroy serial= 495 event=0xC0003A
    icewmtray: window=0xC0003A: destroy serial= 495 event=0x80002E
    icewmtray: window=0x800008: unmapNotify serial= 504 event=0x800008, from_configure=False send_event=False
    Requires docutils 0.4 for set_classes to be available
    ============ quit gajim, run linuxdc++ =============
    Loading: Hash database
    Loading: Shared Files
    Loading: Download Queue
    icewmtray: window=0xC00064: reparentNotify serial= 531 event=0xC00064, parent=0x80003A, (0:0), override_redirect=False
    icewmtray: window=0xC00064: reparentNotify serial= 531 event=0x80003A, parent=0x80003A, (0:0), override_redirect=False
    icewmtray: window=0xC00064: mapNotify serial= 532 event=0xC00064, override_redirect=False
    icewmtray: window=0xC00064: mapNotify serial= 532 event=0x80003A, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 535 event=0xC00064, (0:0-20x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 535 event=0x80003A, (0:0-20x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: real configureRequest serial= 550 parent=0x80003A, (0:0-20x24) border_width=0, above=0x0, detail=0, value_mask=0x10
    icewmtray: window=0x800008: reparentNotify serial= 550 event=0x800008, parent=0x13B, (0:0), override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 550 event=0x800008, parent=0xA0116A, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 550 event=0x800008, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 552 event=0xC00064, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: configureNotify serial= 552 event=0x80003A, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC00064: unmapNotify serial= 587 event=0xC00064, from_configure=False send_event=False
    Shutting down...
    icewmtray: window=0xC00064: unmapNotify serial= 587 event=0x80003A, from_configure=False send_event=False
    icewmtray: window=0xC00064: destroy serial= 587 event=0xC00064
    icewmtray: window=0xC00064: destroy serial= 587 event=0x80003A
    icewmtray: window=0x800008: unmapNotify serial= 596 event=0x800008, from_configure=False send_event=False
    ============ quit linuxdc++, run gajim and HERE WE GET IT ==========
    Session Management support not available (missing gnome.ui module)
    Network Manager support not available
    icewmtray: window=0xC0003A: reparentNotify serial= 623 event=0xC0003A, parent=0x800044, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: reparentNotify serial= 623 event=0x800044, parent=0x800044, (0:0), override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 624 event=0xC0003A, override_redirect=False
    icewmtray: window=0xC0003A: mapNotify serial= 624 event=0x800044, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 627 event=0xC0003A, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 627 event=0x800044, (0:0-16x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: real configureRequest serial= 637 parent=0x800044, (0:0-16x24) border_width=0, above=0x0, detail=0, value_mask=0x10
    icewmtray: window=0xC0003A: configureNotify serial= 644 event=0xC0003A, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: configureNotify serial= 644 event=0x800044, (0:0-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 654 event=0x800008, parent=0x13B, (0:0), override_redirect=False
    icewmtray: window=0x800008: reparentNotify serial= 654 event=0x800008, parent=0xA014EA, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 654 event=0x800008, override_redirect=False
    IceWM: APP BUG? configureRequest for window A0116A sent to destroyed frame 800008!
    IceWM: APP BUG? mapRequest for window A0116A sent to destroyed frame 800008!
    icewmtray: window=0x800008: unmapNotify serial= 655 event=0x800008, from_configure=False send_event=False
    icewmtray: window=0x800008: reparentNotify serial= 655 event=0x800008, parent=0xA014F4, (0:0), override_redirect=False
    icewmtray: window=0x800008: mapNotify serial= 655 event=0x800008, override_redirect=False
    icewmtray: window=0x800008: configureNotify serial= 655 event=0x800008, (129:147-24x24) border_width=0, above=0x0, override_redirect=False
    icewmtray: window=0xC0003A: unmapNotify serial= 658 event=0xC0003A, from_configure=False send_event=False
    icewmtray: window=0xC0003A: unmapNotify serial= 658 event=0x800044, from_configure=False send_event=False
    icewmtray: window=0xC0003A: destroy serial= 658 event=0xC0003A
    icewmtray: window=0xC0003A: destroy serial= 658 event=0x800044
    Requires docutils 0.4 for set_classes to be available
    ================= guit gajim, end ==================

     

Log in to post a comment.