gtk4.git
8 years agoSimplify the gtk_snapshot_icon_texture API
Matthias Clasen [Thu, 9 Nov 2017 03:21:42 +0000 (22:21 -0500)]
Simplify the gtk_snapshot_icon_texture API

Instead of passing the color matrix in from the outside,
just pass a boolean and set up the matrix internally.

8 years agoFix a compiler warning
Matthias Clasen [Thu, 9 Nov 2017 03:09:34 +0000 (22:09 -0500)]
Fix a compiler warning

8 years agoFix a typo
Matthias Clasen [Thu, 9 Nov 2017 03:09:23 +0000 (22:09 -0500)]
Fix a typo

8 years agofilesystem: Drop surface-based APIs
Matthias Clasen [Thu, 9 Nov 2017 02:55:34 +0000 (21:55 -0500)]
filesystem: Drop surface-based APIs

These are no longer used.

8 years agofilechooserwidget: Use GIcons
Matthias Clasen [Thu, 9 Nov 2017 02:52:50 +0000 (21:52 -0500)]
filechooserwidget: Use GIcons

This lets us avoid much of the symbolic icon rendering api.

8 years agofilechooserbutton: Use GIcons
Matthias Clasen [Thu, 9 Nov 2017 01:54:48 +0000 (20:54 -0500)]
filechooserbutton: Use GIcons

This lets use avoid much of the symbolic icon rendering api.

8 years agofilesystem: Add GIcon getters
Matthias Clasen [Thu, 9 Nov 2017 01:53:49 +0000 (20:53 -0500)]
filesystem: Add GIcon getters

We want to move away from surfaces, and instead pass
GIcons and GdkTextures around.

8 years agoWin32: Re-work cursor handling
Chun-wei Fan [Tue, 7 Nov 2017 07:39:48 +0000 (15:39 +0800)]
Win32: Re-work cursor handling

Like the X11 and Wayland backends, re-work how the cursors are being
handled.  So, we use a hash table to cache up the HCURSORS that we
create along the way.

We still need to cache up the icon/cursor themes since this is something
that is not part of Windows but was added on to support icon/cursor themes
such as Adwaita on Windows, but should be in-line with what is going on in
GdkCursor.

Also, remove the _gdk_grab_cursor global variable in gdkprivate-win32.h,
and replace it with another variable in the GdkWin32Display structure,
to make things cleaner in the process.

https://bugzilla.gnome.org/show_bug.cgi?id=773299

8 years agoUse color matrices for -gtk-recolor
Matthias Clasen [Wed, 8 Nov 2017 15:04:38 +0000 (10:04 -0500)]
Use color matrices for -gtk-recolor

Use the same approach we take for recoloring in GtkIconHelper now.
As part of this change, GtkCsSImageRecolor is changed to not derive
from GtkCssImageUrl anymore.

8 years agoCssProvider: Fix doc of min theme version loaded
Daniel Boles [Wed, 8 Nov 2017 06:51:32 +0000 (06:51 +0000)]
CssProvider: Fix doc of min theme version loaded

The code shows that we only load back to 4.0, but this still said 3.0.

8 years agoCssProvider: Use consistent theme name placeholder
Daniel Boles [Wed, 8 Nov 2017 06:48:17 +0000 (06:48 +0000)]
CssProvider: Use consistent theme name placeholder

commit 475d916eb92c0106d09525bcca938f05fd6a81b5 added various paths that
use theme-name for this, but the existing path already used THEME, with
a subsequent description referring to the latter. So use that everywhere

8 years agoFix the build
Matthias Clasen [Wed, 8 Nov 2017 05:37:04 +0000 (00:37 -0500)]
Fix the build

8 years agocss image: Use GdkTexture api directly
Matthias Clasen [Wed, 8 Nov 2017 04:04:36 +0000 (23:04 -0500)]
css image: Use GdkTexture api directly

No need to load a pixbuf anymore, we can just
directly create textures.

8 years agocss: Use a color matrix for recoloring -gtk-icontheme
Matthias Clasen [Wed, 8 Nov 2017 02:39:47 +0000 (21:39 -0500)]
css: Use a color matrix for recoloring -gtk-icontheme

This is the same approach we are already using in
GtkIconHelper.

