Commit Graph

17991 Commits

Author SHA1 Message Date
95cbc754d4 Setup ->impl_window on the root window 2009-04-02 10:15:27 +02:00
9e0899bd2f Add gdk_windowing_window_get_next_serial 2009-04-02 10:15:27 +02:00
19951c064e Remove gdk_keyboard_grab_info_libgtk_only which moved to the common code 2009-04-02 10:15:26 +02:00
defc779df5 Add serial argument to _gdk_windowing_got_event 2009-04-02 10:15:26 +02:00
32a070d09a Fix gdk_window_has_no_impl typo 2009-04-02 10:15:26 +02:00
ca1aeff814 Only set cursors on toplevel.
This fixes a problem where we used to set them on a native window, but we
never unset it becase when the pointer moved to another native window
we just set the cursor on that window. Always setting on the toplevel
fixes this.
2009-04-02 10:15:26 +02:00
e24c9e291d Switch motion hint emulation to be serial based.
For backends not supporting serials, just have
_gdk_windowing_window_get_next_serial return zero.
2009-04-02 10:15:26 +02:00
19cd4d6af8 Revert "Convert all pending X events in _gdk_events_queue"
This reverts commit 7cc15ec6ea1504133dfe6febbdb12615550bb966.

Its risky to convert all the events in a go like this, as it
increases the out-of-order issues. It also isn't a full solution
to the motion hint issue as it will only work for the events
we happen to convert. It would be better to use serials to
handle motion hinting.
2009-04-02 10:15:26 +02:00
6a0d317866 Keep track of the impl windows wrapper directly with a ref
This is needed so that the ->wrapper of the impl window doesn't
go away while there are virtual windows referencing the impl
window.
2009-04-02 10:15:26 +02:00
cf54a2c68e Ungrab keyboard if virtual window is hidden or destroyed 2009-04-02 10:15:26 +02:00
290de401a5 Move keyboard grab state tracking code to common code 2009-04-02 10:15:26 +02:00
e60af9d315 Move keyboard grab info to common code
This is the first stage in tracking keyboard grabs in the common code.
This lets us handle destroying or unmapping virtual window with a
keyboard grab.
2009-04-02 10:15:26 +02:00
c0ad534d81 Convert all pending X events in _gdk_events_queue
If we only convert the first then motion hint emulation won't
work since we don't see the next motion even until we've
fully handled this one.

However, this changes a behaviour that has been like this since
the mists of time. I don't know if it could cause other issues.
I haven't seen any yet though.
2009-04-02 10:15:25 +02:00
cb05af0a61 Implement GDK_POINTER_MOTION_HINT_MASK support 2009-04-02 10:15:25 +02:00
d267452bb7 New flicker flicker fixing approach
There was a performance problem with the old flicker fixing
approach. For moved windows we copied the window data to the double
buffer pixmap and then back to the window with the rest of the
expose data. In some cases the copy from window data to pixmap was
very slow because the pixmap was allocated in system memory and
the window in video memory.

The new approach is to delay all window moves and then replay them
after the expose has drawn to the double buffer pixmap but before
drawing it to the window. Furthermore, we remove all exposed areas
from the destination of the delayed moves so we won't copy something
just to then immediately draw over it.

This makes scrolling in firefox fast, and it makes tests/flicker not
show any (detectable) flicker.
2009-04-02 10:15:25 +02:00
3155fdcd41 gdk_window_process_updates_internal only needs to flush outstanding moves 2009-04-02 10:15:25 +02:00
4455db353f Split out the flushing of outstanding moves
Some places need to only flush the outstanding moves, split
this into gdk_window_flush_outstanding_move
2009-04-02 10:15:25 +02:00
a9fd3ae249 Flush any outstanding stuff in the window in non-buffered get_internal_paint_info case
We return the raw window drawable, so its likely the app will do some
weird stuff to it, like draw using non-gdk operations. We don't want
the app to see any half-drawn state, so flush everything.

