1. 07 Feb, 2013 3 commits
    • Alexander Larsson's avatar
      Add gtk_widget_(un)register_window · 3d4cd4db
      Alexander Larsson authored
      This replaces the previously hardcoded calls to gdk_window_set_user_data,
      and also lets us track which windows are a part of a widget. Old code
      should continue working as is, but new features that require the
      windows may not work perfectly.
      We need this for the transparent widget support to work, as we need
      to specially mark the windows of child widgets.
    • Alexander Larsson's avatar
      gdkwindow: Allow gdk_window_set_opacity on non-native children · 4d3c77f9
      Alexander Larsson authored
      We now store the current opacity for all windows. For native windows
      we just call into the native implementation whenever the opacity changes.
      However, for non-native windows we implement opacity by pushing a
      second implicit paint that "stacks" on the existing one, acting as
      an opacity group while rendering the window and its children.
      This works well in general, although any native child windows will of
      course not be opaque. However, there is no way to implement
      implicit paint flushing (i.e. draw the currently drawn double buffer
      to the window in order to allow direct drawing to the window).
      We can't flush in the stacked implicit paint case because there
      is no way to get the right drawing behaviour when drawing directly
      to the window. We *must* draw to the opacity group to get the right
      We currently flush if:
      * A widget disables double buffering
      * You call move/resize/scroll a window and it has non-native children
        during the expose handler
      In case this happens we warn and flush the outermost group, so there may
      be drawing errors.
    • Alexander Larsson's avatar
      gdkwindow: Store the implicit paint in a list · ada6d812
      Alexander Larsson authored
      This changes nothing, but lets us later have multiple
      implicit paints
  2. 06 Feb, 2013 7 commits
  3. 05 Feb, 2013 4 commits
  4. 04 Feb, 2013 15 commits
  5. 03 Feb, 2013 8 commits
  6. 02 Feb, 2013 3 commits