[enhancement] Missing client API for relative surface movement (e.g. dragging client-decorated windows)
Bug #1420334 reported by
William Hua
This bug affects 7 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Alan Griffiths | ||
MirAL |
Won't Fix
|
Medium
|
Alan Griffiths | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
xorg-server (Ubuntu) |
Won't Fix
|
Wishlist
|
Unassigned |
Bug Description
Mir needs a client API to allow surfaces to move themselves relatively. This is required to support full client-side decorations (bug 1398849), and also other apps like Google Chrome and Gnome Nautilus which can be dragged using part of their client areas.
Later additions that are so similar I think they are part of the same bug: there need to be client APIs for "always on top" and "client initiate resize".
Related branches
lp://staging/~alan-griffiths/mir/support-gdk_window_move_to_rect
- Mir CI Bot: Needs Fixing (continuous-integration)
- Chris Halse Rogers: Approve
- Kevin DuBois (community): Approve
- Gerry Boland (community): Approve (vote)
-
Diff: 588 lines (+366/-12)13 files modifiedinclude/client/mir_toolkit/mir_surface.h (+33/-1)
include/client/mir_toolkit/version.h (+2/-2)
include/common/mir_toolkit/common.h (+94/-1)
include/server/mir/scene/surface_creation_parameters.h (+6/-1)
include/server/mir/shell/surface_specification.h (+6/-1)
src/client/mir_connection.cpp (+6/-1)
src/client/mir_surface.cpp (+6/-1)
src/client/mir_surface.h (+6/-1)
src/client/mir_surface_api.cpp (+24/-1)
src/client/symbols.map (+1/-0)
src/protobuf/mir_protobuf.proto (+13/-0)
src/server/frontend/session_mediator.cpp (+11/-1)
tests/acceptance-tests/test_custom_window_management.cpp (+158/-1)
lp://staging/~alan-griffiths/miral/connect-gdk_window_move_to_rect-inspired-placement-logic-to-Mir-0.25-API
- Gerry Boland (community): Approve
-
Diff: 265 lines (+109/-42)4 files modifiedinclude/miral/window_specification.h (+68/-34)
miral/basic_window_manager.cpp (+4/-4)
miral/window_specification.cpp (+35/-2)
test/window_placement.cpp (+2/-2)
lp://staging/~alan-griffiths/mir/client-initiates-user-move-and-resize
- Mir CI Bot: Approve (continuous-integration)
- Gerry Boland (community): Abstain
- Daniel van Vugt: Abstain
- Chris Halse Rogers: Approve
- Andreas Pokorny (community): Approve
-
Diff: 385 lines (+293/-0)9 files modifiedinclude/client/mir_toolkit/mir_window.h (+9/-0)
src/client/mir_surface.cpp (+5/-0)
src/client/mir_surface.h (+1/-0)
src/client/mir_surface_api.cpp (+14/-0)
src/client/symbols.map (+2/-0)
src/protobuf/mir_protobuf.proto (+1/-0)
tests/acceptance-tests/CMakeLists.txt (+1/-0)
tests/acceptance-tests/client_mediated_user_gestures.cpp (+259/-0)
tests/acceptance-tests/drag_and_drop.cpp (+1/-0)
tags: | added: clientapi |
Changed in xmir: | |
status: | New → Confirmed |
importance: | Undecided → Wishlist |
tags: | added: make-xmir-default |
tags: | added: xmir |
tags: | removed: make-xmir-default |
affects: | xmir → xorg-server (Ubuntu) |
Changed in xorg-server (Ubuntu): | |
status: | Confirmed → Triaged |
Changed in mir: | |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
status: | Triaged → In Progress |
Changed in mir: | |
milestone: | none → 0.25.0 |
Changed in miral: | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
Changed in mir: | |
milestone: | 0.25.0 → 0.26.0 |
Changed in mir: | |
milestone: | 0.26.0 → 1.0.0 |
summary: |
- [enhancement] Missing client API for relative surface movement + [enhancement] Missing client API for relative surface movement (e.g. + dragging client-decorated windows) |
description: | updated |
Changed in mir: | |
status: | Incomplete → In Progress |
Changed in mir: | |
status: | Fix Committed → Fix Released |
Changed in miral: | |
status: | Incomplete → In Progress |
milestone: | none → 1.5 |
Changed in miral: | |
milestone: | 1.5 → none |
Changed in xorg-server (Ubuntu): | |
status: | Triaged → Won't Fix |
Changed in miral: | |
status: | In Progress → Won't Fix |
To post a comment you must log in.
We can do all this on the server side already so I assume you mean missing client API calls?
For the client API:
resizing: Missing, yes I know
moving: Missing, yes I know clients need to be able to do relative movements of themselves (e.g. fully client decorated).
restacking: Not sure this is a client thing... Localized stacking order is implied by parenthood between surfaces. And changed thereafter entirely by the shell.
But the first 2 out of 3 are definitely missing features. We should break them up into separate enhancement requests.