> On April 13, 2016, 6:43 p.m., Marco Martin wrote:
> > I don't like the api...
> > If I understand correctly you need the menu aligned with the task item not 
> > going over the taskbar also in cases of windows can cover?
> > I would prefer in this case another open method, something along the lines 
> > of open(Plasma::Types::Location) that would open the menu relative to the 
> > visualparent, aligning it depending on the location
> 
> Eike Hein wrote:
>     No, it has nothing to do with the panel or even the visual parent. By 
> default QMenus open towards the bottom and right of $pos. If $pos is closer 
> to the bottom or right of the screen than the menu is big, the menu will go 
> as far bottom and right as it can, bumping against the screen edge. In the 
> case of the Task Manager that means the menu covers the task button. Our Task 
> Managers have always had code to avoid this and position the context menu 
> either against the panel edge or (better, because of multi-row task managers) 
> the task item. The old Task Manager applet had the same code I added here to 
> accomplish this.
>     
>     Your API suggestion is OK, but in some sense kind of doesn't overlap with 
> this one. Your proposal would add a new API to position the menu relative to 
> the visual parent with the Location enum (which I personally always felt is 
> very very confusing, but I digress). This extends the coordinate-based API 
> with a hint for how those coordinates should be respected.
> 
> Eike Hein wrote:
>     Note: I can try writing the enum API if you still want me to though ...
> 
> Marco Martin wrote:
>     the task item would be the visual parent, no?
> 
> Eike Hein wrote:
>     Yeah. The enum-based API would address the use case as well, but 
> strictly-speaking the coordinate-based API could still benefit from this if 
> someone prefers to use it.
>     
>     I'm fine with implementing either as you see fit.
>     
>     Though it's noteworthy that the Location enum is kind of broken by design 
> for specifying relative positions, because it makes it hard to specify 
> corners. You can do Left/Right/Top/Bottom, but you can't | the values to 
> combine, say, Right and Bottom because it's not a flag enum. That means you 
> have to bake in the assumption that Bottom means bottom-left. The 
> coordinate-based API doesn't suffer from this restriction since you can just 
> pass any coordinates in the visualParent. If we ever break Plasma API we 
> should add a Position enum and convert all the relevant APIs to it.
> 
> Eike Hein wrote:
>     I just noticed we have a PopupPlacement enum actually ...
> 
> Marco Martin wrote:
>     would the popupplacement values describe what you need?
>     would go with that then

Did it, but looks like I have to do a prop after all, as a method parameter 
doesn't work:

plasmashell(27748)/default unknown: 
file:///home/eike/devel/install/share/plasma/plasmoids/org.kde.plasma.taskmanagerng/contents/ui/ContextMenu.qml:51:
 Error: Unknown method parameter type: Plasma::Types::PopupPlacement

https://bugreports.qt.io/browse/QTBUG-20639


- Eike


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/127646/#review94585
-----------------------------------------------------------


On April 13, 2016, 5:24 p.m., Eike Hein wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/127646/
> -----------------------------------------------------------
> 
> (Updated April 13, 2016, 5:24 p.m.)
> 
> 
> Review request for Plasma.
> 
> 
> Repository: plasma-framework
> 
> 
> Description
> -------
> 
> This adds a parameter to open() to request the menu be positioned to collide 
> against the supplied coordinates instead of the screen edge if there's 
> insufficient space to show the entire menu next to the coordinates. This 
> allows Task Manager-style positioning (which used to be hardcoded in C++ in 
> the applet), where the menu is shown above a task item in a bottom panel and 
> to the left of the task item in a right panel. Without this opt-in behavior, 
> the menu goes as far below/right of the coordinates as it an until it 
> collides with the screen edge, therefore overlapping with the item.
> 
> The new behavior defaults to off, to not change API behavior.
> 
> It's added as a new parameter instead of a declarative prop in keeping with 
> the existing style - the open coordinates are not declarative either; the 
> whole thing is treated as a one-shot procedural op.
> 
> This will be used by the Task Manager applet to position the task context 
> menu more smartly.
> 
> 
> Diffs
> -----
> 
>   src/declarativeimports/plasmacomponents/qmenu.h 41e8865 
>   src/declarativeimports/plasmacomponents/qmenu.cpp 2a96d77 
> 
> Diff: https://git.reviewboard.kde.org/r/127646/diff/
> 
> 
> Testing
> -------
> 
> Tested with rtl locales as well.
> 
> 
> Thanks,
> 
> Eike Hein
> 
>

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to