Opened 12 years ago
Closed 10 years ago
#9350 closed bug (fixed)
Deskbar hangs for long time when dragging it around
Reported by: | jackburton | Owned by: | jscipione |
---|---|---|---|
Priority: | low | Milestone: | R1 |
Component: | Applications/Deskbar | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
If I try to drag Deskbar around the screen's edges, it hangs in a position for tens of seconds, then rapidly moves around following the mouse movements, then hangs again, etc. This has been happening for a while now, both on VirtualBox and on real hardware. Will try to make a video.
Change History (3)
comment:1 by , 10 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 10 years ago
Priority: | normal → low |
---|
comment:3 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Should be fixed in hrev48817, please reopen or comment otherwise.
Deskbar after that revision should be much more responsive when dragged around the screen because of the explanation above. We no longer store the state, destroy the apps menu and then recreate it, instead, we keep the object around and simply redraw it at the new location.
Are you still experiencing this problem? If so I may have a patch in the works that will fix the issue. The Deskbar code has been improved significantly since it was merged into OpenBeOS/Haiku, but, there is still one case that has not been properly (re)written, and this is when the Deskbar is rapidly dragged around the screen edges just as you describe in this ticket.
Basically, the list of running applications is implemented in Deskbar using a BMenu. A BMenu is set to either layout items in B_ITEMS_IN_ROW or B_ITEMS_IN_COLUMN in the constructor. Unfortunately this cannot be changed after construction which means that instead we destroy and recreate the menu when switching between horizontal and vertical layouts.
This is obviously less than ideal, it works, but does not perform very well and requires a lot of code to save the state, destroy the menu and recreate it, build the application menu items up again, and then finally restore whether or not application items are expanded or not (in expando mode).