Commit Graph

360 Commits

Author SHA1 Message Date
Kristian Høgsberg 42c8f60506 window: Handle data_device.selection events with offer=NULL
This happens when the current selection data_offer is removed.
2012-01-27 11:08:40 -05:00
Kristian Høgsberg 804e05185b cairo-util: Don't anger png.h by including setjmp.h
Older libpngs are a bit fussy about this, apparently.
2012-01-26 11:36:17 -05:00
Kristian Høgsberg ae6e2717c5 window: Don't crash when window with focus_widget is destroyed
We would try to deliver a leave event to a widget in a destroyed window.
2012-01-26 11:09:20 -05:00
Kristian Høgsberg 6af8eb9c7f desktop-shell: Build in sensible defaults
This adds a default background pattern and a terminal launcher in case
we don't have a config file.
2012-01-25 20:53:08 -05:00
Kristian Høgsberg 07f729441e desktop-shell: Support tiling of background images 2012-01-25 16:34:36 -05:00
Kristian Høgsberg d654876510 cairo-util: Add png loader and image type sniffing 2012-01-25 16:30:48 -05:00
Kristian Høgsberg 8129bc0fb9 desktop-shell: Fall back to solid color if there's no background image 2012-01-25 14:55:33 -05:00
Kristian Høgsberg ffe3bba13e cairo-util: Return NULL instead of exit() on jpeg load failure 2012-01-25 14:54:26 -05:00
Kristian Høgsberg a97eca95d0 Install terminal as weston-terminal 2012-01-25 14:02:05 -05:00
Neil Roberts 6b28aadd47 window: Fix sending button events when there's no grab
The code which sends the button events was checking whether there is a
focus widget with a button handler but then always sending the button
event to the grab widget. If the grab widget is different from the
focus widget at this point then it will check the wrong widget for a
button handler and potentially crash. It is also possible for there to
be no grab widget here in the following situation:

1. Press and hold down the left mouse button
2. Press and hold down the right mouse button
3. Release the left mouse button
4. Release the right mouse button

In this case the grab will be released at step 3 because the code only
keeps track of the grab for one button. Then it will try to send the
release event for the right mouse button to a NULL widget so it will
crash.
2012-01-24 11:25:15 -05:00
Kristian Høgsberg 5f5324e098 gears: Make window transparent
We need this for the window decorations.
2012-01-19 14:05:21 -05:00
Kristian Høgsberg 824c6d0e38 window: Use CAIRO_OPERATOR_OVER for rendering the menu
We forgot to switch back from CAIRO_OPERATOR_SOURCE, which is broken,
but also hits a broken fallback in cairo-gl.
2012-01-19 13:54:11 -05:00
Pekka Paalanen 9e30a82e25 desktop-shell: don't crash on menu
Add dummy menu callback function, so we don't crash after every time
someone opens the menu.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 10:19:01 -05:00
Pekka Paalanen 6d174cff7a window: menu leak fixes
When a menu self-destructs, free also the widget and struct menu.

As menus are self-destructing, it does not make sense to store the
window pointer, since we cannot clear it automatically. Therefore,
rename window_create_menu() to window_show_menu() that does not return
the window pointer. It also calls window_schedule_redraw() internally.

Fixes Valgrind reported memory leaks.

The alternative would be to explicitly destroy the menu in application's
menu callback.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:42:05 +02:00
Pekka Paalanen 84d62dc999 resizor: free the widget on destroy
Plugs a memory leak.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:41:59 +02:00
Pekka Paalanen e156fb681e window: remove pointers to widget on destroy
Input devices may hold a pointer to the widget being destroyed. Reset
such pointers in widget_destroy().

This fixes a use-after-free in window_destroy(), if an application
destroys its widgets before the window.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:41:55 +02:00
Pekka Paalanen 4dde2fc6f6 window: destroy frame in window_destroy()
Fix a memory leak reported by Valgrind, by destroying the window
decorations widget, if it exists.

All widget pointers returned from toytoolkit to the application should
be destroyed by the application explicitly.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-19 16:41:48 +02:00
Kristian Høgsberg 2d57439592 clients: Allow compiling with the cairo glesv2 backend
This disables gears and wscreensaver, which use full GL.
2012-01-18 14:50:58 -05:00
Pekka Paalanen 40e49ac7b5 desktop-shell: fix the unlock dialog decorations
The decorations were not responding, could not move or resize the
dialog, and it painted with a black shade.

When the dialog is created, schedule a resize instead of a repaint. The
resize will initialise the widget tree, and let everything draw and work
as it should.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-18 13:09:56 -05:00
Pekka Paalanen 57cd0ed916 wscreensaver: get decorations back
In the great toytoolkit widget revolution, wscreensaver demo mode lost
its window decorations. Bring them back.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-17 10:59:29 -05:00
Pekka Paalanen 0bd892750d window: remove duplicate widget_resize_handler_t
Fixes the following build failure:

