Commit Graph

128 Commits

Author SHA1 Message Date
Uli Schlachter d7d70714d7 Kick out the systray when wiping a wibox
When a wibox is destroyed or detached from a screen, it is wiped to clean up its
resources. This also includes destroying the window which is associated with the
wibox.

The problem here is that if the wibox contains the systray, the systray window
would automatically be destroyed since all childs of a window are destroyed when
said window is destroyed. To fix this, we kick out the systray window before
destroying the wibox' window.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-07-18 10:13:57 +02:00
Julien Danjou cfebec085c Store widgets references as wibox items
This will store the widgets references that the wibox have inside their
environment table, and not in the global registry, avoiding memory leaks.
This should fix FS#771.

Signed-off-by: Julien Danjou <julien@danjou.info>
2010-05-25 15:43:18 +02:00
Uli Schlachter 3d60aa7d83 Fix a invalid pointer crash bug
This changes wibox_t::mouse_over to a proper reference. That way one can't
remove that widget from underneath us which would lead to an unprotected lua error.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-12-02 09:33:09 +01:00
Julien Danjou a56e1b11d3 wibox: check border width
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-11-21 10:46:00 +01:00
Uli Schlachter 78541da82a Wibox: Check if a window exists before changing it
wibox_set_border_color() and luaA_wibox_set_border_width() didn't check if a
wibox really had an associated X11 window before changing this window which
resulted in (silent) errors.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-11-16 15:12:53 +01:00
Uli Schlachter c912da0189 wibox: check if a wibox' window exists before modifying it
If you change the .bg of an existing wibox which isn't attached to any screen
yet, then there is no window for which we can update the XCB_CW_BACK_PIXEL.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-11-08 11:23:22 +01:00
Uli Schlachter 12977febee Set a wibox' bit gravity to NorthWest.
After the last patch, after each resize the X server fills the complete wibox
with its background color which means that the widgets will still flicker. This
patch fixes this by setting the wibox' bit gravity to NorthWest.

This means that if a wibox is enlarged, only the new, larger part will be filled
with the wibox' background color and the rest of the wibox' content will be left
intact. With this patch I couldn't see any flickering anymore.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-11-08 10:34:03 +01:00
Uli Schlachter 02ea8feb54 wibox: Set a proper back pixel
Currently wiboxes have their background set to "inherit parent pixmap". That
means that each time a wibox is e.g. resized, the X server sets the wibox'
content to the wallpaper and then immediately awesome redraws the wibox with the
proper background. This causes flicker when you e.g. resize clients which have a
titlebar.

With this patch, wiboxes get their proper background color for their "back
pixel" value. Now, instead of showing the wallpaper, the X server will fill the
complete wibox with its background color.

