Age | Commit message (Collapse) | Author |
|
screens.
Now hopefully fixed, if not perfectly: If a window isn't bound to any
physical screen it will be bound in newwin() to the first screen mcwm
knows about.
In fitonscreen() I forgot to check for the case where window
coordinates are larger than the screen's.
|
|
easier if you want to paste something with middle button without
having to move the pointer to get pointer focus first.
|
|
|
|
|
|
means they will be get automatically mapped and reparented if mcwm
exits even if it crashes.
Simplified cleanup() to reflect the above change. We still need to
change the keyboard focus policy from mcwm's default to follow pointer
instead. If mcwm crashes completely before we reach cleanup() this
might become a problem. All the windows will be mapped but there won't
be a keyboard focus and no way to change it. I don't know how to fix
that right now.
Don't attempt to catch SIGSEGV. Might be dangerous.
|
|
20, 2010, I decided to use pointer hints instead of pointer motion
notify to possible speed up things.
In commit 381e642a39187f615ba54955ef02d1e2fcf1f95d on Jul 17, 2010, I
reverted and wrote:
Stop querying for pointer position ourself. Don't use motion hinting
anymore and get real coordinates with motion event. See Gajewska and
Manasse: "Why X Is Not Our Ideal Window System".
Since getting a trackball with high CPI and experiencing how slow
moves and resizes suddenly were, especially when decreasing mouse
acceleration, this is clearly wrong. The right way *is* to subscribe
to just motion hints and request pointer coordinates ourselves.
|
|
Don't use getgeom() when we're done resizing or moving. We already
know the geometry of the client window.
|
|
|
|
might be on. If fixed, it's now on all of them.
|
|
If a window is unmapped and we are going to forget about it we need to
take into consideration if it's currently focused.
|
|
since we track it all the time now.
Only call arrangewindows() when root window changes geometry if we
don't have RANDR. Otherwise, we call getrandr() when we get a
XCB_RANDR_SCREEN_CHANGE_NOTIFY event.
Added comments.
When a monitor gets a new mode in an RANDR scenario, we track the x,y
position and width,height.
If we lose a monitor, we add the windows on that monitor to another
monitor.
|
|
WORKSPACE_MAX and used it consistently.
When fixing a window in fixwindow() we now add the window to all
workspace window lists except current in which it already should be
present. This means fixed windows are always a natural part of the
window list. No special treatment means that we don't muck around with
the order of the lists when changing workspaces.
|
|
|
|
own function.
In configurerequest(), consider monitor size when changing window
coordinates and size.
Forgot events() declaration!
|
|
When we get a ConfigureRequest() we mustn't stop if the window is
unknown to us. This might be a client that hasn't even tried to map
itself yet! Work around it.
|
|
|
|
|
|
the client.
|
|
Removed done FIXMEs.
|
|
Count borders in width and height when fitting on screen.
Remove unneccessary getgeom() from topright(). We know the geometry.
|
|
|
|
Now keeps track of physical monitors in list monlist of struct monitor.
Subscribes to a RANDR notification and updates our view of the
physical outputs.
Two new keys: Mod + , and . to move windows back or forwards on
physical screens. Uses new functions prevscreen() and nextscreen().
New functions:
- setuprandr(). Initialize RANDR extension.
- getrandr(). Get resources from RANDR extenstion.
- getoutputs(). Goes through all video outputs and stores them in
list.
- fitonscreen(). Before mapping a window, make sure it fits on the
screen. Rewrote a lot of functions to use this instead of their
own code.
- movelim(). Move a window with physical screen limits. Rewrote
functions to use this.
- resizelim(). Resize a window with physical screen limits. Rewrote
functions to call this.
- findmonitor(). Looks for an output in list by ID.
- findmonbycoord(). Ditto but with x,y coordinates. If coords are
within an output, we return it.
- delmonitor(). Removes output from list.
- addmonitor(). Add it.
Simplified many functions.
|
|
and not in the window the mouse cursor happen to be in when the mouse
button is pressed.
However, just do move and resize if the mouse cursor is inside the
window we care about. There's a limit to sloppy focus. It gets
confusing and we might lose focus to another window if we allow move
and resize *and continue to put the mouse cursor back to where it was
when starting, relative to the window*, as we do now.
Removed code for special handling of the root window. We don't use it
anyway.
Extra checks for focuswin == NULL.
|
|
windows between workspaces, this makes us sure we can find it on the
workspace we're going to. Thanks to Simon Friis for noticing.
|
|
for keycodes with MODKEY mask instead and checks for those.
Also stops tabbing around not only when MODKEY keys are released, but
also when another MODKEY command is pressed.
|
|
keyboard. We don't want to do anything when mouse buttons have been
remapped.
|
|
leaked memory. Noticed that we need to use special free() function for
keysyms.
|
|
but needs to be handled.
|
|
|
|
|
|
wslist in struct client. Use it! Don't go through the list looking for
our data.
|
|
didn't, do nothing.
|
|
|
|
winlist instead of asking the X server for all windows.
Leave x coord alone when toggling vertmax.
|
|
|
|
|
|
|
|
complained.
Added explicit check for mode equals 0 on button release and break
immedietely. Easier to read.
Added some comments.
|
|
|
|
See struct client's wsitem[] array.
We use this to be able to free a window from a workspace window list
without having to traverse all items in all workspace lists.
This is stored as an array in the client because a window should be
able to occupy several workspaces simultaneously.
This also made it possible to clean up changing workspaces.
Also added early breaks in focusnext().
|
|
Neukirchen, chneukirchen at the domain gmail.com. I only changed the
default key and moved a flush.
|
|
in the window geometry.
|
|
some other window.
If we don't find any window to focus on, focus first in list, whatever
it is.
|
|
workspace.
|
|
remember to ungrab the pointer and reset the mode!
We *do* need EnterNotify events with mode Ungrab! Users might do
strange things, like not letting go of a mouse button or a grabbed key
until they have entered a window, and we still want to change focus if
they do.
|
|
|
|
|
|
nicer.
Break out of loop if we get EINTR instead of continue. Same effect
since the for loop ends when sigcode != 0, but this makes it more
explicit.
|
|
|
|
we don't know anything about.
This seems to fix the unclutter(1) problem.
|