Opened 7 years ago

Closed 5 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:
Has a Patch: no 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 Changed 5 years ago by jscipione

Owner: changed from axeld to jscipione
Status: newassigned

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).

comment:2 Changed 5 years ago by jscipione

Priority: normallow

comment:3 Changed 5 years ago by jscipione

Resolution: fixed
Status: assignedclosed

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.

Note: See TracTickets for help on using tickets.