8 years agoMake the recoloring code more robust
Matthias Clasen [Wed, 8 Nov 2017 02:27:38 +0000 (21:27 -0500)]
Make the recoloring code more robust

Pass both width+height and scale, so we can handle the case
where width+height are zero and we are using the file, scaled.

8 years agofix the build
Matthias Clasen [Wed, 8 Nov 2017 00:56:11 +0000 (19:56 -0500)]
fix the build

8 years agoFix symbolic.svg rendering
Matthias Clasen [Tue, 7 Nov 2017 23:55:01 +0000 (18:55 -0500)]
Fix symbolic.svg rendering

With the shader approach to symbolic recoloring, we must
not recolor the svgs anymore as we're loading them. Instead,
load them the same way that gtk-encode-symbolic-svg does.

This fixes the rendering of large symbolic icons e.g. the
'no search results found' page in the file chooser.

8 years agowayland: Drop an unused function
Matthias Clasen [Tue, 7 Nov 2017 12:43:09 +0000 (07:43 -0500)]
wayland: Drop an unused function

We no longer create a root window, so need to have
a function for it.

8 years agox11: Correctly set icons
Benjamin Otte [Tue, 7 Nov 2017 11:22:48 +0000 (12:22 +0100)]
x11: Correctly set icons

X11 obviously doesn't use 4 bytes for a 4 bytes pixel. Rather, it uses
unsigned long, which happens to be 8 bytes these days.

8 years agobroadway: Drop the root window
Matthias Clasen [Tue, 7 Nov 2017 02:11:16 +0000 (21:11 -0500)]
broadway: Drop the root window

We already have a list of toplevels, so we don't
need the root window for this.

8 years agowayland: Drop the root window
Matthias Clasen [Mon, 6 Nov 2017 23:30:27 +0000 (18:30 -0500)]
wayland: Drop the root window

We can just keep a list of toplevels in the display.

8 years agoUpdated Czech translation
Marek Cernocky [Mon, 6 Nov 2017 20:04:50 +0000 (21:04 +0100)]
Updated Czech translation

8 years agoDrop gdk_display_get_root_window
Matthias Clasen [Mon, 6 Nov 2017 02:45:14 +0000 (21:45 -0500)]
Drop gdk_display_get_root_window

This is no longer used.

8 years agox11: Stop using gdk_display_get_root_window
Matthias Clasen [Mon, 6 Nov 2017 02:25:42 +0000 (21:25 -0500)]
x11: Stop using gdk_display_get_root_window

Use the backend api for this.

8 years agox11: Make gdk_x11_display_get_root_window available
Matthias Clasen [Mon, 6 Nov 2017 02:05:25 +0000 (21:05 -0500)]
x11: Make gdk_x11_display_get_root_window available

This will replace the frontend api of the same name.

8 years agowin32: Stop using gdk_display_get_root_window
Matthias Clasen [Mon, 6 Nov 2017 02:00:04 +0000 (21:00 -0500)]
win32: Stop using gdk_display_get_root_window

Use the newly introduced backend api for this purpose.

8 years agowin32: Make gdk_win32_display_get_root_window available
Matthias Clasen [Mon, 6 Nov 2017 01:45:49 +0000 (20:45 -0500)]
win32: Make gdk_win32_display_get_root_window available

This will be used to replace the equivalent frontend api,
which is going away.

8 years agowidget: Don't leak the cursor on destruction
Benjamin Otte [Mon, 6 Nov 2017 02:24:34 +0000 (03:24 +0100)]
widget: Don't leak the cursor on destruction

8 years agowayland: Stop using gdk_display_get_root_window
Matthias Clasen [Mon, 6 Nov 2017 00:44:39 +0000 (19:44 -0500)]
wayland: Stop using gdk_display_get_root_window

We can just use the display field directly.

8 years agoTypo fix
Matthias Clasen [Mon, 6 Nov 2017 00:43:39 +0000 (19:43 -0500)]
Typo fix

8 years agobroadway: Stop using gdk_display_get_root_window
Matthias Clasen [Mon, 6 Nov 2017 00:37:54 +0000 (19:37 -0500)]
broadway: Stop using gdk_display_get_root_window

We can just use the field in the display.

