TiZ-HugLife / xfce4-dockbarx-plugin

A plugin that embeds DockbarX into Xfce4-panel
MIT License
70 stars 14 forks source link

Right Click Menu Does Not Allow For Clicking When Panel Hides Automatically #12

Closed Jesse-Millwood closed 8 years ago

Jesse-Millwood commented 10 years ago

I have the dockbarx plugin in a panel at the bottom of my screen. When I have the ability to automatically hide enabled and right click on an application icon the menu pops up but when I move my mouse onto the menu the panel hides and the menu stays but none of the menu options do anything. This problem does not occur when the automatic panel hiding is deactivated.

I can not figure out how to find the version information of dockbarx or the xfce4 panel plugin

TiZ-HugLife commented 9 years ago

I'm sorry I've left this issue to languish for so long. What distribution are you on, and what version of that distribution? To figure out the various package versions, you should use your package manager. If you're on a debian base like Ubuntu or Mint, you can do apt-cache show xfce4-panel dockbarx xfce4-dockbarx-plugin. If you're on an Arch base, you should already know how to do this. I don't know the procedure for other bases.

As you may have noticed from #13, I can't reproduce any issues with autohiding panels, so I'll need some logs. Open up a terminal, and run xfce4-panel -q to quit the panel completely. Then, xfce4-panel > log.txt and put that in a paste or in a gist. Also, please show me files from ~/.dockbarx/log.

Sidnioulz commented 9 years ago

Hi, this is about the new intelligent-hiding feature, you have to call xfce_panel_plugin_block_autohide explicitly. See the patch in https://bugzilla.xfce.org/show_bug.cgi?id=11359 for an example.

TiZ-HugLife commented 9 years ago

There's unfortunately not a smart way to do this. The Vala socket has no way of knowing if the Python plug is doing anything significant, such as having the menu open. The only thing I could think to do is continuously poll for the existence of a menu belonging to DockbarX but that'd be pretty inefficient. If anyone has better ideas, I'd love to hear them. And I'm always up for accepting pull requests.

Sidnioulz commented 9 years ago

Yeah I was a bit worried about this. In any case, you know which function to call if you find a proper way to hook it in the future.

TiZ-HugLife commented 9 years ago

Okay, I was finally able to reproduce this. I don't know what changed that allowed me to reproduce it. But now it may be possible for me to fix this. @M7S, are there signals I can connect to when the group menu appears and disappears?

Exagone313 commented 8 years ago

Someone advised me to use DockbarX, but this bugs keeps me away from the XFCE panel plugin. I'll use DockbarX with AWN for now.

When the panel is configured to hide automatically or intellihide, the context menu and the media menu are not working after the panel disappeared. Since it disappears very fast by default, this makes it unusable.

I am not aware of the possibilities of a XFCE plugin, but it would need to keep the panel shown when a context or media menu is displayed.

I use the latest version on ArchLinux (package from the Aur).

TiZ-HugLife commented 8 years ago

So does AWN properly stay visible whenever DBX's group menu is visible? If so, I can check the source code to see how AWN's doing it, and try to imitate that here, mayhaps with an xfconf property. It's terribly hacky, but probably the most efficient way to do it since that's what the socket and plug are already using to talk to each other.

Exagone313 commented 8 years ago

Yes, it works perfectly with AWN.

TiZ-HugLife commented 8 years ago

Fantastic! That could lead to the breakthrough I've been needing for this particular issue. :)

TiZ-HugLife commented 8 years ago

Welp, this is how AWN does it, lol:

https://github.com/M7S/dockbarx/blob/master/AWN/DockBarX/DockBarX.py#L96 https://github.com/M7S/dockbarx/blob/master/AWN/DockBarX/DockBarX.py#L160

Basically, it polls for the presence of the popup window every .2 seconds. I am not a fan of that approach because it unnecessarily eats CPU time. The globals object, which contains the function variable that returns a weak ref for the popup window, does inherit GObject. If I can use the GObject notify signal for any old Python object variable, I can avoid this polling.

Another approach I can take is monkey-patching __set_attr__ for the globals object to react whenever shown_popup is changed. That's absolutely filthy though. It will almost certainly work, but I'd rather not do it if I don't have to. I'll try both approaches and see what I find.

TiZ-HugLife commented 8 years ago

The latest commit is an attempt to fix it, even though I botched up the issue number. It works on my system. Please verify it works on yours at your best convenience. :)

TiZ-HugLife commented 8 years ago

Not going to close this until it's confirmed fixed. :)

JesusMcCloud commented 8 years ago

Works for me!