Emmanuele Bassi
6c0de43669
Remove unnecessary introspection annotation
...
Transfer annotations do not apply to integral types.
2017-12-21 18:46:08 +00:00
Timm Bäder
964c6f7d58
x11: Fix wrong condition when unsetting transient-for
...
Setting a new transient-for parent is only possible if the given parent
window is valid, not when it is NULL or valid.
2017-12-21 18:25:51 +01:00
Timm Bäder
f393552fec
x11: Guard against NULL window
...
Otherwise, the NULL parent window causes a crash in the
GDK_WINDOW_IS_DESTROYED call.
2017-12-19 07:39:37 +01:00
Benjamin Otte
3438dcdd4e
x11: Add necessary NULL check
2017-12-16 02:48:12 +01:00
Benjamin Otte
aab86f8b98
x11: Try getting ipc_window vs source_window right
...
This is in preparation for splitting these. Unfortunately, source_window
== ipc_window, so this isn't very debuggable yet.
2017-12-16 02:48:12 +01:00
Benjamin Otte
510581e0ef
x11: Use gdk_drag_context_get_display()
2017-12-16 02:48:12 +01:00
Benjamin Otte
5f326d7ec6
x11: Create IPC window outselves
...
Ignore the passed in IPC window.
2017-12-16 02:48:12 +01:00
Benjamin Otte
a04afde35c
gdk: Remove DRAG_STATUS and DROP_FINISHED events
...
Those are source-side events that are handled by signals of the
Dragontext these days.
2017-12-15 23:48:36 +01:00
Matthias Clasen
61843d60b2
x11: Avoid crash in fallback move emulation
...
Quietly do nothing when there is already an ongoing operation.
This matches the behavior of the ewmh code, and is much nicer
than a crash.
https://bugzilla.gnome.org/show_bug.cgi?id=789054
2017-12-15 16:19:09 -05:00
Matthias Clasen
e92c0e85ec
Replace gdk_keymap_get_for_display by gdk_display_get_keymap
...
Replace all uses of the old function by the new one.
No functional change.
2017-12-15 07:44:58 -05:00
Benjamin Otte
84431ab927
x11: Remove GdkAtom usage from dnd code
...
Use strings instead.
2017-12-14 13:46:37 +01:00
Benjamin Otte
5d70bbf4c4
display: Remove leftover old clipboard APIs
2017-12-14 13:35:32 +01:00
Krzesimir Nowak
5a0fb278d1
x11: Fix erroneous & to be &&
2017-12-14 13:35:32 +01:00
Benjamin Otte
920259c250
x11: Get rid of default Atom converters
...
No, using the default Wayland display is not okay to query Atoms.
2017-12-14 13:35:32 +01:00
Matthias Clasen
84eaf3da7d
Drop atom-related cast macros
...
These don't really add anything, just drop them.
2017-12-13 23:47:02 -05:00
Matthias Clasen
54a6273191
Drop gdk_atom_intern
...
Atoms are just interned strings now, so we can just
use g_intern_string.
2017-12-13 23:39:03 -05:00
Matthias Clasen
4c083c1ed4
Drop gdk_atom_name
...
Since atoms are just interned strings now, we can just
cast them to const char * where needed.
2017-12-13 23:26:23 -05:00
Benjamin Otte
b49a9b9933
dnd: Remove gdk_drag_get_selection()
...
Without selections, drags can't have them either.
Also included is removing the selection from GtkSelectionData.
Includes a bunch of crude cleanups to Wayland code that no longer has to
care about selection atoms.
2017-12-14 04:39:22 +01:00
Benjamin Otte
65fcff87b2
gdk: Remove ability to request selection notifications
...
Without selections, that's kinda pointless.
2017-12-14 04:20:48 +01:00
Benjamin Otte
f2bb2024c8
gdk: Remove properties
...
They are not used anymore.
Gone with them are PropertyNotify events.
2017-12-14 03:05:34 +01:00
Benjamin Otte
d7f34874ab
x11: Make unsetting transient-for work
...
... and just unset it from GtkWindow instead of fiddling with
properties.
2017-12-14 03:05:34 +01:00
Benjamin Otte
a4b42f0b73
gdk: Remove selection defines
...
And with it, remove the selections section from the docs.
So selections are gone for good now.
2017-12-14 03:05:34 +01:00
Carlos Garnacho
3021edc38d
gdk/x11: s/gdk_event_free/g_object_unref/
2017-12-14 01:05:48 +01:00
Carlos Garnacho
8595e4b1d1
gdk: Figure out the GdkSeat of an event from the GdkDevice
...
Removes the need for gdk_event_set_seat() and the GdkSeat field from
GdkEventPrivate.
2017-12-14 00:58:32 +01:00
Carlos Garnacho
59cab36035
gdk: Fold GdkEventPrivate fields into event structs
...
Now all events structs are private, it doesn't make as much sense
having GdkEventPrivate wrapping allocating events. This is a first
step towards removing it.
2017-12-14 00:58:32 +01:00
Carlos Garnacho
64decbfd74
gdk: Remove GdkEventType argument from GdkEvent union
...
It won't stand true anymore that the GdkEventType argument is the
first field of the GdkEvent* structs. All callers have been updated
to use event->any.type instead.
2017-12-14 00:58:32 +01:00
Carlos Garnacho
b9db0b55cb
gdk: Refurbish GdkEvent struct hierarchy
...
Make all specific event structs contain a GdkEventAny, so the base
struct can be extended without modifying structs all over the place.
2017-12-14 00:58:32 +01:00
Benjamin Otte
54f9aef0d4
gdk: Remove gdk_selection_convert()
...
It's not used anymore.
2017-12-14 00:44:26 +01:00
Benjamin Otte
ca5f859dc8
dnd: Only send DELETE request on X11
...
This is Xdnd-specific and doesn't need to happen elsewhere.
2017-12-13 23:52:55 +01:00
Benjamin Otte
4042d5f242
gdk: Remove ability to own a selection
...
With this, the GDK_EVENT_SELECTION_REQUEST and GDK_EVENT_SELECTION_CLEAR
and the associated GtkWidget signals are gone, too.
2017-12-13 23:39:02 +01:00
Benjamin Otte
b66052f3ce
gdk: Remove gdk_selection_add_targets()
...
It's not needed anymore, now that we can look at the content provider's
formats.
Alose remove all the API in GTK that was used to set it.
2017-12-13 19:27:51 +01:00
Benjamin Otte
65eab87238
x11: Move selection handling to GDK
...
Instead of claiming the selection in GTK, claim it in the X11 dnd code.
Also handle SelectionRequest and SelectionClear X events there.
2017-12-13 18:31:06 +01:00
Benjamin Otte
8648d5409e
dnd: Pass content to gdk_drag_begin()
...
Instead of just passing the GdkContentFormats, we are now passing the
GdkContentProvider to gdk_drag_begin().
This means that GDK itself can now query the data from the provider
directly instead of having to send selection events.
Use this to provide the private API gdk_drag_context_write() that allows
backends to pass an output stream that this data will be written to.
Implement this as the mechanism for providing drag data on Wayland.
And to make this all work, implement a content provider named
GtkDragContent that is implemented by reverting to the old DND
drag-data-get machinery inside GTK, so for widgets everything works just
like before.
2017-12-13 15:05:27 +01:00
Benjamin Otte
fb0fdddd76
x11: Refactor xevent filtering some more
...
We now have a GdkX11Display::xevent signal that gets emitted for every
XEvent and allows you to interrupt processing via TRUE/FALSE return
values.
These return values to correspond to GDK_FILTER_REMOVE and
GDK_FILTER_CONTINUE respectively.
The GDK_FILTER_TRANSLATE case from gdk_window_add_filter() is now meant
to be handled via gdk_display_put_event().
2017-12-13 01:55:56 +01:00
Benjamin Otte
4b33a34ce3
x11: Use GdkX11Display::translate-event more
2017-12-13 01:09:32 +01:00
Benjamin Otte
2d86c1a869
x11: Make clipboard use translate-event signal
2017-12-13 00:56:52 +01:00
Benjamin Otte
0d1ea05658
x11: Add GdkX11Display:translate-event signal
...
This is supposed to replace gdk_window_add_filter() in the long run.
2017-12-13 00:56:52 +01:00
Benjamin Otte
f34297cfba
x11: Constify XEvent usage
2017-12-13 00:56:52 +01:00
Benjamin Otte
8a453924a0
gdk: Remove gdk_event_put(), peek() etc
...
We don't want to treat events like they don't belong to displays. So
instead, people should use gdk_display_put/peek/get_event().
2017-12-13 00:56:52 +01:00
Benjamin Otte
5df527edaf
x11: Refactor code
...
This is in preparation for DND.
It moves a lot of code from gdkclipboard-x11.c to
gdkselectionoutputstream-x11.c to untangle it from GdkX11Clipboard
usage.
2017-12-13 00:56:52 +01:00
Benjamin Otte
643a6c2311
gdk: Remove gdk_drag_manage_dnd()
...
Instead, pass the actions as part of gdk_drag_begin() and insist DND is
always managed.
A new side effect is that gdk_drag_begin() can now return %NULL.
2017-12-11 01:46:33 +01:00
Benjamin Otte
218efa62ef
dnd: Pass dx/dy instead of x_root/y_root
...
This way, we don't need root coordinates when computing the dnd start
position.
2017-12-11 01:02:31 +01:00
Benjamin Otte
803cbd576f
dnd: Introduce gdk_drop_read_async() and use it
...
This is the replacement for selection usage.
Backend implementations for X11 (missing support for backwards compat
formats like COMPOUND_TEXT) and Wayland are included.
GTK code should be adapted to use gdk_drop_read_*() functions instead
of gtk_drag_get_data().
2017-12-10 01:09:14 +01:00
Benjamin Otte
963264a73a
gdk: Fix wrong usage of g_task_propagate_pointer()
...
The return value is transfer full, not transfer none.
2017-12-10 01:09:14 +01:00
Benjamin Otte
0d31eb8670
dnd: Add gdk_drag_context_get_display()
...
Also turn it into a readable, construct-only property.
Every GDK object should have this. (Apart from GdkDisplay, obviously.)
2017-12-10 01:09:14 +01:00
Piotr Drąg
794a2bfd00
Use Unicode quotation marks in new strings
...
See https://developer.gnome.org/hig/stable/typography.html
https://bugzilla.gnome.org/show_bug.cgi?id=772371
2017-12-03 18:38:39 +01:00
Matthias Clasen
6ab72b2653
Remove GdkDragProtocol from the api
...
...together with apis that return it. We were not using this
information in GTK+ at all, so no need to provide it.
2017-12-03 06:41:08 +01:00
Benjamin Otte
437d70f569
gdk: Get rid of owner change events
...
They're unused now.
2017-12-03 05:46:49 +01:00
Benjamin Otte
ead67a7c17
x11: Handle case where clipboard was reclaimed quickly
...
When the reply to a TARGETS request comes in, the clipboard may already
be reclaimed by the local app. Deal with that case (in an ugly way,
strictly speaking we should use a cancellable here).
This happens for example at startup when the initial TARGETS requests
have not been answered until after the main widow popped up. And if such
a window immediately claims the primary clipboard (like when the initial
focus is inside an entry), this race will happen.
2017-12-03 05:46:49 +01:00
Benjamin Otte
5abd7a39a2
x11: Implement storing the clipboard
2017-12-03 05:46:49 +01:00
Benjamin Otte
b75546d0fb
x11: Implement MULTIPLE requests
2017-12-03 05:46:48 +01:00
Benjamin Otte
ea18793965
x11: Introduce GdkX11PendingSelectionNotify
...
This object tracks the SelectionNotifyEvent that has to be sent in
response to a SelectionRequest.
Currently it just looks like code reshuffling, but it's a prerequisite
for handling MULTIPLE, which requires to only send the notify after
every stream has writtten at least once.
But anyway, code is cleaner now, so it's a win!
2017-12-03 05:46:48 +01:00
Benjamin Otte
bcc0d4b5f0
x11: Split out a function
...
This will be necessary for MULTIPLE handling.
2017-12-03 05:46:48 +01:00
Benjamin Otte
134076e738
x11: Implement claiming the X Selection with the clipboard
...
... and of course support writing to other apps.
2017-12-03 05:46:47 +01:00
Benjamin Otte
c66a61d896
x11: Add gdk_x11_display_get_max_request_size()
...
There's multiple places in the clipboard code where I need it, so make
it a custom function.
2017-12-03 05:46:47 +01:00
Benjamin Otte
9b78d76873
x11: Improve fallbacks for text
...
(1) Try all passed in formats in order if one of them fails.
(2) Don't blindly accept all formats, make sure they are mime types
(3) Add a bunch of special non-mime types that plug converters to
get to mime types
2017-12-03 05:46:46 +01:00
Benjamin Otte
970cb100af
x11: Improve debugging output for selection input stream
2017-12-03 05:46:27 +01:00
Benjamin Otte
41f70e18af
clipboard: Refactor gdk_clipboard_read() to be async
...
This allows us not just to pass any mime type to the read function, but
it also makes it possible to pass multiple mime types and the clipboard
can then try them in order until it finds a supported one.
This is so far not implemented though.
2017-12-03 05:46:26 +01:00
Benjamin Otte
516f35b865
x11: Use async queue and implement sync reads on selections stream
...
Turns out, way too many async operations are implemented by running the
sync operation in a thread. The easiest solution is to support that is
to use a GAsyncQueue for the buffers and deadlock if called from the
main thread.
2017-12-03 05:43:24 +01:00
Benjamin Otte
c91a38b013
clipboard: Implement gdk_clipboard_read()
2017-12-03 05:43:24 +01:00
Benjamin Otte
13fb3fd4a0
x11: Implement INCR reads
2017-12-03 05:43:24 +01:00
Benjamin Otte
fe9045d82e
x11: Various clipboard cleanups
...
(1) Turn X11 clipboard event handling into a regular filter function
(2) Maintain a timestamp in the clipboard, so we can pass it when
querying selections.
2017-12-03 05:43:24 +01:00
Benjamin Otte
a5ab9a9671
clipboard: Add gdk_clipboard_claim_remote()
...
This allows the remote clipboard to take over. The X11 clipboard already
does that.
2017-12-03 05:43:24 +01:00
Benjamin Otte
4728dd0a9e
x11: Add an initial clipboard implementation
...
This does nothing but download the targets and debug-print them.
2017-12-03 05:43:24 +01:00
Matthias Clasen
7217689e02
docs: Remove mentions of gdk_cursor_new_from_pixbuf
...
This function is going away.
2017-11-29 20:14:53 -05:00
Matthias Clasen
bad53bc201
x11: Stop deriving from GdkDeviceManager
...
We can just derive from GObject.
2017-11-25 11:04:15 -05:00
Matthias Clasen
fd958939be
Drop the GdkDeviceManager::display property
...
Move this to the backends, and stop deriving
from GdkDeviceManager.
2017-11-25 11:04:15 -05:00
Matthias Clasen
0ec491ea9d
Drop the get_client_pointer vfunc
...
There is no api using this anymore.
2017-11-25 11:04:15 -05:00
Matthias Clasen
b6a634fe38
Drop the list_devices vfunc
...
We no longer have api that uses this.
2017-11-25 11:04:15 -05:00
Matthias Clasen
c9261f50aa
x11: Stop emitting devicemanager signals
...
Nobody is listening to these anymore, so there
is no point in emitting them.
2017-11-25 11:04:14 -05:00
Matthias Clasen
aae4fafad2
x11: Stop using gdk_display_get_device_manager
...
We can keep the displaymanager in the backend.
2017-11-25 11:04:14 -05:00
Matthias Clasen
4c40accbb9
gdk: Move gdk_disable_multidevice tot he X11 backend
...
This api only ever did something for X11, so move
it there. Update the docs and adapt the only caller.
2017-11-25 11:04:14 -05:00
Benjamin Otte
1a70ca75e8
gdk: Sanitize GdkContentFormats API
...
Make sure the API reflects the idea that GdkContentFormats is a set
containing mime types. In particular, treat the object itself as a
plural - it's named content format`S' after all - and therefor use
the correct verb form.
Also make GdkContentFormats keep an array instead of a list, now that
it's immutable.
2017-11-20 23:15:11 +01:00
Benjamin Otte
d6a209816b
gdkdnd: Make GdkDragContext->formats a GdkContentFormats
...
Instead of it being a GList of GdkAtoms.
2017-11-20 23:12:33 +01:00
Matthias Clasen
a129053ed9
gdk: Use G_PARAM_SPEC_STATIC_STRINGS throughout
...
This avoids some string copies at startup.
2017-11-17 21:38:08 -05:00
Matthias Clasen
c2f6208ce5
Add private api for setting cursor theme
...
This is implemented in multiple gdk backends,
and we can avoid and ugly ifdef cascade in gtk
by adding a vfunc for this.
2017-11-17 17:42:12 -05:00
Matthias Clasen
dbb18ad5d8
gdk: Add a private method to get a server timestamp
...
This is needed in the clipboard code. We don't make
it public, since that code is destined to eventually
live in gdk anyway.
2017-11-17 15:39:08 -05:00
Matthias Clasen
34fa61e13c
Fix the build
2017-11-17 13:12:51 -05:00
Matthias Clasen
71c463ae85
x11: Drop GdkX11Visual as public api
...
There was no useful functionality left here,
so just remove this from the api altogether.
2017-11-17 13:03:11 -05:00
Matthias Clasen
8ced2c6478
x11: Stop using GdkScreen altogether
...
Derive GdkX11Screen directly from GObject, and
remove the last remaining uses of GdkScreen.
2017-11-17 10:51:55 -05:00
Matthias Clasen
2daa7d1a53
x11: Stop using GdkScreen in api
...
This type is going away, so switch to using GdkX11Screen
everywhere.
2017-11-17 10:51:55 -05:00
Matthias Clasen
abb1d59d4e
Stop calling _gdk_screen_close
...
It does nothing useful, and is going away.
2017-11-17 10:51:55 -05:00
Matthias Clasen
fc0f7dc217
Remove gdkprivate.h
...
This is one-too-many private headers. Move the few
declarations here to gdkinternals.h.
2017-11-17 00:34:04 -05:00
Matthias Clasen
3f0d42f74b
Stop including gdkmain.h
...
It is empty now.
2017-11-17 00:16:09 -05:00
Matthias Clasen
6e94be3f50
Drop the error trap vfuncs
...
No longer used.
2017-11-17 00:08:24 -05:00
Matthias Clasen
90d502fdbd
x11: Fix error traps in the dnd code
...
The code for grabbing keys was using a generic
error trap call, and more concerning, it was forgetting
to pop the trap.
2017-11-16 23:56:11 -05:00
Matthias Clasen
d73898437f
x11: Add gdk_x11_display_set_program_class
...
The program class is a very X-specific concept.
There should be x11-backend api to deal with it.
2017-11-16 23:21:06 -05:00
Benjamin Otte
4c4e914806
gdk: Replace GDK_NONE with NULL
2017-11-15 19:07:17 +01:00
Benjamin Otte
41f9a174e2
x11: Remove special casing for GdkAtoms
...
This is in preparation for the GdkAtom removal
2017-11-15 19:07:17 +01:00
Benjamin Otte
fb94f79094
selection: Remove #ifdef WAYLAND
...
Instead, turn the functions into backend API:
gdk_broadway_display_add_selection_targets()
gdk_broadway_display_clear_selection_targets()
Remove the old per-backend functions, too.
2017-11-15 19:07:16 +01:00
Benjamin Otte
ed1b6a9bed
gdkwindow: Remove event_mask arguments from constructors
2017-11-13 23:41:38 +01:00
Matthias Clasen
5f73afae3d
x11: Remove mentions of GDK_WINDOW_ROOT
...
This backend never creates a window of this type, so no
need to check for it anymore.
2017-11-13 16:47:50 -05:00
Matthias Clasen
964cdaf3a3
x11: Stop creating a root window
...
We no longer need it.
2017-11-13 16:39:54 -05:00
Matthias Clasen
5999b1c73a
x11: Store toplevel list in GdkDisplay
...
This will let us get rid of the root window.
2017-11-13 16:32:34 -05:00
Matthias Clasen
8af666cb4f
x11: Remove another use of the root window
...
We just need the X root window here.
2017-11-13 16:09:47 -05:00
Matthias Clasen
7839e0d7d5
x11: Fix a crash
...
This was crashing the moment a second window is opened.
2017-11-11 12:07:11 -05:00
Matthias Clasen
bdb442be21
x11: Reduce uses of the root window
...
Avoid calling the get_root_window api that returns
a GdkWindow in some places, and instead use the X
root window directly.
2017-11-09 22:52:37 -05:00
Benjamin Otte
2177b191ba
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.
2017-11-07 12:24:43 +01:00
Matthias Clasen
20fab69c38
Drop gdk_display_get_root_window
...
This is no longer used.
2017-11-05 21:45:51 -05:00
Matthias Clasen
063db3630b
x11: Stop using gdk_display_get_root_window
...
Use the backend api for this.
2017-11-05 21:45:51 -05:00