8 years agoStop using the root window in gdk_window_create_similar_image_surface
Matthias Clasen [Mon, 6 Nov 2017 00:30:54 +0000 (19:30 -0500)]
Stop using the root window in gdk_window_create_similar_image_surface

Just create a plain image surface if we don't get a window.
This should work just fine and lets us drop another implicit
use of the root window.

8 years agoStop defaulting to the root window in gdk_window_get_geometry
Matthias Clasen [Mon, 6 Nov 2017 00:29:49 +0000 (19:29 -0500)]
Stop defaulting to the root window in gdk_window_get_geometry

This function is not documented as accepting NULL for the
window, and we don't want to have the root window sneakily
appear in the api like this.

8 years agoMake toplevels have parent == NULL
Matthias Clasen [Mon, 6 Nov 2017 00:28:37 +0000 (19:28 -0500)]
Make toplevels have parent == NULL

This is a move towards removing root windows as a frontend
gdk concept.

8 years agox11: Handle parent being NULL when creating windows
Matthias Clasen [Mon, 6 Nov 2017 00:25:22 +0000 (19:25 -0500)]
x11: Handle parent being NULL when creating windows

We want to make toplevels have a NULL parent, this
gets us ready for it.

8 years agoDrop gdk_display_get_toplevel_windows
Matthias Clasen [Sun, 5 Nov 2017 23:39:01 +0000 (18:39 -0500)]
Drop gdk_display_get_toplevel_windows

Nothing uses this private api anymore, so we can drop it.

8 years agox11: Drop use of gdk_display_get_toplevel_windows
Matthias Clasen [Sun, 5 Nov 2017 23:36:49 +0000 (18:36 -0500)]
x11: Drop use of gdk_display_get_toplevel_windows

Use the newly introduced helper for this task.

8 years agox11: Add a helper to get all toplevels
Matthias Clasen [Sun, 5 Nov 2017 23:33:56 +0000 (18:33 -0500)]
x11: Add a helper to get all toplevels

This will let us avoid frontend API for this task.

8 years agoquartz: Drop another use of gdk_display_get_toplevel_windows
Matthias Clasen [Sun, 5 Nov 2017 23:30:03 +0000 (18:30 -0500)]
quartz: Drop another use of gdk_display_get_toplevel_windows

This one was forgotten in the previous commit.

8 years agoquartz: Drop use of gdk_display_get_toplevel_windows
Matthias Clasen [Sun, 5 Nov 2017 23:28:27 +0000 (18:28 -0500)]
quartz: Drop use of gdk_display_get_toplevel_windows

We can use the newly added helper function for this.

8 years agoquartz: Add a function to get all toplevels
Matthias Clasen [Sun, 5 Nov 2017 23:27:49 +0000 (18:27 -0500)]
quartz: Add a function to get all toplevels

This will let us avoid frontend API for this.

8 years agobroadway: Stop using gdk_display_get_toplevel_windows
Matthias Clasen [Sun, 5 Nov 2017 23:19:04 +0000 (18:19 -0500)]
broadway: Stop using gdk_display_get_toplevel_windows

We already keep a list of all toplevels in the broadway
display struct. Just use it.

8 years agoUpdate Polish translation
Piotr Drąg [Sun, 5 Nov 2017 20:56:03 +0000 (21:56 +0100)]
Update Polish translation

8 years agoplacessidebar: correct quotation marks in a new string
Piotr Drąg [Sun, 5 Nov 2017 20:16:59 +0000 (21:16 +0100)]
placessidebar: correct quotation marks in a new string

8 years agoplacessidebar: add starred location item
Alexandru Pandelea [Thu, 20 Jul 2017 15:29:42 +0000 (16:29 +0100)]
placessidebar: add starred location item

Add an item for showing all files marked as favorite. This item will
open all files that have the nao:predefined-tag-favorite tag

https://bugzilla.gnome.org/show_bug.cgi?id=785176

8 years agoquartz: Drop mentions of foreign windows
Matthias Clasen [Sun, 5 Nov 2017 17:09:06 +0000 (12:09 -0500)]
quartz: Drop mentions of foreign windows

The quartz backend never creates foreign windows,
so no need to check for window type.

8 years agoExpand the cursors demo text
Matthias Clasen [Sun, 5 Nov 2017 16:24:12 +0000 (11:24 -0500)]
Expand the cursors demo text