In file included from window.c:58:0:
window.h:194:16: error: redefinition of typedef 'widget_resize_handler_t'
window.h:178:16: note: previous declaration of 'widget_resize_handler_t' was here

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-01-16 21:02:43 -05:00
Kristian Høgsberg ab5dacdac8 view: Make view compile again 2012-01-12 10:48:51 -05:00
Kristian Høgsberg 8e81df4503 Use new format codes 2012-01-11 14:24:46 -05:00
Kristian Høgsberg 62444800e1 window: Don't deref focus widget if there isn't one 2012-01-11 11:18:14 -05:00
Kristian Høgsberg f0993f61c0 window: Remove a few unused struct fields 2012-01-11 00:09:42 -05:00
Kristian Høgsberg b63235142d window: Move focus widget to struct input 2012-01-11 00:04:42 -05:00
Kristian Høgsberg 831dd52aa0 window: Implement input device grabbing
With all input events going to widgets now, we can grab an input device
to a widget, so that all events are delivered to that widgets handlers.
This lets us implement the last bit of the menu behaviour, that is
the client side grabbing of events.  The result is that we can now pop down
the menu when we receive clicks in the clients own windows and we
don't send motion and button events to other widgets.
2012-01-10 23:46:33 -05:00
Kristian Høgsberg 29af3ebce6 window: Make decorations just a widget
Woohoo, only took 25 commits of refactoring to get to this point.
2012-01-10 22:41:55 -05:00
Kristian Høgsberg bb97700474 window: Get rid of the window child allocation concept 2012-01-10 19:11:42 -05:00
Kristian Høgsberg 27ff086b8e window: Break widget grab before shell surface move or grab 2012-01-10 14:28:58 -05:00
Kristian Høgsberg 5e41f09752 wscreensaver: Use a widget and a redraw handler 2012-01-10 14:22:22 -05:00
Kristian Høgsberg 441338cb75 window: Keep widgets in a tree instead of a list 2012-01-10 14:22:14 -05:00
Kristian Høgsberg 30948989ee window: Use surface coordinates for looking up widgets 2012-01-10 14:22:14 -05:00
Kristian Høgsberg b67e94b170 window: Make resize and redraw handlers widget vfuncs 2012-01-10 14:22:10 -05:00
Kristian Høgsberg 5d12990dbe window: Allocate and flush the window surface in window.c
No need to push this to the toolkit users.
2012-01-10 12:25:32 -05:00
Kristian Høgsberg 75bc667a70 window: Drop the window widget
It was just a temporary convenience for moving things over.
2012-01-10 10:45:52 -05:00
Kristian Høgsberg cadd0f5cd9 clients/image: Delete old old key code 2012-01-09 18:56:37 -05:00
Kristian Høgsberg 9ca2d08fb0 window: Run deferred tasks before blocking for initial iteration
The first iteration of the while loop wouldn't run the deferred tasks
before blocking in epoll_wait().  Move things around so we do.
2012-01-09 18:48:14 -05:00
Kristian Høgsberg bb901fac90 window: Return pointer type from widget enter handler 2012-01-09 11:22:32 -05:00
Kristian Høgsberg 5388080949 desktop-shell: Rename panel_widget to panel_launcher 2012-01-09 11:16:50 -05:00
Kristian Høgsberg a8a0db3497 window: Move button handler to widget 2012-01-09 11:12:05 -05:00
Kristian Høgsberg 19dd1d7eb1 window: Use the window widget instead of adding a window sized widget 2012-01-09 10:42:41 -05:00
Kristian Høgsberg 87a57bbd73 window: Create a widget for the window, drop window motion handler 2012-01-09 10:34:35 -05:00
Kristian Høgsberg 5f190ef96a window: Convert a few clients to use widget motion handler 2012-01-09 09:44:45 -05:00
Kristian Høgsberg 04e98344cf window: Add a widget motion handler 2012-01-09 09:36:16 -05:00
Kristian Høgsberg ab9e79ffc2 window: Remove window enter/leave handlers 2012-01-09 09:32:07 -05:00
Kristian Høgsberg ac7619f3f4 dnd: Use a widget for enter/leave handling 2012-01-09 09:26:38 -05:00
Kristian Høgsberg 391649b0dc window: Use widget enter/leave handlers for menu 2012-01-09 09:22:30 -05:00
Kristian Høgsberg ee143236d7 window: Replace widget focus handler with a enter/leave handler pair 2012-01-09 08:42:24 -05:00
Kristian Høgsberg 21eabf60b0 window: Use display_exit() instead of exit() in window menu 2012-01-08 15:41:52 -05:00