This fixes a scroll issue in firefox at least.
2009-04-02 10:15:25 +02:00
815f0d7605 Clip exposed area to the visible region.
This avoids extra work, and it means we won't allocate large pixmaps
for double buffering.
2009-04-02 10:15:25 +02:00
7da48afcaa Don't allow native window > 65535 pixels 2009-04-02 10:15:25 +02:00
89f1cb5178 First cut at getting events working 2009-04-02 10:15:25 +02:00
08bc1864cc Attempt to implement draw_drawable with src = dest = window 2009-04-02 10:15:25 +02:00
2ea8ea2f0d Remove unused function _gdk_quartz_window_scroll 2009-04-02 10:15:24 +02:00
80c8976c28 Fix typos that broke loading without lazy symbol lookup 2009-04-02 10:15:24 +02:00
7ab3435a58 Remove autoreleasepool in drawRect, not necessary 2009-04-02 10:15:24 +02:00
f12a992be2 Only setup tracking rect for toplevels, we only want enter/leave for those 2009-04-02 10:15:24 +02:00
348abef6f2 Don't use drawable_get,release_context in _gdk_windowing_create_cairo_surface
This fixes a mismatch in save/release gstate for the CGContext. If
this function is ever used for pixmaps, we need to add support for
that, probably will have to do so soon.
2009-04-02 10:15:24 +02:00
edb35763a2 Get rid of all the synthesized crossing events except for ANCESTOR one on the toplevel 2009-04-02 10:15:24 +02:00
330e790fb2 Rename _gdk_quartz_events_send_map_events to ..._event 2009-04-02 10:15:24 +02:00
32555badb5 Clean up some whitespace 2009-04-02 10:15:24 +02:00
54e6878001 Add fill_crossing_event to be used soon 2009-04-02 10:15:24 +02:00
c3637ab20f Only send map events for toplevels 2009-04-02 10:15:24 +02:00
8e8aa53298 Add enter/leave notify to get_event_mask_from_ns_event now that those are handled like other events 2009-04-02 10:15:24 +02:00
da8666d745 Clean up the scroll support a little 2009-04-02 10:15:24 +02:00
25b311bac3 Make the various fill_*_event functions consistent 2009-04-02 10:15:24 +02:00
4c01ca7ddd Rework the event translation to look more like X11
Put the event in the queue with a pending flag, remove again if not
handled.
2009-04-02 10:15:24 +02:00
036e045d53 Update the window size after getting windowDidResize 2009-04-02 10:15:23 +02:00
e7eb75c0ca Remove the old workarond for broken tracking rects
The one that puts windows outside the screen and moves them in when
showing. It might not be needed anymore and the workaround doesn't
work with the client-side window branch anyway because the window is
already mapped when we get showed for some reason.
2009-04-02 10:15:23 +02:00
257dea55a7 Handle NULL event mask in _gdk_windowing_window_at_pointer 2009-04-02 10:15:23 +02:00
19b1f6a93a Fix bug from first patch round, get private from window, not from impl 2009-04-02 10:15:23 +02:00
e9d3f22ac8 Offset subviews with the parent's abs coordinate 2009-04-02 10:15:23 +02:00
546a1e4cd6 Change window check to quartz window check in gdkinput 2009-04-02 10:15:23 +02:00
5eacab593b Setup iface for queue_translation/antiexpose 2009-04-02 10:15:23 +02:00
0e1f51ecd1 Add quartz window check macro 2009-04-02 10:15:23 +02:00
a362be9979 Add stubs for queue_translation/antiexpose 2009-04-02 10:15:23 +02:00
cb8a3386c7 Implement _gdk_windowing_create_cairo_surface 2009-04-02 10:15:23 +02:00
f080825430 Remove gdk_display_pointer_is_grabbed and gdk_pointer_grab_info_libgtk_only 2009-04-02 10:15:23 +02:00
47ed2c553d Remove gdk_window_set_child_input_shapes 2009-04-02 10:15:23 +02:00
cede19dc65 Update more toplevel checks and update set_background and back_pixmap 2009-04-02 10:15:23 +02:00
68640f9e99 Add mask argument to _gdk_windowing_window_at_pointer, and update more checks 2009-04-02 10:15:22 +02:00