Explain what why we show each cursor 4 times.

8 years agowayland: Fix animated cursors
Matthias Clasen [Sun, 5 Nov 2017 16:20:42 +0000 (11:20 -0500)]
wayland: Fix animated cursors

We must reset the image delay when stopping the timeout,
otherwise the code setting it up thinks it is still running.

This fixes cursor animation only working for the very first
enter of a widget with an animated cursor, as seen in the
cursors example in gtk4-demo.

8 years agoemojichooser: animate the adjustment
Benjamin Otte [Sun, 5 Nov 2017 15:12:35 +0000 (16:12 +0100)]
emojichooser: animate the adjustment

... instead of doing a dance with the scrolled window to get it to scroll
the adjustment.

8 years agogtk-demo: Fix popover positioning in popover test
Benjamin Otte [Sun, 5 Nov 2017 14:22:14 +0000 (15:22 +0100)]
gtk-demo: Fix popover positioning in popover test

8 years agogtk-demo: Don't use get_allocation()
Benjamin Otte [Sun, 5 Nov 2017 14:01:30 +0000 (15:01 +0100)]
gtk-demo: Don't use get_allocation()

Use get_width()/get_height() instead.

8 years agoflowbox: Don't call get_allocation()
Benjamin Otte [Sun, 5 Nov 2017 13:46:01 +0000 (14:46 +0100)]
flowbox: Don't call get_allocation()

That's wome outdated workaround code from the last version of GTK3.

8 years agoviewport: Implement clipping for picking
Benjamin Otte [Sun, 5 Nov 2017 06:17:36 +0000 (07:17 +0100)]
viewport: Implement clipping for picking

This is necessary because picking is no longer automatically constrained
to a widget's box. So all clipping widgets need to constrain their
clipping, too.

This patch does that for GtkViewport only.

8 years agotestsuite: Update expected results for scale changes
Benjamin Otte [Sun, 5 Nov 2017 05:58:05 +0000 (06:58 +0100)]
testsuite: Update expected results for scale changes

8 years agotestsuite: Unrealize renderers before unreffing
Benjamin Otte [Sun, 5 Nov 2017 05:55:01 +0000 (06:55 +0100)]
testsuite: Unrealize renderers before unreffing

This is now necessary, because the GL renderer crashes if we don't
enforce it.

8 years agoaboutdialog: Clean up for logo being a texture
Benjamin Otte [Sun, 5 Nov 2017 05:50:28 +0000 (06:50 +0100)]
aboutdialog: Clean up for logo being a texture

8 years agoentry: Remove surface icons
Benjamin Otte [Sun, 5 Nov 2017 05:45:01 +0000 (06:45 +0100)]
entry: Remove surface icons

We have texture icons.

8 years agoiconhelper: Don't render to surface anymore
Benjamin Otte [Sun, 5 Nov 2017 05:30:45 +0000 (06:30 +0100)]
iconhelper: Don't render to surface anymore

Just go directly to texture.

8 years agomenubutton: Don't fiddle with prelight state
Benjamin Otte [Sun, 5 Nov 2017 04:09:59 +0000 (05:09 +0100)]
menubutton: Don't fiddle with prelight state

8 years agothemes: Do expander arrow :hover properly
Benjamin Otte [Sun, 5 Nov 2017 04:08:18 +0000 (05:08 +0100)]
themes: Do expander arrow :hover properly

We want to prelight the arrow even when the label is hovered.

8 years agoexpander: Don't do :hover yourself
Benjamin Otte [Sun, 5 Nov 2017 03:56:08 +0000 (04:56 +0100)]
expander: Don't do :hover yourself

GTK does it for you.

8 years agorange: Stop trying to be smarter than GTK
Benjamin Otte [Sun, 5 Nov 2017 03:45:18 +0000 (04:45 +0100)]
range: Stop trying to be smarter than GTK

GTK deals with PRELIGHT properly itself now, so there's no need to try
do it manually.

8 years agorange: Use gtk_widget_pick() to pick the mouse location
Benjamin Otte [Sun, 5 Nov 2017 03:22:02 +0000 (04:22 +0100)]
range: Use gtk_widget_pick() to pick the mouse location

