Michael Stapelberg
0cb5d7448d
Implement clients going automatically into floating
2009-05-31 00:31:18 +02:00
Michael Stapelberg
b1eb93326f
Bugfix: Correctly cleanup stack_windows when setting clients to floating
...
This fixes ticket #44
2009-05-30 11:35:32 +02:00
Michael Stapelberg
d4fb34abdd
Bugfix: Don’t ignore enter_notify events for clients on different screens (Thanks Mirko)
...
This fixes ticket #41 .
2009-05-27 18:19:14 +02:00
Michael Stapelberg
b58e2fa8ed
Move toggle_fullscreen to client.c
2009-05-26 16:49:57 +02:00
Michael Stapelberg
ac5c2fcf19
Bugfix: Fix fullscreen for floating clients, fix window name updates for floating clients
2009-05-26 16:46:50 +02:00
Michael Stapelberg
5b8e2ecb18
Implement floating (please test and find bugs)
...
Details which are missing: A command to hide/show all floating clients,
moving/resizing clients with your mouse holding Mod1 (click anywhere
in the client, not just on its borders), resize/move by keyboard, select
next/previous client by keyboard
2009-05-23 16:34:03 +02:00
Michael Stapelberg
7fde55578d
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:24:17 +02:00
Michael Stapelberg
d98c514f82
Bugfix: Correctly handle mode_switch state bit, more debugging output for states
...
We abuse (1 << 8) as mode_switch bit, which is in the range of the
filtered state bits (see previous commit). Therefore, we need to
filter first and then check for mode_switch.
Furthermore, we used 0x2 before, which was just wrong. So, use our
bitmask, not the normal one (0x2).
2009-05-19 15:22:50 +02:00
Michael Stapelberg
5038b3c592
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:52:23 +02:00
Michael Stapelberg
77ab4c0b10
Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko)
...
Sometimes, when the mouse button gets stuck, state contains the bit for
BUTTON_MASK_1 (or other buttons). We filter them out to continue processing
keys correctly.
2009-05-19 13:51:03 +02:00
Michael Stapelberg
1089fb7311
Bugfix: Don’t crash when above dock windows (Thanks Mirko)
2009-05-17 10:54:12 +02:00
Michael Stapelberg
b35599004a
Move the manage_*-functions into their own file as they got quite large
2009-05-16 18:25:04 +02:00
Michael Stapelberg
d5d44e66a2
Bugfix: Re-assign dock windows to different workspaces when a workspace is deleted
...
Killing a dock client and having destroyed workspace 1 before (or the workspace
on which the dock client was started when it was not auto-started) crashed i3 before
this bugfix.
2009-05-16 18:12:35 +02:00
Michael Stapelberg
e79cca8f72
Implement putting clients onto specific workspaces ("assign" in the configfile)
...
This closes ticket #39
2009-05-16 17:32:36 +02:00
Michael Stapelberg
1256730b4b
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:50 +02:00
Michael Stapelberg
3ccc0d7794
Bugfix: Fix display/resizing of colspanned containers
2009-05-09 18:43:02 +02:00
Michael Stapelberg
5b4f10eaca
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:50:51 +02:00
Michael Stapelberg
8e1990f058
Bugfix: Store width_factor/height_factor per workspace, not per container
...
This is a relatively big change, however all cases should be handled by
now.
Because the function to do graphical resizing got rather large, I’ve created
a new file src/resize.c for it.
This fixes ticket #35 .
2009-05-09 17:48:35 +02:00
Michael Stapelberg
8c6c4270a9
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:23:47 +02:00
Michael Stapelberg
89076ea7cf
Bugfix: Don’t raise clients in fullscreen mode, send correct position to clients in fullscreen mode (Thanks ch3ka, mist)
...
This fixes #38 which only happened for clients which actively tried
to reconfigure themselves.
2009-05-08 23:22:40 +02:00
Michael Stapelberg
4b77d93c2e
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:51:34 +02:00
Michael Stapelberg
a2ac022208
Bugfix: Resize all containers in the column instead of only the active one (Thanks Ned)
...
This fixes ticket #33 .
2009-05-07 13:46:34 +02:00
Michael Stapelberg
3a2b546c9e
Implement a command to travel the focusstack. This can be used like a jumpback.
...
However, it is a bit more flexible obviously. You can specify the
offset of the window you want to go to, to implement workflows like
the following:
* Jump to mutt
* Jump to irssi
* Jump back ("focus 2" would be the command)
2009-05-05 17:25:56 +02:00
Michael Stapelberg
e295ab302b
Implement storing WM_CLASS of each client
2009-05-05 16:53:22 +02:00
Michael Stapelberg
c27c7fc020
Bugfix: Insert windows at correct position/set focus correctly when moving between containers
2009-05-03 16:24:12 +02:00
Michael Stapelberg
a0d23c53b3
Bugfix: Re-distribute free space when closing customly resized containers, re-evaluate for other containers
...
This fixes ticket #4
2009-05-03 14:29:58 +02:00
Michael Stapelberg
eab895ac9e
Bugfix: Correctly restore focus when leaving fullscreen mode
2009-05-03 02:13:11 +02:00
Michael Stapelberg
c689b93bce
Bugfix: Don’t crash when asprintf() can’t print the window name (Thanks ch3ka)
...
Apparantly, under some conditions (using LANG=en_US.UTF-8, other locale
variables unset), asprintf() says "Invalid or incomplete multibyte or
wide character" when given a string in COMPOUND_TEXT encoding.
For now, we properly handle asprintf-errors (this should have been
before), but there might be a better solution.
2009-04-28 22:41:00 +02:00
Michael Stapelberg
982e453251
Don’t rely on libxcb-wm any longer, as it got removed in libxcb 0.3.4
...
See http://cgit.freedesktop.org/xcb/util/commit/?id=4c9a707f472e49bc3005354db265a0214071d46b
2009-04-19 20:44:34 +02:00
Michael Stapelberg
65b858b9c5
Bugfix: Fix unmapping of dock windows (Thanks Mirko)
2009-04-13 23:27:47 +02:00
Michael Stapelberg
a2d20b6848
Bugfix: Send clients their absolute position/size in generated configure events, not relative
...
This fixes ticket #26 .
2009-04-11 22:37:48 +02:00
Michael Stapelberg
7133974306
Bugfix: Don’t only check for the currently active screen, but check for all screens (Thanks Mirko)
2009-04-11 19:06:26 +02:00
Michael Stapelberg
bb8727cf27
Bugfix: Perform some bounds checking for snapped containers in fix_colrowspan (Thanks jchome)
...
This fixes ticket #22
2009-04-11 14:52:11 +02:00
Michael Stapelberg
bcbe800720
Bugfix: Store dock clients per screen, not per workspace.
...
This fixes ticket #12
2009-04-11 14:29:15 +02:00
Michael Stapelberg
8cc1fcf536
General small cleanups
2009-04-11 14:08:19 +02:00
Michael Stapelberg
e3516d72f5
Bugfix: Don’t change to workspaces on different screens when scrolling through them (Thanks Mirko)
...
This fixes ticket #19
2009-04-11 11:54:30 +02:00
Michael Stapelberg
aace42cd7a
Bugfix: Don’t crash anymore when moving focus to another screen (Thanks, Mirko!)
...
This fixes ticket #24 . The crash appeared only under special conditions:
- The screen on which you switch to must be empty or at least not as
full as the screen on which you were before.
- You switch focus using your mouse.
- You previously selected a column/row which is not availably on the
destination screen (for example (1,1) and switching to an empty
screen).
2009-04-10 21:29:25 +02:00
Michael Stapelberg
ee5cb143c0
Oops. Don’t kill the current workspace
2009-04-09 12:13:14 +02:00
Michael Stapelberg
72d82f3993
Bugfix: Delete empty workspaces even when they’re not the active workspace
...
This fixes ticket #23
2009-04-09 11:19:56 +02:00
Michael Stapelberg
28aa13d831
Bugfix: Don’t set focus if it is not necessary.
...
This fixes ticket #13
2009-04-01 12:50:42 +02:00
Michael Stapelberg
755540817e
Implement scrolling on stack windows and on the bar. This implements ticket #18
2009-04-01 12:31:13 +02:00
Michael Stapelberg
75a35319c9
Bugfix: Correctly remove client from container when moving to another workspace
...
This fixes ticket #16
2009-04-01 12:02:22 +02:00
Michael Stapelberg
a8478efa34
Bugfix: Correctly filter out the numlock state bit (doesn’t get cleared for some reason)
...
This fixes ticket #14
2009-03-27 15:24:52 +01:00
Michael Stapelberg
9077831ed3
Bugfix: When entering a stack window with the mouse, set the focus to the active client
...
Fixes ticket #17
2009-03-26 23:00:26 +01:00
Michael Stapelberg
e0f7e253ff
Bugfix: Fix memory leak
2009-03-20 17:31:34 +01:00
Michael Stapelberg
21f7b7a724
Disable horizontal resizing for the release version, it still has bugs
2009-03-15 21:31:35 +01:00
Michael Stapelberg
74465a562a
Bugfix: Only actively change focus if this is the current container
2009-03-15 20:52:43 +01:00
Michael Stapelberg
3a994e4bf7
Implement clicking on the bar to switch workspaces
2009-03-15 17:49:25 +01:00
Michael Stapelberg
80e2bf708d
Send configure notify after putting a client into fullscreen mode, log at a central place
2009-03-14 17:37:11 +01:00
Michael Stapelberg
4ad1edc5eb
Remove unused variable (fixes warning)
2009-03-13 11:20:21 +01:00
Michael Stapelberg
14834c3530
Fake more configure notifies (makes xpdf work better)
2009-03-13 00:39:16 +01:00
Michael Stapelberg
755709c86d
Bugfix: Completely ignore legacy hints as soon as the client uses _NET_WM_NAME
2009-03-12 16:44:44 +01:00
Michael Stapelberg
cc2c63b860
Handle legacy window titles by rendering them not unicode-compatible.
2009-03-11 21:31:54 +01:00
Michael Stapelberg
17bcdd8b0f
Implement cleaning up the list of ignored events
2009-03-11 20:06:30 +01:00
Michael Stapelberg
12970211c4
Fix misnomer (window_type_handler → handle_window_type), resolve TODO
2009-03-11 19:39:32 +01:00
Michael Stapelberg
ec290cbfa9
Bugfix: Don’t handle mouse click events inside the titlebar
2009-03-11 00:45:49 +01:00
Michael Stapelberg
408b2bdb39
Bugfix: Eliminate race condition, fix dock windows
...
There was a race condition when mapping a window and not setting the event mask
before. Therefore, the ReparentNotify and (more important) the UnmapNotify generated
by reparenting were not received, thus leaving the awaiting_useless_unmap variable
of the client "true". To just make it work, in previous commits the DestroyNotify
handler was introduced. Fortunately, with fixing this race condition by first
setting the event mask and mapping the window afterwards, we can remove this handler.
As for the dock windows, there were quite some occurences were client->container
was used without checking if the client is inside a container at all.
Furthermore, the client’s strut containing the space to reserve at the screen edge
is now checked and the desired height is set to the window’s height if the strut
contains 0 or if no strut was specified at all.
2009-03-10 20:56:25 +01:00
Michael Stapelberg
434345aa30
Ignore notify events which are not in mode XCB_NOTIFY_MODE_NORMAL
2009-03-10 11:26:52 +01:00
Michael Stapelberg
441f406a4b
Fix warning (typecast)
2009-03-10 09:51:00 +01:00
Michael Stapelberg
c025678177
Major change: Redirect events instead of handle the notifies.
...
By specifying XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, the window manager
will get map request events instead of map notify events, and therefore
can act sooner (the window won’t be positioned on the screen and moved
afterwards).
Furthermore, this fixes some problems with GIMP/VLC (and probably others)
which caused endless loops.
Also, events which should be ignored are now saved in a queue rather than
saving just the last event. This should eliminate race conditions.
Note that there is a new FIXME in src/handlers.c. Some windows generate
unmap notify events when reparenting while others don’t. We need to
understand, document and implement a more correct way to handle this.
2009-03-10 00:51:15 +01:00
Michael Stapelberg
d38636439c
Fix warning
2009-03-09 17:50:00 +01:00
Michael Stapelberg
b800408a97
Bugfix: Handle all events when dragging to resize, correctly set OVERRIDE_REDIRECT
2009-03-09 08:50:33 +01:00
Michael Stapelberg
3a34cfc603
Bugfix: Draw bar at the correct position, handle expose events for bars
2009-03-09 08:24:05 +01:00
Michael Stapelberg
38d903aea5
Update comment
2009-03-09 07:18:04 +01:00
Michael Stapelberg
cc78664f9d
Bugfix: Use memcmp() instead of strcmp(), use new_len * 2 to check all bytes
2009-03-09 07:02:47 +01:00
Michael Stapelberg
65595c61a8
Bugfix: Don’t strcmp() if client->name == NULL
2009-03-09 06:41:04 +01:00
Michael Stapelberg
6df039c3b5
Convert window title to UCS-2 when updating it, don’t update it if it didn’t change
2009-03-09 06:26:32 +01:00
Michael Stapelberg
4f8e704017
s/atomar/atomic
2009-03-08 21:01:06 +01:00
Michael Stapelberg
cefc1dabac
Bugfix: Use a new variable called new_position and initialize it correctly when resizing
2009-03-08 20:59:49 +01:00
Michael Stapelberg
71221baca0
Fix race condition when updating client->name
2009-03-08 20:04:01 +01:00
Michael Stapelberg
f85990b27a
Fix warnings, update DEPENDS, update Makefile for NetBSD
2009-03-08 17:30:17 +01:00
Michael Stapelberg
6f630a3335
Implement UTF-8-clean window titles
2009-03-08 00:49:11 +01:00
Michael Stapelberg
6abcc5f656
Fix some bugs found by using raster’s wm_torture
2009-03-07 02:44:46 +01:00
Michael Stapelberg
a411ed24cb
Bugfix: Correctly check for empty containers and unmap the stack_win
2009-03-06 19:08:59 +01:00
Michael Stapelberg
017a0c0d08
Don’t set focus outside of the current container
2009-03-06 17:13:20 +01:00
Michael Stapelberg
97f23f549b
Bugfix: decorate_window() needs a flush of course
2009-03-06 17:02:43 +01:00
Michael Stapelberg
4259e58655
Bugfix: One warning was left
2009-03-06 16:36:05 +01:00
Michael Stapelberg
ee1f64a94e
Bugfix: return value was missing
2009-03-06 16:21:39 +01:00
Michael Stapelberg
fc3338d3c1
Bugfix: Missing flush after render_container()
2009-03-06 06:56:13 +01:00
Michael Stapelberg
96ac9f9066
Implement slog() and the LOG() macro, convert printf() to LOG()
2009-03-06 06:46:43 +01:00
Michael Stapelberg
0831f3e129
Implement handling the size hints so that aspect ratio is used correctly, fix rendering on stacks
2009-03-06 06:06:19 +01:00
Michael Stapelberg
76c201f940
Bugfix: Correctly set currently_focused when clients are destroyed
2009-03-05 17:08:57 +01:00
Michael Stapelberg
e643d34ddc
Use unchecked versions for more speed
2009-03-05 03:33:15 +01:00
Michael Stapelberg
56393c823e
Make colorpixels independent from clients
2009-03-05 02:58:12 +01:00
Michael Stapelberg
e4627bcaed
Don’t re-initialize Xinerama on every configurenotify. This needs to be fixed properly.
2009-03-05 02:17:10 +01:00
Michael Stapelberg
1343b77dbb
Bugfix: Some memory leaks / invalid accesses
2009-03-05 01:48:30 +01:00
Michael Stapelberg
17bca23a8c
Implement a focus stack, correctly free table columns/rows
2009-03-05 01:20:13 +01:00
Michael Stapelberg
8b34eb5fc2
Bugfix: Reconfigure all clients in stacking, correctly ignore events, event when for the root window
2009-03-04 22:41:04 +01:00
Michael Stapelberg
0344ca3f36
Bugfix: Border presses weren’t correctly handled
2009-03-04 21:56:27 +01:00
Michael Stapelberg
03e48b8bfe
Bugfix: Reconfigure x/y of stack_windows when necessary
2009-03-04 21:49:29 +01:00
Michael Stapelberg
a02b861826
Use "conn" for xcb_connection and "event" for xcb_event_* variables everywhere
2009-03-04 15:45:12 +01:00
Michael Stapelberg
45827607dc
Use default cursor (XC_left_ptr) for all windows
2009-03-04 15:28:50 +01:00
Michael Stapelberg
f45e706c48
Merge font.c into xcb.c
2009-03-04 14:52:04 +01:00
Michael Stapelberg
3d774ba021
Implement clicking on titlebars in stack windows to focus
2009-03-04 09:31:00 +01:00
Michael Stapelberg
3b50615a71
Implement Xinerama screen changes
2009-03-03 23:51:02 +01:00
Michael Stapelberg
1d9dc05b91
Little cleanups
2009-03-03 02:05:35 +01:00
Michael Stapelberg
dd325879d1
Bugfix: Override client’s moves/resizes in configure_notify_event
2009-03-03 01:14:11 +01:00
Michael Stapelberg
6868534fcb
Draw stacking borders correctly
2009-03-01 03:55:29 +01:00
Michael Stapelberg
cb6ea9861d
Bugfix: Fix various bugs when switching workspaces
2009-02-28 22:11:48 +01:00
Michael Stapelberg
d8d4d0182d
Revert 43d471b9ab
and apply correct bugfix:
...
Before, all clients were reconfigured to just raise them, when focus should
be set. However, this generated lots of notify events, which in turn lead
to an endless loop of setting focus, reconfiguring, setting focus, …
2009-02-28 02:40:07 +01:00
Michael Stapelberg
67fbec2061
Bugfix: Correctly unmap/remap the stack_win when a container becomes empty
2009-02-28 01:38:53 +01:00
Michael Stapelberg
30d386138b
Bugfix: Correctly update window titles when in stacking
2009-02-28 01:23:09 +01:00
Michael Stapelberg
4fb4c579f8
Bugfix: Only ignore enter_notify events for the parent windows when in stacking
2009-02-28 01:19:50 +01:00
Michael Stapelberg
d8a6f41e39
Bugfix: Set focus when table was shrinked and CUR_CELL might have been shrinked
2009-02-28 01:12:05 +01:00
Michael Stapelberg
aea8cb9c25
Bugfix: Unset fullscreen_client when closed
2009-02-26 01:10:41 +01:00
Michael Stapelberg
1335e4a4c9
Grab XCB_GRAB_SYNC and replay the event so it doesn’t get lost
2009-02-25 19:11:49 +01:00
Michael Stapelberg
c859174965
Bugfix: Don’t call set_focus when to_focus is NULL
2009-02-25 17:44:17 +01:00
Michael Stapelberg
90fa720c6f
Bugfix: when a window is unmapped, correctly pass focus to the next one and cleanup the table
2009-02-25 01:44:34 +01:00
Michael Stapelberg
aa18ca0889
More documentation, cleanups, and a cache for get_colorpixel()
2009-02-24 14:18:08 +01:00
Michael Stapelberg
36aec13860
Cleanups, documentation
2009-02-24 01:24:28 +01:00
Michael Stapelberg
0e3a378c39
Implement stacking
2009-02-24 00:30:04 +01:00
Michael Stapelberg
6e81d1c5e4
s/…/./ where it makes sense
2009-02-23 17:23:57 +01:00
Michael Stapelberg
07b92c2792
Don’t assign ->container for dock-windows
2009-02-23 03:44:10 +01:00
Michael Stapelberg
8b0bc8c3ff
Implement vertical resize
2009-02-23 03:27:59 +01:00
Michael Stapelberg
404f19a376
Beautify handle_key_press
2009-02-23 02:55:10 +01:00
Michael Stapelberg
695494606d
Fix: Calculation of unoccupied space has to depend on current row/col
2009-02-23 02:09:24 +01:00
Michael Stapelberg
fe0485f9e5
Fix some movement/rendering bugs
2009-02-23 01:41:26 +01:00
Michael Stapelberg
1a0817eb39
Correctly handle _NET_WM_WINDOW_TYPE == _NET_WM_WINDOW_TYPE_DOCK (for dzen2 -dock)
2009-02-23 00:18:13 +01:00
Michael Stapelberg
6b1069cd47
Implement horizontal resizing
2009-02-16 03:28:07 +01:00
Michael Stapelberg
28ea379c10
Update TODO and header-comments
2009-02-15 03:07:29 +01:00
Michael Stapelberg
09cd7bd2d0
Implement Xinerama (workspaces have a specific screen)
2009-02-15 01:58:09 +01:00
Michael Stapelberg
18543c6bce
Implement fullscreen mode (Mod1+f)
2009-02-14 20:12:50 +01:00
Michael Stapelberg
d06fe8bc9e
Bugfix: Correctly handle unmap, don’t apply attribute XCB_EVENT_MASK_BUTTON_PRESS
...
Those two fix problems seen with mplayer
2009-02-14 19:55:18 +01:00
Michael Stapelberg
9e4b7f35ca
Don’t use current workspace
2009-02-14 08:39:50 +01:00
Michael Stapelberg
df7621d5a5
Implement fullscreen (_NET_WM_STATE_FULLSCREEN)
2009-02-14 08:38:07 +01:00
Michael Stapelberg
fb4c851e2a
Add vim hints, copyright notice to each file, add LICENSE, retab! everything
2009-02-14 02:33:31 +01:00
Michael Stapelberg
82dd64ff24
Move stuff to include/ and src/
2009-02-13 19:09:25 +01:00