Commit Graph

138 Commits

Author SHA1 Message Date
Michael Stapelberg
aa2f20ce26 Bugfix: Correctly handle floating windows when unmapping, fix focus bug when moving 2009-06-25 13:31:58 +02:00
Michael Stapelberg
62c8d58d82 Implement the configuration option floating_modifier and document it 2009-06-24 20:31:00 +02:00
Michael Stapelberg
675d28dd54 Bugfix: Check screen for NULL, free client memory correctly (Thanks dirkson) 2009-06-24 19:22:09 +02:00
Michael Stapelberg
61b1279f67 Bugfix: Don’t invalidate container pointer and access it when unmapping 2009-06-24 19:05:33 +02:00
Michael Stapelberg
cba36914a8 Implement selecting the next tiling/floating window (using "focus")
Also update documentation (manpage, userguide).
To make the code easier to read/write when checking if a client is
floating, introduce client_is_floating().
2009-06-21 16:14:15 +02:00
Michael Stapelberg
8140619d5b Implement reconfiguration of floating clients 2009-06-21 13:29:48 +02:00
Michael Stapelberg
83d3146b65 Bugfix: Correctly raise the currently focused client when going into stack mode 2009-06-20 00:31:57 +02:00
Michael Stapelberg
589a73c8ea Bugfix: Correctly check for floating mode in the buttonpress handler (Thanks Mirko) 2009-06-19 22:48:18 +02:00
Michael Stapelberg
00c6bdeb0b Implement changing focus via keyboard between floating clients, fix several floating bugs 2009-06-14 01:04:59 +02:00
Michael Stapelberg
13002dc04e Bugfix: Actually reconfigure unmapped windows when they request it
Before, we only sent a fake message. While this was sufficient for the
client side most of the time, it didn’t allow us to open floating
windows with the correct size.
2009-06-12 23:47:04 +02:00
Michael Stapelberg
052190ad05 Handle transient hint and window class dialog to mark clients as floating 2009-06-12 22:59:23 +02:00
Michael Stapelberg
d70ea03356 Remove some dead code, add default paths to switch() to make static analyzers happy
Check was done with scan-build from the LLVM suite. The remaining reports are false
positives and have been reported to llvm:

http://llvm.org/bugs/show_bug.cgi?id=4358
http://llvm.org/bugs/show_bug.cgi?id=4359
2009-06-10 19:59:36 +02:00
Michael Stapelberg
2f334c3f59 Bugfix: Don’t set focus when unmapping clients if the workspace is not active (Thanks Mirko)
This fixes ticket #53 because current workspace was set to the
workspace which was deleted.
2009-06-07 19:09:39 +02:00
Michael Stapelberg
fb63c2ed58 Implement moving floating clients using Mod1+Left mouse button 2009-06-03 13:54:13 +02:00
Michael Stapelberg
036728c4d7 Use the size when mapping the window as size for floating (correct size for tool windows) 2009-06-02 14:24:37 +02:00
Michael Stapelberg
2a67630aa6 Optimization: Get the colorpixels when loading configuration, make use of the new config struct
Instead of building arrays of colorpixels we can simply use a pointer
to a struct Colortriple. Furthermore, by getting the colorpixels when
loading the configuration, we save a lot of function calls in the
main code.
2009-06-01 15:14:45 +02:00
Michael Stapelberg
517c47ca95 Don’t check twice for client.focused, change all places were colorcodes are used 2009-05-31 17:18:49 +02:00
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
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
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
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
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
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