That's rather unsuccessful so far because it requires skipping a bunch
of irrelevant widgets, but oh well...

8 years agowidget: Make gtk_widget_pick() really slow
Benjamin Otte [Sun, 5 Nov 2017 03:05:55 +0000 (04:05 +0100)]
widget: Make gtk_widget_pick() really slow

We cannot fast-track picking by using gtk_widget_contains(). Child
widgets may extend their parent using ie negative margins.

This is not just a theoretical concern, this is what's happening right
now with GtkScale's sliders relative to the trough.

The problem is that we now iterate through all widgets, even when they
aren't anywhere near the mouse pointer. So essentially every pick
operation is now guaranteed O(N_WIDGETS) which used to be the worst case
that pretty much never happened.

8 years agorange: Stack widgets properly
Benjamin Otte [Sun, 5 Nov 2017 03:00:33 +0000 (04:00 +0100)]
range: Stack widgets properly

The trough widgets have the slider on top of the fill level and the
hilight widget. Make sure the widget stacking respects that.

This is particularly relevant because picking event targets should pick
the slider and not the hilight widget.

8 years agoentry: Texture properties are objects
Benjamin Otte [Sat, 4 Nov 2017 23:53:31 +0000 (00:53 +0100)]
entry: Texture properties are objects

Carelessly copy/pasting made them boxeds. Oops.

8 years agowidget: Implement gtk_widget_pick()
Benjamin Otte [Sat, 4 Nov 2017 23:49:18 +0000 (00:49 +0100)]
widget: Implement gtk_widget_pick()

... and use it.

8 years agoFix some typos
Matthias Clasen [Sun, 5 Nov 2017 03:48:30 +0000 (23:48 -0400)]
Fix some typos

Correct function names in the docs, etc.

8 years agoDocumentation fixes
Matthias Clasen [Sun, 5 Nov 2017 03:47:02 +0000 (23:47 -0400)]
Documentation fixes

Make sure textures show up in the gdk docs.

8 years agoUpdate POTFILES.skip
Piotr Drąg [Sat, 4 Nov 2017 23:26:47 +0000 (00:26 +0100)]
Update POTFILES.skip

8 years agowayland: Fix embarassing bug
Benjamin Otte [Sat, 4 Nov 2017 23:05:56 +0000 (00:05 +0100)]
wayland: Fix embarassing bug

Yes, I did not get to test this code path until now. Because nobody uses
icon surfaces, boo!

8 years agogtk-demo: Update cursors demo
Benjamin Otte [Sat, 4 Nov 2017 23:04:23 +0000 (00:04 +0100)]
gtk-demo: Update cursors demo

It's all glade-ified, hurray!
It also now properly tests image cursors, named cursors and fallbacks.
I'm not gonna tell how many bugs I found though.

8 years agogdk: Use G_N_ELEMENTS() when iterating over constant arrays
Benjamin Otte [Sat, 4 Nov 2017 22:58:17 +0000 (23:58 +0100)]
gdk: Use G_N_ELEMENTS() when iterating over constant arrays

And do that everywhere.

Because if we don't, we're gonna crash sometimes.

8 years agogdk: Fix fallback names for the help cursor
Benjamin Otte [Sat, 4 Nov 2017 22:12:46 +0000 (23:12 +0100)]
gdk: Fix fallback names for the help cursor

8 years agodocs: You can't modify textures
Benjamin Otte [Sat, 4 Nov 2017 19:40:17 +0000 (20:40 +0100)]
docs: You can't modify textures

So there's no need to tell people they must not do that.

8 years agowindow: Make icons GdkTextures
Benjamin Otte [Sat, 4 Nov 2017 19:23:33 +0000 (20:23 +0100)]
window: Make icons GdkTextures

Cairo surfaces are bad, mkay?

8 years agoaboutdialog: Make logo a texture property
Benjamin Otte [Sat, 4 Nov 2017 18:10:46 +0000 (19:10 +0100)]
aboutdialog: Make logo a texture property

Get rid of cairo surfaces!

8 years agobuilder: Mirror GdkPixbuf abilities for GdkTexture
Benjamin Otte [Sat, 4 Nov 2017 18:09:17 +0000 (19:09 +0100)]
builder: Mirror GdkPixbuf abilities for GdkTexture