With this patch, the actual widgets will still flicker. Also, if the wibox has a
background image, this image obviously won't be used by the X server and we get
some flicker again. My next patch will address these issues.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-11-08 10:34:00 +01:00
Julien Danjou d3464ce7fc wibox: fix border_width handling with transparent bg (FS#647)
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-10-09 16:13:01 +02:00
Uli Schlachter 2b75950a8c Add some missing class type checks
Some functions didn't check the class of objects they were passed but just
casted them to the type they expected. This lead to code like e.g. the following
to crash awesome:

  c.titlebar = c

This adds a new function luaA_object_ref_class() which works like
luaA_object_ref(), but which also checks the class of the object.

Additionally, this function is now used in all necessary places.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-09-04 13:58:31 +02:00
Uli Schlachter fa89775626 Add some missing luaA_checkudata() calls
luaA_object_ref_item doesn't check the type of object it returns which resulted
in stuff like this:

  wibox.shape_clip = wibox
  wibox.shape_bounding = wibox
  imagebox.image = imagebox
  textbox.bg_image = textbox

All of the above calls would result in a crash (unverified) and all of them
where fixed.

This should fix all places which use luaA_object_ref_item(). The others already
did a proper type check.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-09-04 13:58:30 +02:00
Brian Gianforcaro 3145e3145e Grammar/spelling corrections in comments and docs.
Signed-off-by: Brian Gianforcaro <b.gianfo@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-31 10:39:36 +02:00
Julien Danjou 76fb212332 wibox: emit screen property::workarea change on {at,de}tach if wibox has strut
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-28 17:48:52 +02:00
Brian Gianforcaro c9ec34e61e Fix doxygen generation warnings
Signed-off-by: Brian Gianforcaro <b.gianfo@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-26 09:15:57 +02:00
Julien Danjou 6bffb904ef wibox: activate BMA when mapping/unmapping
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-25 11:03:27 +02:00
Julien Danjou 0ca02db3c6 wibox: merge wibox_set_border_width code
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-24 14:33:29 +02:00
Julien Danjou 4b495f4a74 wibox: remove wibox_opacity_set, doublon
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-24 14:29:46 +02:00
Julien Danjou 4d0a025f51 luaclass: add handling of {new,}index of missing properties (FS#584)
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:48 +02:00
Julien Danjou 5fe32859f7 screen: emit signals when workarea size changes
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:48 +02:00
Julien Danjou 53ac109baa wibox: add struts
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:48 +02:00
Julien Danjou d55a7e63eb wibox: allow to change border_width
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:47 +02:00
Julien Danjou 84839d456d wibox: port to new object system
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:47 +02:00
Julien Danjou a916f2cd55 image: port to new class system
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:47 +02:00
Julien Danjou dc61d258f0 luaclass: optimize type handling
We use lua_class_t pointer as key in the registry to store metatable we
will compare.
lauxlib uses a string, which sucks, because it forces to do a
pushliteral() each time you want to get a metatable from the registry,
which is slower.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:47 +02:00
Julien Danjou 1cc50b8a29 luaobject: remove useless custom function
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-21 15:30:46 +02:00
Julien Danjou ada6056c89 color: do not take pointer to push
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-17 17:46:35 +02:00
Julien Danjou 073e0377dd Revert "key, button: use as simple table"
This reverts commit d7454f4307.

Conflicts:

	button.h
	key.h
	lib/awful/titlebar.lua.in
	lib/naughty.lua.in
	wibox.c
	wibox.h
	widget.c
2009-08-14 16:48:52 +02:00
Julien Danjou 8a0f2aca28 wibox: move set window cursor code to window.c
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-07 11:19:10 +02:00
Julien Danjou 6cecd54f5d wibox: remove move() and resize()
We always use moveresize().

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-08-04 12:03:26 +02:00
Julien Danjou 047d04d438 luaobject: import __tostring as object meta function
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-29 16:09:14 +02:00
Julien Danjou c1d99f0960 luaobject: emit signal on new object
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-29 15:48:18 +02:00
Julien Danjou dea2b6303a luaobject: import signals meta methods in objects
Signed-off-by: Julien Danjou <julien@danjou.info>

Conflicts:
2009-07-29 15:48:18 +02:00
Julien Danjou c9caededca wibox: fix geometry computing in regards to border width
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-29 11:04:59 +02:00
Julien Danjou 15b1b2d7c4 wibox: remove internal geometry
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-28 17:18:41 +02:00
Julien Danjou 13efd8a199 wibox: get rid of simple window
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-28 16:11:41 +02:00
Julien Danjou d7454f4307 key, button: use as simple table
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-28 10:44:54 +02:00
Julien Danjou 339fb53d56 luaobject: add and use item system
Now, each object can store items.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-28 10:29:30 +02:00
Uli Schlachter a77a1b7b64 Add a lua api for setting a wibox' shape
When the SHAPE extension is not available, this code prints
a harmless warn() on stderr.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-27 14:23:59 +02:00
Brian Gianforcaro 404ec8eb24 Fix doxygen generation warnings.
Signed-off-by: Brian Gianforcaro <b.gianfo@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-27 11:18:43 +02:00
Julien Danjou 2ca7149501 wibox: rebuild table at every draw
This will be necessary for using the new Lua layout system.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-07-07 14:42:37 +02:00
Julien Danjou a8115bd45e luaobject: ref take index number as argument
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-16 17:15:20 +02:00
Julien Danjou c95ba76d2f luaobject: use object header and standard gc everywhere
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-16 16:26:45 +02:00
Julien Danjou 25b3e718d1 wibox: do not set need_arrange on wibox detach
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-10 11:41:58 +02:00
Uli Schlachter a264acb1f0 Also track opacity for unattached wibox
Before this, setting w.opacity of a wibox that was not attached to some screen
had no effect, now this is cached and applied when the wibox is attached to
some screen.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2009-06-05 14:33:02 +02:00
Uli Schlachter 6b5e5f352c Use the new simplewindow functions for managing a wibox' opacity
Signed-off-by: Uli Schlachter <psychon@znc.in>
2009-06-05 14:32:00 +02:00
Uli Schlachter 8d30ef7d43 Add a border_color parameter to simplewindow_init()
All callers immediately called simplewindow_border_color_set() anyway.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2009-06-05 14:31:15 +02:00
Julien Danjou 3f6ab274c0 wibox: all wiboxes go into one and only one array
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-04 17:51:35 +02:00
Julien Danjou 7cc0b13eae wibox: move position handling to Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-04 17:51:30 +02:00
Julien Danjou 0c564079b5 wibox: add property hook on screen and visible changes
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-06-04 17:51:07 +02:00
Julien Danjou fba4accc14 Revert "client: handle struts (a lot) better"
This reverts commit 264a81f3fb.

Conflicts:

	client.c
	client.h
	lib/awful/mouse.lua.in
	screen.c
	structs.h
	wibox.c
2009-05-25 15:17:57 +02:00