1. 25 Aug, 2019 1 commit
  2. 25 Jul, 2019 4 commits
    • Jonas Ådahl's avatar
      gdk: Remove gdk_surface_move_resize() API · 0885eb0a
      Jonas Ådahl authored
      Windows/surface's aren't supposed to be explicitly moved by any external
      part, so don't provide API for doing so. Usage throughout Gdk is
      replaced by the corresponding backend variants.
      0885eb0a
    • Jonas Ådahl's avatar
      gdk: Make backends implement move_to_rect() · fc68d1b1
      Jonas Ådahl authored
      The generic layer still does the heavy lifting, leaving the backends
      more or less just act as thin wrappers, dealing a bit with global
      coordinate transformations. The end goal is to remove explicit surface
      moving from the generic gdk layer.
      fc68d1b1
    • Jonas Ådahl's avatar
      gdk: Remove gdk_surface_move() · b329090e
      Jonas Ådahl authored
      Generic gdk code now uses the internal helper; backends use their own
      private implementations when necessary.
      b329090e
    • Jonas Ådahl's avatar
      gdk/surface: Add toplevel_resize vfunc · 6314ebd4
      Jonas Ådahl authored
      To separate how toplevels and popups are configured, a first step is to
      introduce a resize-only vfunc for backends to implement. It's meant to
      only configure toplevel windows, i.e. popups. Currently it's used for
      both types, but introducing the resize-only API is a first step.
      6314ebd4
  3. 01 Jun, 2019 1 commit
    • LRN's avatar
      GDK W32: Ensure correct stacking of popup windows · 2ace3113
      LRN authored
      1) In the SetWindowPos() function (and the WINDOWPOS struct) the
         "hWndInsertAfter" argument/field means the window that will be
         directly above after the change, not the window that will be
         directly below. MSDN says "precedes" for SetWindowPos(), but
         WINDOWPOS documentation is more precise: this is the window
         behind which the affected window will be placed. Apparently,
         Z-axis goes back-to-front.
         Therefore, logging should be reworded correctly.
      
      2) When we switch away from the application and then switch back
         to a transient window, we need to bring up its transient-owner
         (and its transient-owner's owner and so forth) as well,
         otherwise our transient (modal) window might be transient for
         something that might not be visible.
      
      3) When we bring up a window, we should bring all of its children
         (popup windows) on top of it.
         Because Windows doesn't provide a function to bring one window
         on top of the other, we have to work around this by calling
         SetWindowPos() twice, swapping the windows between the calls.
      2ace3113
  4. 31 May, 2019 1 commit
  5. 29 May, 2019 2 commits
  6. 28 May, 2019 17 commits
    • LRN's avatar
      GDK W32: Fix indentation and placate GCC · 84739dde
      LRN authored
      84739dde
    • LRN's avatar
      GDK W32: Correctly log popups · d14e987c
      LRN authored
      d14e987c
    • LRN's avatar
      GDK W32: Only use owner windows for popups · b12d521b
      LRN authored
      GTK4 doesn't have WS_CHILD windows anymore, so hWndParent argument
      to CreateWindowEx() is always interpreted as the owner window,
      not the parent window.
      
      A window with an owner:
      * is above the owner in Z-order
      * is destroyed when the owner is destroyed
      * is hidden when the owner is minimized
      This is enforced by the OS.
      
      GTK can only allow this for popup windows.
      
      Desktop window must never[0] be an owner.
      
      [0]: https://devblogs.microsoft.com/oldnewthing/20040224-00/?p=40493
      b12d521b
    • LRN's avatar
      GDK W32: No more child windows · 493b30c2
      LRN authored
      We don't have child windows (the window-inside-a-window kind of windows)
      anymore. Remove all the code related to that.
      493b30c2
    • LRN's avatar
      GDK W32: Don't handle WM_ACTIVATE for popup windows · 5ff7c343
      LRN authored
      Popups can't be active or inactive, so emitting GDK events
      in response to WM_ACTIVATE makes no sense for these kinds
      of GDK surfaces.
      
      The jury is still out on whether we should block (return 0)
      or ignore (don't return anything) this message.
      
      Blocking WM_NCACTIVATE (which we currently ignore) is definitely
      not an option - it completely breaks input somehow.
      5ff7c343
    • LRN's avatar
      GDK W32: Adjust to new popup surfaces · 6ab565b8
      LRN authored
      1) Handle GDK_SURFACE_POPUP in RegisterGdkClass()
         (for now pretend it's the same as GDK_SURFACE_TOPLEVEL)
      
      2) Remove useless code from GDK_SURFACE_TOPLEVEL case in _gdk_win32_display_create_surface()
         (now there's just GDK_SURFACE_TOPLEVEL there, no need for a type check)
      
      3) Have a separate case for GDK_SURFACE_POPUP and ensure that
         it doesn't get WS_CHILDWINDOW (and neither should GDK_SURFACE_TEMP).
      6ab565b8
    • Matthias Clasen's avatar
      win32: Disconnect the frame clock · 07b0da61
      Matthias Clasen authored
      The frame clock can now survive the surface,
      so we need to disconnect when the surface goes away.
      07b0da61
    • Matthias Clasen's avatar
      win32: Set surface type early enough · 78c94f93
      Matthias Clasen authored
      We need to set the surface type before
      the frame clock.
      78c94f93
    • Matthias Clasen's avatar
      win32: Set the surface type · 2c43f87e
      Matthias Clasen authored
      This is copying some code from the corresponding
      create_surface implementations of the other backends.
      2c43f87e
    • LRN's avatar
      GDK W32: Fix the code to compile · 138104de
      LRN authored
      Somewhat change the order of initialization (to be closer
      to what Wayland backend does).
      
      Also remove the wrapper field that is no longer needed -
      it used to hold a pointer to the main GdkWindow instance,
      which wrapped GdkWin32ImplWindow. Since impls are gone,
      nothing is wrapping anything anymore.
      
      Fix a substitution error, where wrong pointer was added
      to the hash table. Added a comment to ensure that future readers
      (including myself) won't be confused by the fact that we're
      inserting a pointer instead of the handle itself.
      138104de
    • LRN's avatar
      GDK W32: be able to handle NULL cursor · d5e26cdb
      LRN authored
      d5e26cdb
    • Matthias Clasen's avatar
      win32: Build fixes · 09ec88d0
      Matthias Clasen authored
      09ec88d0
    • Matthias Clasen's avatar
      Rename surface constructors · d2951d3a
      Matthias Clasen authored
      We want to use a gdk_surface_new_popup for popups,
      and align the constructor names with the surface
      types, so rename
      
      gdk_surface_new_popup -> gdk_surface_new_temp
      gdk_surface_new_popup_full -> gdk_surface_new_popup
      
      The temp surface type will disappear eventually.
      d2951d3a
    • Matthias Clasen's avatar
      gdk: Drop GdkWindowAttr · 47fb0923
      Matthias Clasen authored
      All the information in it is already contained
      in the surface object we pass along, and none
      of the backend implementations were using the
      attributes at all.
      47fb0923
    • Matthias Clasen's avatar
      gdk: Drop input-only surfaces · 2855729c
      Matthias Clasen authored
      We are not creating such surfaces anymore, and
      they were only ever meaningfully implemented
      on X11. Drop the concept, and the api for determining
      if a surface is input-only.
      2855729c
    • Matthias Clasen's avatar
      surface: Small cleanup · 0f5a6a39
      Matthias Clasen authored
      Every surface has an impl now, no need to check.
      0f5a6a39
    • Matthias Clasen's avatar
      Drop child surfaces · 989792cb
      Matthias Clasen authored
      Drop gdk_surface_child_new and the child surface type,
      since we no longer use them. Deprecate surface apis
      that only make sense with child surfaces.
      989792cb
  7. 21 May, 2019 3 commits
  8. 06 May, 2019 1 commit
  9. 20 Apr, 2019 2 commits
    • Matthias Clasen's avatar
      surface: Drop group api · 51b2759e
      Matthias Clasen authored
      This was only ever implemented on X11, and
      GTK is not using it at all. Relegate it to
      x11-specific api.
      51b2759e
    • Matthias Clasen's avatar
      window: Drop some x11-specific apis · fed2db14
      Matthias Clasen authored
      The skip-taskbar, skip-pager and urgency hints were
      only ever implemented for X11, and are not very useful
      with modern desktops. Relegate the functionality to
      x11 backend api, and drop the GtkWindow api.
      fed2db14
  10. 15 Apr, 2019 1 commit
  11. 02 Apr, 2019 2 commits
    • Matthias Clasen's avatar
      gdk: Change some async dnd api · 64fd5158
      Matthias Clasen authored
      The pattern we generally follow is to put the
      async result right after the source object, in
      finish functions. Do this for gdk_drop_read_finish.
      64fd5158
    • Matthias Clasen's avatar
      gdk: Change some async clipboard api · 8e4e4401
      Matthias Clasen authored
      The pattern we generally follow is to put the
      async result right after the source object, in
      finish functions. Do this for gdk_clipboard_read_finish.
      8e4e4401
  12. 01 Apr, 2019 3 commits
  13. 29 Mar, 2019 1 commit
  14. 27 Mar, 2019 1 commit