In particular, allow specifying a filename for a GDK_TYPE_TEXTURE
property. This makes it easy to transition properties from Pixbuf type
to Texture type without having to touch resource files.

8 years agoimage: Add the ability to set textures
Benjamin Otte [Sat, 4 Nov 2017 18:05:52 +0000 (19:05 +0100)]
image: Add the ability to set textures

This also adds it to all other places that use the same infrastructure:
GtkEntry and GtkCellRendererPixbuf

8 years agoPartially revert GskTexture → GdkTexture rename
Emmanuele Bassi [Sat, 4 Nov 2017 15:03:03 +0000 (15:03 +0000)]
Partially revert GskTexture → GdkTexture rename

Excessive use of sed when moving GskTexture to GDK; the GskTextureNode
should still live under the GSK namespace.

8 years agoinspector: Unrealize renderer before unreffing
Benjamin Otte [Sat, 4 Nov 2017 14:20:04 +0000 (15:20 +0100)]
inspector: Unrealize renderer before unreffing

See previous patch for a description on why that is necessary.
`

8 years agorenderer: Assert having been unrealized in dispose
Benjamin Otte [Sat, 4 Nov 2017 14:09:43 +0000 (15:09 +0100)]
renderer: Assert having been unrealized in dispose

We cannot unrealize a renderer in the dispose function, because that
would cause this chain to happen:
  gsk_gl_renderer_dispose
  gsk_renderer_dispose
  gsk_renderer_unrealize
  gsk_gl_renderer_unrealize
So we would call into thje GL renderers unrealize when it has already
(partially) disposed itself and ause accesses to dead variables.

8 years agotexture: Add gdk_texture_new_from_file()
Benjamin Otte [Sat, 4 Nov 2017 14:08:25 +0000 (15:08 +0100)]
texture: Add gdk_texture_new_from_file()

and gdk_texture_new_from_resource().

While doing set, turn all GDK_AVAILABLE_IN_3_90 into
GDK_AVAILABLE_IN_3_94 because that's now true after the renaming.

8 years agoiconhelper: Compute surface size without icon helper
Benjamin Otte [Sat, 4 Nov 2017 06:04:08 +0000 (07:04 +0100)]
iconhelper: Compute surface size without icon helper

This is so we can do the next batch of changes

8 years agotextview: Use gtk_widget_set_cursor()
Benjamin Otte [Sat, 4 Nov 2017 02:58:02 +0000 (03:58 +0100)]
textview: Use gtk_widget_set_cursor()

This currently breaks because we still use GdkWindows. Soon...

8 years agotextview: Remove GdkWindow usage from the public API
Benjamin Otte [Sat, 4 Nov 2017 02:16:26 +0000 (03:16 +0100)]
textview: Remove GdkWindow usage from the public API

A sideeffect is that we don't set the correct parent window on child
widgets anymore, but that is hopefully going to be fixed once we get rid
of child windows completely.

8 years agox11: Make gdk_x11_display_get_xcursor be recognized as instance method
Rico Tzschichholz [Sat, 4 Nov 2017 12:23:02 +0000 (13:23 +0100)]
x11: Make gdk_x11_display_get_xcursor be recognized as instance method

8 years agogdk/win32: Fix Win32 GL Context switching
Chun-wei Fan [Mon, 30 Oct 2017 07:00:28 +0000 (15:00 +0800)]
gdk/win32: Fix Win32 GL Context switching

Since on Windows we need to use a good amount of temporary GL contexts,
we need to switch back to the original GL contexts we were using when
we are done with the temporary GL contexts, otherwise multi-GL windows
will cause confusions causing display artifacts and crashes.

Also, use the GdkWin32GLContext::gl_hdc consistently throughout
the code and remove the GdkWin32Display::gl_hdc as Lukas K pointed out
that GdkWin32Display::gl_hdc becomes out-of-date and so the HDC that the
GL context is bound to becomes incorrect in sceanarios using multiple
windows with GtkGLArea/GdkGLArea items (which would cause the artifacts in
programs that use multiple windows with GtkGLArea/GdkGLArea items, and it
turns out that GdkWin32Display::gl_hdc is actually not necessary to help
keep track of the HDCs we use for our GL contexts.

This will also fix on Windows with GDK_GL=always, or when GSK's gl
renderer is used.

Partly based on patch from Lukas K <lu@0x83.eu>

https://bugzilla.gnome.org/show_bug.cgi?id=789213

8 years agogdk/win32: Fix build after GdkScreen and cursor cleanups
Chun-wei Fan [Fri, 3 Nov 2017 08:37:18 +0000 (16:37 +0800)]
gdk/win32: Fix build after GdkScreen and cursor cleanups

Move the leftovers from the removals to use the current APIs, to fix the
build.  Also for gdk_device_virtual_set_window_cursor(), only do
something when a valid GdkCursor is passed in here.

https://bugzilla.gnome.org/show_bug.cgi?id=773299

8 years agogtk: Use gtk_widget_set_cursor()
Benjamin Otte [Sat, 4 Nov 2017 00:37:03 +0000 (01:37 +0100)]
gtk: Use gtk_widget_set_cursor()

... and gtk_widget_set_cursor_from_name() instead of setting cursors on
GdkWindows.

8 years agox11: Don't use g_hash_table_steal()
Benjamin Otte [Sat, 4 Nov 2017 00:35:59 +0000 (01:35 +0100)]
x11: Don't use g_hash_table_steal()

It returns TRUE/FALSE, not the item you've stolen, so if you free that,
your X connections is gonna have a BadCursor.

8 years agowidget: Export gtk_widget_set_cursor()
Benjamin Otte [Fri, 3 Nov 2017 23:58:57 +0000 (00:58 +0100)]
widget: Export gtk_widget_set_cursor()

Widgets can now set their favorite cursor using public API.

This is very necessary because all cursor-setting APIs are still
setting it on their GdkWindow, which by now is the toplevel - oops.

8 years agogdk: Cursors no longer have a display
Benjamin Otte [Fri, 3 Nov 2017 22:19:22 +0000 (23:19 +0100)]
gdk: Cursors no longer have a display

Change constructors to reflect that.

While doing so, also add a fallback argument to the cursor constructors,
so it is now possible to create cursors with fallback.

8 years agotestsuite: Remove cursor tests
Benjamin Otte [Fri, 3 Nov 2017 22:18:56 +0000 (23:18 +0100)]
testsuite: Remove cursor tests

Cursors always exist now, it does not make sense to test that their
creation fails anymore.

8 years agogdk: Cursors are created generically
Benjamin Otte [Fri, 3 Nov 2017 21:49:04 +0000 (22:49 +0100)]
gdk: Cursors are created generically

There are no longer subclasses for cursors now.

8 years agowayland: Redo cursor handling
Benjamin Otte [Fri, 3 Nov 2017 21:41:31 +0000 (22:41 +0100)]
wayland: Redo cursor handling

This is in line with the X11 changes last patch.

8 years agox11: Redo cursor handling completely
Benjamin Otte [Fri, 3 Nov 2017 05:01:56 +0000 (06:01 +0100)]
x11: Redo cursor handling completely

Instead of creating a GdkX11Cursor, create GdkCursors. Cache the XCursor
in a hash table instead.

Also, make use of the new fallback mechanism for fallback code: Make
sure to provide cursors for the names that are guaranteed to exist, but
do not do bad attempts at displaying texture surfaces.
Black/White/transparent is not a replacement for those.

8 years agogdk: Make cursors instantiable
Benjamin Otte [Fri, 3 Nov 2017 05:00:56 +0000 (06:00 +0100)]
gdk: Make cursors instantiable

This way, backends can instantiate GdkCursor objects directly.

Do that for broadway to test that it indeed works.

8 years agogdk: Add gdk_cursor_hash() and gdk_cursor_equal()
Benjamin Otte [Fri, 3 Nov 2017 02:08:04 +0000 (03:08 +0100)]
gdk: Add gdk_cursor_hash() and gdk_cursor_equal()

This is so GDK backends can put cursors into hash tables and avoid
duplicates.

8 years agogdk: Add gdk_cursor_get_fallback()
Benjamin Otte [Fri, 3 Nov 2017 02:07:33 +0000 (03:07 +0100)]
gdk: Add gdk_cursor_get_fallback()

There's no way to use it yet, but I want it to be available for
refactoring the backends.