gtk2/gdk
Alexander Larsson d22fd7223c Only handle exposes on native window, propagate to children via draw()
We now consider non-native windows non-opaque, which means any invalid
area in a subwindow will also be invalid all the way up to the nearest
native windows. We take advantage of this by ignoring all expose events
on non-native windows (which typically means just the toplevel) and instead
propagating down the draw() calls to children directly via
gtk_container_propagate_draw.

This is nice as it means we always draw widgets the same way, and it
will let us do some interesting ways in the future.

We also clean up the GtkWidget opacity handling as we can now always
rely on the draing happening via cairo.

We can't really just draw by walking down the widget hierarchy, as
this doesn't get the clipping right (so e.g. widgets doing cairo_paint
may draw outside the expected gdkwindow subarea) nor does it let
us paint window backgrounds.

So, we now do multiple draws for each widget, once for each GdkWindow,
although we still do it on the same base cairo_t that we get for the
toplevel native window. The difference is only the clipping, the rendering
order, and which other widgets we propagate into.

We also collect all the windows of a widget so we can expose them inside
the same opacity group if needed.

NOTE: This change neuters gtk_widget_set_double_buffered for
widgets without native windows. Its impossible to disable
the double buffering in this model.
2013-05-07 16:33:01 +02:00
..
broadway gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
quartz gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
tests Reenable display manager tests 2013-05-01 22:20:58 -04:00
wayland gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
win32 gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
x11 gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
COPYING Change FSF Address 2012-02-27 17:06:11 +00:00
fallback-c89.c gdk/fallback-c89.c: Add fallback for round() 2013-03-13 13:22:46 +08:00
gdk.c Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdk.h Include public headers in gdk.h 2013-02-25 10:54:32 +01:00
gdkapplaunchcontext.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkapplaunchcontext.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkapplaunchcontextprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcairo.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcairo.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkcolor.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcolor.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkconfig.h.win32 Update gdk/gdkconfig.h.win32 2011-12-30 16:21:38 +08:00
gdkcursor.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkcursor.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkcursorprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkdeprecated.c gdk: Ignore headers for declared functions 2012-10-06 15:55:30 -04:00
gdkdevice.c GdkDevice: Fix an inverted assertion 2012-06-20 22:44:32 -04:00
gdkdevice.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdevicemanager.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkdevicemanager.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdevicemanagerprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkdeviceprivate.h Add _gdk_device_get_axis_info 2012-04-03 11:37:41 +02:00
gdkdisplay.c display: Add display to displaymanager later 2013-04-19 16:18:25 -04:00
gdkdisplay.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdisplaymanager.c gdk: Remove new gdk_display_manager_peek() API 2013-05-02 16:27:47 +02:00
gdkdisplaymanager.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdisplaymanagerprivate.h gdk: Unvfuncify gdk_display_manager_open_display() 2013-04-19 16:23:43 -04:00
gdkdisplayprivate.h display: Make opened signal have a vfunc 2013-04-19 16:18:25 -04:00
gdkdnd.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkdnd.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkdndprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkenumtypes.c.template Include config.h in gdkenumtypes.c.template 2013-03-15 09:19:35 -04:00
gdkenumtypes.h.template Use GDK_AVAILABLE_IN_ALL for generated enum types 2013-05-05 15:38:46 -04:00
gdkevents.c Don't compress motion events for different devices 2013-02-14 17:19:53 -05:00
gdkevents.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkframeclock.c Fix a few more doc issues 2013-02-25 10:57:34 +01:00
gdkframeclock.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkframeclockidle.c gdk: prevent NULL pointer access when debugging is enabled 2013-02-26 15:27:53 +00:00
gdkframeclockidle.h Change GdkFrameClock from an interface to a class 2013-02-14 17:19:52 -05:00
gdkframeclockprivate.h Add gdk_frame_clock_begin/end_updating() 2013-02-18 17:14:24 +01:00
gdkframetimings.c Fix a few more doc issues 2013-02-25 10:57:34 +01:00
gdkframetimings.h GdkFrameTimings: add documentation 2013-02-14 17:19:52 -05:00
gdkglobals.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkinternals.h gdkwindow: Remove outstanding_moves stuff 2013-05-07 16:33:00 +02:00
gdkintl.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkkeynames.c Keep XF86 keysym names working 2013-04-19 20:11:39 -04:00
gdkkeys.c gdk: Unvfuncify generic key functions 2013-04-16 15:30:14 +02:00
gdkkeys.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkkeysprivate.h gdk: Refactor gdk_keyval_convert_case() 2013-04-16 15:30:14 +02:00
gdkkeysyms-compat.h Update gdkkeysyms.h header 2013-04-19 20:11:38 -04:00
gdkkeysyms-update.pl gdk: Fix typo in gdkkeysyms-update.pl 2013-01-18 17:26:28 +01:00
gdkkeysyms.h Update gdkkeysyms.h header 2013-04-19 20:11:38 -04:00
gdkkeyuni.c gdk: Ignore headers for declared functions 2012-10-06 15:55:30 -04:00
gdkmain.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkmarshalers.list Bug 631599 - Allow to use arbitrary surfaces for offscreen windows 2010-10-14 13:25:23 +02:00
gdkoffscreenwindow.c gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
gdkpango.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkpango.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkpixbuf-drawable.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkpixbuf.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkprivate.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkproperty.c docs: Move property section docs to correct file 2013-04-16 15:30:14 +02:00
gdkproperty.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkrectangle.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkrectangle.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkrgba.c docs: Escape bare '#' in GdkRGBA string definitions 2012-05-20 13:45:05 +01:00
gdkrgba.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkscreen.c gdk: Ignore headers for declared functions 2012-10-06 15:55:30 -04:00
gdkscreen.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkscreenprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkselection.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkselection.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdktestutils.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkthreads.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdktypes.h gdk_{pointer,keyboard}_grab are deprecated 2013-03-17 11:58:21 +01:00
gdkversionmacros.h.in Use _GDK_EXTERN when defining the decorators 2013-05-05 15:38:47 -04:00
gdkvisual.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkvisual.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkvisualprivate.h Change FSF Address 2012-02-27 17:06:11 +00:00
gdkwindow.c Only handle exposes on native window, propagate to children via draw() 2013-05-07 16:33:01 +02:00
gdkwindow.h Add GDK_AVAILABLE_IN_ALL annotations in gdk 2013-05-05 15:38:46 -04:00
gdkwindowimpl.c Change FSF Address 2012-02-27 17:06:11 +00:00
gdkwindowimpl.h gdkwindow: Remove translate vfunc 2013-05-07 16:33:00 +02:00
gdkx.h Change FSF Address 2012-02-27 17:06:11 +00:00
gen-keyname-table.pl gdk: Make gen-keyname-table.pl work again 2011-10-26 10:36:43 +01:00
keyname-table.h Update keyname tables 2013-04-19 20:11:39 -04:00
keynames-translate.txt Update keyname tables 2013-04-19 20:11:39 -04:00
keynames.txt Update keyname tables 2013-04-19 20:11:39 -04:00
Makefile.am Remove abi checking scripts 2013-05-07 06:01:18 -04:00
makefile.msc win32: gdk3 resurrection 2011-01-02 13:33:04 +01:00