Opened 9 years ago

Last modified 7 years ago

#6029 assigned enhancement

Holding CTRL+ALT should move more than just windows

Reported by: RedNifre Owned by: nobody
Priority: normal Milestone: R1
Component: User Interface Version: R1/Development
Keywords: CTRL ALT move window replicant view deskbar Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All



It should be possible to move replicants and the deskbar (and possibly more) around by holding CTRL+ALT.

Current Situation

When holding CTRL+ALT you can drag and drop a window by grabbing it anywhere (as opposed to just at the sides). Unfortunately, this does not work on replicants and the deskbar

Suggested Solution

Allow this for replicants and the deskbar. The clickable area should encompass the whole bounding box of a replicant/deskbar, including unused spaces.

Change History (13)

comment:1 Changed 9 years ago by anevilyak

Two problems here: 1) At the level of the app_server there is nothing that distinguishes a replicant from any other BView, so there wouldn't really be an intelligent way to determine that, and 2) unlike most windows, Deskbar does not allow arbitrary positions, so the behavior would get relatively confusing/inconsistent if extended to Deskbar.

comment:2 Changed 9 years ago by axeld

The Deskbar could intercept the ctrl-alt, and act the same as if you had pressed that button.

Same for BViews that are replicants. I just currently don't know if such a view actually knows that, I don't think it does.

In any case, I like this suggestion.

comment:3 Changed 9 years ago by axeld

The Deskbar part is implemented in hrev36889.

The replicant move code should actually be implemented by the shelf it's in, as that is the only one knowing if the view is a replicant, and also, if it may be moved or not.

comment:4 in reply to:  3 Changed 9 years ago by Ziusudra

Replying to axeld:

The Deskbar part is implemented in hrev36889.

I just built 36890 and I can't do anything with the Deskbar but move it. Every button click acts as if I'm holding Ctrl+Alt.

If I do hold Ctrl+Alt then it acts like it did before the change, unless I turn on auto raise in which case it acts as it should with the change.

comment:5 Changed 9 years ago by stippi

Owner: changed from stippi to axeld
Status: newassigned

comment:6 Changed 9 years ago by axeld

Owner: changed from axeld to nobody

Should be working okay again since hrev36899.

comment:7 Changed 9 years ago by humdinger

This change disables the Vulcan Death Grip SHIFT+CTRL+OPT+ALT + click on app in Deskbar.

comment:8 Changed 9 years ago by axeld

Fixed in hrev36902, thanks for the note.

comment:9 Changed 9 years ago by Ziusudra

What the ... OK, on 36917 now.

Deskbar works normally when not holding any modifiers. If I hold Ctrl+Alt I can not move it around, but can send it back or bring it forward.

I can move other windows with Ctrl+Alt and your current if condition is the same used in Window.cpp to move windows.

I tried it the way seen in ExpandoMenuBar:

		int32 mods = modifiers();
		if ((mods & B_COMMAND_KEY) != 0
			&& (mods & B_OPTION_KEY) == 0
			&& (mods & B_SHIFT_KEY) == 0
			&& (mods & B_CONTROL_KEY) != 0) {

with the same result.

Is the BWindow MouseDown() catching the event and preventing this from working? Thus BarWindow needs to implement MouseDown() to override?

comment:10 Changed 9 years ago by axeld

I just reinstalled Haiku here, and I have the same issue. All events are first sent to the window which will then (after having called BWindow::DispatchMessage()) forward it to the handler it should go to.

I don't have any idea why this happens ATM, but I'll have a look.

comment:11 Changed 9 years ago by axeld

Finally fixed in hrev36935. What an effort for such a little change :-)

comment:12 Changed 7 years ago by diver

Version: R1/alpha2R1/Development

comment:13 Changed 7 years ago by bonefish

The problem with respect to replicants is that, if the replicant intercepts the gesture, the containing window can no longer be moved using it. With a few exceptions replicants are only used on the desktop, so this might not be a problem that often. OTOH, how often does one usually move replicants? If at all I'd rather see a different key combo for replicants (Option + mouse?).

Note: See TracTickets for help on using tickets.