Commit Graph

381 Commits

Author SHA1 Message Date
Julien Danjou 6f1e1e1abe handle focus history on arrange() 2008-01-25 22:50:18 +01:00
Julien Danjou 485614f2df rewrite focus handling
- arrange() does not focus() anymore
- restore dropping events infra
- add client_unfocus()
- grabbuttons() where we should and add root_grabbuttons() for root window
2008-01-25 22:37:49 +01:00
Julien Danjou 8434040cb2 do not drop XSetInputFocus errors; but we can not give focus to unmapped windows 2008-01-25 09:37:41 +01:00
Julien Danjou 367b4d48fb Revert "rewrite focus() a bit"
This reverts commit 652c1459ba.
2008-01-25 00:51:11 +01:00
Julien Danjou 652c1459ba rewrite focus() a bit 2008-01-24 23:58:56 +01:00
Julien Danjou 3855ced402 remove selscreen arg 2008-01-24 23:48:35 +01:00
Julien Danjou 5ade4d63e0 remove opacity_unfocused
this is crap
2008-01-24 23:45:04 +01:00
Julien Danjou 7073133e66 remove drop event infrastructure 2008-01-24 23:43:46 +01:00
Julien Danjou 0abb100adf use client_setfloating() in uicb_togglefloating() 2008-01-24 20:09:11 +01:00
Julien Danjou 00f7cd006a save client props on floating 2008-01-24 18:31:14 +01:00
Julien Danjou 44aab9ff4b call get_screen_bycoord() anyway 2008-01-22 17:30:06 +01:00
Julien Danjou 67933fb670 initial x,y coords are set with respect to statusbars (FS#45) 2008-01-22 09:50:24 +01:00
Julien Danjou 668702b777 move list.h and util.[ch] to common/ 2008-01-21 18:14:59 +01:00
Julien Danjou 97f08901d6 call restack() only when focus()ing 2008-01-21 16:31:15 +01:00
Julien Danjou 83a0a4daf8 add a common infra to drop events 2008-01-21 16:31:15 +01:00
Julien Danjou 6fce5830ff arg is useless now 2008-01-21 16:31:15 +01:00
Julien Danjou bfc7f3ce5d clean out some need_arrange uneeded 2008-01-21 16:31:15 +01:00
Julien Danjou 6e4d13c9dc add a new cache system for arrange()ing 2008-01-21 16:31:15 +01:00
Julien Danjou 2f8978c15b add client_find_next_visible() 2008-01-21 16:31:15 +01:00
Julien Danjou 4809b8bc6e make swapnext cycling 2008-01-21 16:31:15 +01:00
Julien Danjou 650788479d doc 2008-01-21 16:31:15 +01:00
Julien Danjou ed3f624fc0 move clients' uicb away from layout.c 2008-01-21 16:31:15 +01:00
Julien Danjou 7f4dc5a871 use client_setfloating() to change floating attribute 2008-01-21 16:31:15 +01:00
Julien Danjou 5570612dec resize on floating set 2008-01-21 16:31:14 +01:00
Julien Danjou f9cebe0dd8 respect rules 2008-01-21 16:31:14 +01:00
Julien Danjou 94197429e5 tag_client_with_rule() only tag is a rule match 2008-01-21 16:31:14 +01:00
Julien Danjou 47ee745425 rewrite client_manage() 2008-01-21 16:31:14 +01:00
Julien Danjou 654fba9b5e insert and use rule_matching_client() 2008-01-21 16:31:14 +01:00
Julien Danjou bdd474348b use cycle functions 2008-01-21 16:31:14 +01:00
Julien Danjou 572f409a29 use lists functions for Client 2008-01-21 16:31:13 +01:00
Nikos Ntarmos 7c122e00ac Fix for windows showing up in tile-mode and not before already floated (FS#22)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-01-16 19:01:30 +01:00
Nikos Ntarmos a9170edf10 don't draw the border of skip'ed windows
ewmh_process_window_type_atom(...) clears the border for windows that
are to be skipped. However, client_updatewmhints(...) doesn't.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-01-15 08:24:26 +01:00
Fabienne Ducroquet aedfe8b665 Fix client_togglehorizontalmax and client_toggleverticalmax
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-01-12 17:02:12 +01:00
Julien Danjou 903555e502 better fix for max windows 2008-01-11 17:56:50 +01:00
Julien Danjou 93e137eaab invalidate cache 2008-01-11 16:44:24 +01:00
Julien Danjou 7c93dd381e fix maximization on floating layouts 2008-01-11 16:41:03 +01:00
Julien Danjou d427ffe4d2 invalidate only if we focus a new client 2008-01-11 16:01:10 +01:00
Julien Danjou 901f1da5ca fix documentation 2008-01-11 13:37:33 +01:00
Julien Danjou 876377880d cosmetic 2008-01-11 12:01:51 +01:00
Julien Danjou ce0b433aba check if client is not NULL
Debian bug #459992
2008-01-10 07:05:54 +01:00
Nikos Ntarmos 08e13d598e Fix for 'windows showing up in tile-mode and not before already floated'
FS#22

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-01-09 09:43:39 +01:00
Julien Danjou e3f5dc81e9 fix swapping when already master 2008-01-07 19:07:22 +01:00
Julien Danjou cef0253652 no need to refocus 2008-01-07 19:06:23 +01:00
Julien Danjou 4a610dfeb3 no need to restore focus 2008-01-07 19:03:17 +01:00
Julien Danjou 6483b36389 only invalidate cache if client is urgent 2008-01-07 19:00:17 +01:00
Arnaud Fontaine 7a2b851a03 fix XGetTransientForHint() call
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-01-07 18:57:25 +01:00
Julien Danjou c2ca948b39 add new_get_focus option 2008-01-07 18:54:45 +01:00
Julien Danjou 5c9291ff0b use a cache system for status bar 2008-01-07 18:12:38 +01:00
Julien Danjou 1381989651 restack on max 2008-01-06 23:37:53 +01:00
Julien Danjou bdfb84f3b5 remove useless AWESOMEPROPS_ATOM() define 2008-01-06 22:55:46 +01:00
Julien Danjou a5c86280b3 remove Display arg of xgettextprop() 2008-01-06 22:53:40 +01:00
Julien Danjou b4ff03c27e fix rearrange 2008-01-06 22:28:15 +01:00
Julien Danjou 7ad579898f simplify unmanage code 2008-01-06 21:57:53 +01:00
Julien Danjou a30579b32e respect config for resizing 2008-01-06 20:43:13 +01:00
Julien Danjou af708d2fbc Rewrite everything about client geoemtry, resize, etc. 2008-01-06 20:36:39 +01:00
Julien Danjou 7983a3196d simplify window_configure() args 2008-01-05 20:25:55 +01:00
Julien Danjou 70a3114dba use Area as arg for client_resize 2008-01-05 20:19:59 +01:00
Julien Danjou 163acc8624 use Area to store window geoms 2008-01-05 19:38:50 +01:00
Julien Danjou 5a66ffb2e7 remove flags attribute 2008-01-05 18:57:33 +01:00
Julien Danjou a8a9b7d925 simplify client_resize 2008-01-05 18:54:17 +01:00
Julien Danjou 3742f31216 remove setborder uicb 2008-01-04 17:56:18 +01:00
Julien Danjou 1d08ed45a8 add new_become_master option to disable new client becoming automaticaly master 2008-01-04 17:53:28 +01:00
Julien Danjou bcebd5e1ce fix various uninit vars 2008-01-04 14:19:59 +01:00
Julien Danjou 10c257d57a get rid of Client phys_screen 2008-01-02 19:26:55 +01:00
Julien Danjou 437bc5c22c add 2008 copyright notice 2008-01-02 16:59:43 +01:00
Julien Danjou 0cf4ff6d9f implement not_master rules option (FS#6) 2008-01-02 12:00:36 +01:00
Julien Danjou 9e93857864 use sel->border instead of globalconf borders 2008-01-02 11:37:16 +01:00
Julien Danjou 6701d0d2be add a borders option to client_maximize() to (not) handle border removal 2008-01-02 11:36:06 +01:00
Julien Danjou 9865d44a88 Revert "remove borders modification on maximize()"
This reverts commit d8ef2748a6.
2008-01-02 11:32:12 +01:00
Nikos Ntarmos d8ef2748a6 remove borders modification on maximize() 2008-01-02 09:55:03 +01:00
Julien Danjou 4f65aa8f51 rework headers inclusion 2008-01-01 18:02:36 +01:00
Julien Danjou f467fed598 use LayoutArrange and Uicb type into config.h ; move some functions from layout.c to client.c 2008-01-01 17:37:16 +01:00
Julien Danjou 909f92d500 replace UICB_PROTO macro by a typedef 2008-01-01 17:25:48 +01:00
Julien Danjou f7f6951957 allow to have several statusbar 2007-12-30 21:00:34 +01:00
Nikos Ntarmos 0fb6cf2817 check for EWMH.initial_state 2007-12-30 18:31:22 +01:00
Julien Danjou 6f4dec78ff remove Display as arg from window_*() fcts 2007-12-30 15:24:51 +01:00
Julien Danjou 3216eb4d41 documente some functions and simplify client_saveprops() proto 2007-12-30 15:08:38 +01:00
Julien Danjou 8c36b49f7f add support for _NET_WM_WINDOW_TYPE_DOCK 2007-12-28 21:26:02 +01:00
Julien Danjou 4e45103537 skip skippable windows when looking for a client 2007-12-28 14:12:54 +01:00
Julien Danjou 91c0f00b2b update EWMH info before applying rules 2007-12-28 14:03:22 +01:00
Julien Danjou e0c1472249 windows that start in Withdrawstate are skipped in focus list 2007-12-28 13:43:47 +01:00
Julien Danjou 19cd145861 use focus history when focus(NULL) 2007-12-28 10:12:34 +01:00
Julien Danjou f93a441da7 remove Display from Client struct 2007-12-27 23:10:43 +01:00
Julien Danjou 48d9ea047f simplify is_client_tagged() proto 2007-12-27 23:05:34 +01:00
Julien Danjou e95dc4b4cd simplify tag_client() and untag_client() proto 2007-12-27 22:43:59 +01:00
Julien Danjou 2287c0ff7c add support for NET_WM_STATE and NET_WM_STATE_STICKY 2007-12-27 22:39:29 +01:00
Julien Danjou 87fce96644 add support for NET_CLOSE_WINDOW 2007-12-27 20:49:38 +01:00
Julien Danjou 50e7595a0c add support for _NET_ACTIVE_WINDOW 2007-12-27 19:33:01 +01:00
Julien Danjou 423659d401 move ewmh_update_net_client_list() into ewmh.c 2007-12-27 18:01:36 +01:00
Julien Danjou c66c6dff84 add support for _NET_CLIENT_LIST 2007-12-27 16:19:05 +01:00
Julien Danjou f5f31d36d7 switch to get_current_tags() in client.c 2007-12-27 13:22:40 +01:00
Julien Danjou 58a3c0c494 add new UICB: uicb_focus_client_byname 2007-12-23 16:16:02 +01:00
Julien Danjou d5d9439777 add support for Urgency hint 2007-12-23 15:16:10 +01:00
Aldo Cortesi 5f079ef73e Clean get_screen_info and get_display_info.
Besides making these functions much nicer to use, this fixes a number of
things:

- Clients now don't have to free the returned structures.

- The ScreenInfo allocated by XineramaQueryScreens should be freed with XFree,
  not p_delete.

This patch also introduces an abstract Area type that will be very useful.
2007-12-23 09:53:50 +01:00
Aldo Cortesi 7190e4fa48 Change awesome_config -> AwesomeConf.
All other struct definitions in the project follow this naming convention.
2007-12-19 10:43:02 +01:00
Aldo Cortesi 980afac1cf Make sure all uicb_ functions have doxygen annotations.
Also refactor some indentation while I'm there.
2007-12-19 10:42:34 +01:00
Aldo Cortesi cbf5c474c1 Documentation generation fixes.
- Fix many instances of incorrect and incomplete doxygen annotations.
- Teach doxygen not to complain when it comes accross gcc __attribute__
specifications.
- Turn off graph generation by default.
- Make doxygen quiet, so we can actually see warnings when they occur.
2007-12-19 10:42:24 +01:00
Aldo Cortesi ce556ec743 The preferred line length is 80 characters. 2007-12-18 11:27:26 +01:00
Aldo Cortesi 965cbb7e0b Continue to simplify interfaces that require arguments in globalconf.
Today I focus on screen.c.
2007-12-18 11:26:39 +01:00
Aldo Cortesi 205f2c55ca Make "Statusbar statusbar" the in VirtScreen "Statusbar *statusbar". This is
more consistent with the rest of the interface, and will make our life easier
when we have mulitiple statusbars per screen.
2007-12-18 11:26:18 +01:00
Aldo Cortesi d5fd96dbd2 Refactor the focus.c interface to use globalconf. 2007-12-17 18:21:42 +01:00
Aldo Cortesi b6bfd1a4d0 The arg to uicb_ functions is no longer const. 2007-12-17 18:19:44 +01:00
Aldo Cortesi 6e8b1383fe Various doc comment fixes. 2007-12-16 12:13:07 +01:00
Aldo Cortesi 2f74c079aa Massive, massive interface refactoring.
The big change here is that we now keep our configuration structure in a global
variable called globalconf. This radically simplifies many interfaces, since
passing awesomeconf everywhere is no longer necessary. There are also more
subtle interface effects - now we can reliably identify a screen from just a
screen ID, rather than an awesomeconf, screenid tuple.

Overall, this patch makes most of the interfaces in awesome much nicer to use -
enjoy!

Yes, this is a huge patch, but since a lot of the refactoring was done
systematically using vim macros, splitting this up would have been very hard.
2007-12-16 12:12:48 +01:00
Julien Danjou df2a8e1b1d add a focus history 2007-12-14 21:51:54 +01:00
Julien Danjou aacb020564 rename statusbar functions 2007-12-14 20:10:52 +01:00
Julien Danjou e53b941679 rename loadprops to client_loadprops 2007-12-14 19:06:03 +01:00
Julien Danjou bb1381abc2 make tags a linked list instead of array 2007-12-14 19:05:30 +01:00
Julien Danjou 781ebc8882 move tag_client_with_rules() from client.c to tag.c 2007-12-14 16:40:08 +01:00
Julien Danjou 3a4fbce6f9 rename isvisible() to client_isvisible() and move it in client.c 2007-12-14 16:38:12 +01:00
Julien Danjou 687b648c1b fix some includes and add copyright 2007-12-14 16:15:40 +01:00
Julien Danjou 213c839597 prefix some client functions with client 2007-12-14 16:05:10 +01:00
Julien Danjou 37a7116c92 we should reset client_sel on untag 2007-12-14 16:01:01 +01:00
Julien Danjou d197014d71 untag client on unmanage 2007-12-14 15:58:09 +01:00
Julien Danjou 14809f80e4 remove useless client_reattach_after() 2007-12-14 14:51:58 +01:00
Julien Danjou 078d224b46 use a linked list for handling tag <-> client relationship 2007-12-14 14:29:32 +01:00
Aldo Cortesi 2b5ba1f16f Improve the call signature of get_current_tag and get_current_layout. 2007-12-14 09:29:42 +01:00
Aldo Cortesi dcff13a5e7 Comment typos. 2007-12-14 08:47:21 +01:00
Julien Danjou 5f811b1cf2 use VirtScreen arg for tag_client_with_current_selected() 2007-12-13 10:46:32 +01:00
Julien Danjou 5fa67c23df split awesomeconf and screen config
a.k.a the big post-2.0 blind commit
2007-12-11 20:56:51 +01:00
Nathan Hüsken 9524f15478 Adding padding 2007-11-28 11:00:48 +01:00
Nikos Ntarmos 355dc7d556 fix rules handling in configurequest events 2007-11-27 16:48:06 +01:00
Nikos Ntarmos ac188235ed Split x-related util functions to a separate xutil.{c,h} file pair.
Hi there.

awesome-client is now linked against the whole hog of x-related libs
that awesome depends on. These get pulled in by awesome-client using the
same LDFLAGS as awesome. Removing x-related libs from the LDFLAGS for
awesome-client is only half of the story, as it also depends on util.c
which now has a couple of x-related functions. The attached patch also
splits these functions into a separate xutil.{c,h} file pair and teaches
the rest of the files to use them. Apart from the small difference in
file size (I see a 3-3.5% decrease in file size, both for a stripped and
a non-stripped awesome-client binary), this should also somewhat reduce
the startup time (since awesome-client won't have to map all of these
libraries).

Cheers...

\n\n
2007-11-19 20:45:21 +01:00
Julien Danjou dd2c511181 move_client_to_screen() implies tag_client_with_current_selected() 2007-11-15 14:49:08 +01:00
Julien Danjou aa4de56ef5 simplify client_manage() 2007-11-15 14:44:43 +01:00
Julien Danjou 455ef2e1d7 rename uicb_swap{prev,next} to uicb_client_swap{prev,next} 2007-11-14 18:07:35 +01:00
Julien Danjou 8b933e196b rename uicb_settrans to uicb_client_settrans 2007-11-14 17:52:49 +01:00
Julien Danjou b594731fc2 rename uicb_moveresize to uicb_client_moveresize 2007-11-14 17:51:22 +01:00
Julien Danjou c5ee95992c rename uicb_killclient to uicb_client_kill 2007-11-14 17:50:16 +01:00
Julien Danjou 7a919a76fb mouse button clicks on windows are now configurable 2007-11-14 17:18:16 +01:00
Julien Danjou 88b6f17410 bugfix: initialize matched to False, damn it 2007-11-14 12:12:30 +01:00
Julien Danjou 5c5e9418d7 don't forget to retag windows on screen changes 2007-11-14 11:11:04 +01:00
Julien Danjou adf437c0e3 use tag_client_with_current_selected() instead of our own loop and set -O2 or mplayer fails 2007-11-14 10:42:28 +01:00
Julien Danjou 0779473a30 fix problem with mplayer 2007-11-14 10:34:02 +01:00
Julien Danjou 98c869c8f3 remove garbage printf() 2007-11-13 23:00:11 +01:00
Julien Danjou 0acaae11d9 stop using applyrules() and do some stuff ourselves 2007-11-13 22:41:56 +01:00
Julien Danjou 06dc3ba221 add new rules.c file with new functions for using Rule-s struct 2007-11-13 21:41:57 +01:00
Julien Danjou adcadddc46 define RULE_NOSCREEN -1 2007-11-12 19:35:31 +01:00
Julien Danjou f70424487e screen can now be specified in rules 2007-11-12 18:21:03 +01:00
Julien Danjou ef7034b0b8 use linked list instead of tabs for mouse bindings 2007-11-12 13:21:28 +01:00
Julien Danjou 05e102a49a mouse clicks on root window are now configurable 2007-11-12 10:55:21 +01:00
Nikos Ntarmos 0f840d2eec Sanitize screen changes - take 2
I was looking back at this issue and realized that it is possible for
one of the x,y coordinates to be negative and yet a screen change must
be performed. This may happen when a window is moving with its
upper-left corner outside the upper part of the screen, and it crosses
the x-axis boundary between two consecutive screens.
2007-11-10 17:59:33 +01:00
Julien Danjou 1004cefa2f Remove current tab support
We will add a real new one later.
2007-11-10 10:45:32 +01:00
Julien Danjou 6ef4b8e741 really update coords on resize 2007-11-10 10:12:50 +01:00
Nikos Ntarmos e2452fa62a Sanitize screen changes
Whith Xinerama active a client that moves outside the upper-left screen
boundary is erroneously changing screens. The attached patch changes
this behavior so that a client may change screen only when its new
coordinates are positive. The assumption is that the client can't fall
off the lower-right boundary since the mouse pointer can't go there when
moving. However, the upper-left corner of a window (which is the point
we use to compute the client's scren) can move more to the left or up
than the upper-left corner of the screen (coords 0,0) thus becoming
negative.
2007-11-09 19:25:31 +01:00
Nikos Ntarmos 360f96b5fd stop centering mouse on move, just keep current coords 2007-11-09 19:22:42 +01:00
Nikos Ntarmos 96350151b9 Fix issue with multiple clients having focused border on same tag
It so happens that when two clients are fired up one after the other on
the same tag, they both get a 'focused'-type border. A bisect sequence
showed that the culprit was commit 001f430. I think that it all boils
down to client_manage just setting tag->client_sel and hoping for
arrange(...) to do the Right Thing (TM). The attached patch uses
focus(...) instead.
2007-11-08 11:31:37 +01:00
Nikos Ntarmos 983d2d72a6 implement uicb_reloadconfig 2007-10-31 11:37:38 +01:00
Julien Danjou 14e8c82a8a fix max() size restore, introduce volatile option to resize() 2007-10-29 15:24:10 +01:00
Julien Danjou bd20a965f3 update client coords on manage() to set them on the right screen in Xinerama 2007-10-27 22:54:34 +02:00