The X11 queue_translation operation uses NextRequest to get the serial
of the XCopyArea operation where the translation should end. However,
if the gc passed to gdk_draw_drawable has a non-flushed clip region
(which it commonly has now for the window clipping) then the next
operation will be the GC flush, not the XCopyArea.
To handle this right we now pass in the GC to be used to
queue_translation and ensure that it is flushed before calling
NextRequest().
This is more important in the client side windows world, as clip masks
may be used for clipping to non-native subwindows. This fixes a bug
in aisleriot where it uses masked pixbuf drawing and it ends up drawing
over the moving card subwindow.
Turns out pygtk build broke due to the argument addition to draw_drawable.
So, we now add a new vfunc for the new draw_drawable and are thus
backwards compat.
Last commit was bad, as it didn't clip against client side
children. This implements such clipping first and then
only clears the rectangles that need to be cleared.
Without this we can't draw to them, which caused problems for e.g.
gnome-settings-daemon clearing the background when the desktop
background changed.
Note: We don't actually clip away child windows from the root window,
the clip is just based on the size of the root window.
Use g_*gettext functions in gdk-pixbuf instead direct gettext
calls to benefit from the maybe-dont-translate functionality
in GLib. Also, replace a hand-rolled version by g_dpgettext2
in gtkbuilderparser.c. Fixes bug 585791.
We want to be able to map any window coordinate to a root coordinate, not
just the origin, because you can't rely anymore on a simple translation
from window coordinates to parent with offscreen windows. This lets
us e.g. pop up menus in the right place even if they are popped up from
a no-window widget.
This also removes the (unimplemented) possibility to change a window to
non-native. This seems generally not very useful, and there are some problems
with it, for instance if two "users" need a window to be native and then
one of the "users" doesn't need it anymore it can't change it back, because
it is unaware of the other reason the window is native.
Calling gdk_window_get_events() had the side-effect of letting
property change notification through to the application, which
was not intended. Now we keep StructureNotify and PropertyNotify
filtered out when they were before. Reported in bug 582003.
Change gdk_window_set_icon_name to allow using NULL to unset a
previously set icon title, so that the icon title tracks the normal
title again. Bug #535557.
When RandR 1.2 X driver doesn't return any usable multihead data the
monitors array is freed, without freeing the memory allocated by the array
elements before. Fixes bug #578354
It turns out that XCopyArea handling of obscured source regions is
buggy. It clears the destination area even outside the GC clip
region. We work around this for the pixmap->window case as that
can happen in gtk+ and is easy to work around.
X Bug report at:
http://lists.freedesktop.org/archives/xorg/2009-February/043318.html
To avoid drawing the window background of other windows in the area
where the window was we set the bg to none recursively. However, this
is quite costly it the moved window has many siblings. Furthermore, it
is uncommon that siblings overlap, so this cost has little gain.
So, we only set bg None on the parent, which means that there will
be some more flicker in the uncommon case of overlapping siblings.
After a successful grab/ungrab we wait for an xserver
roundtrip until we change the tracked grab in GdkDisplay.
This way that data is always up-to-date wrt events comming in.
Replace them with two new functions
_gdk_windowing_{before,after}_process_all_updates() that are called
around the guts of gdk_window_process_all_updates(). Add empty ones
for X11 (nothing more needed), quartz ones will be implemented next.
We use this in the added windowing function
_gdk_windowing_window_process_updates_recurse. The X11 implementation
just calls _gdk_window_process_updates_recurse directly, but at least
quartz will need to do some more work.
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.
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.
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.
If we do this there is a short window where we think there is a grab, and
if we generate a client side pointer motion event in this time (e.g. from
a window move) we could be delivering that according to the grab. But in
the Xserver that grab is infinitely short as it sends Press and then
Release immediately.
To see a problem from this, try using the scrollwheel to quickly scroll
in the testgtk list of buttons.
All the calls that unset private->parent failed if that was
not a native window (impl), instead we need to find the impl window
for the parent. Add some helper functions for this and use them.
For move/resize of child windows, we really need to recursively unset
on the parent, because moving the window could expose other native
children of the parent.
In do_shape_combine_region, only unset background if we're changing
the bounding shape (i.e. not the input shape)
move_region_on_impl() - doesn't need to copy anything if dx/dy == 0
Ensure that we queue an update when invalidating an empty area but we have outstanding moves
Temporarily unset background when moving native child windows
The history before this was kind of twisted as several different
approaches were tested, so that was all squashed into this initial
commit to hide the uninteresting changes and files that were later
removed.
* gdk/x11/gdkevents-x11.c:
* gdk/x11/gdkscreen-x11.[hc]: Another attempt at getting Xrandr
screen size changes right. Actually handle XRRScreenChangeNotify
events, and ignore root ConfigureNotify events if we are using
Xrandr. Only emit size-changed signals if the screen size changed,
and only emit monitor-changed signals if the monitors changed.
svn path=/trunk/; revision=22398
2009-02-19 Ray Strode <rstrode@redhat.com>
* gdk/x11/gdkscreen-x11.c
(monitor_compare_function), (init_randr13):
After using randr to get a list of monitors,
sort the list such that the biggest output
of "cloned" outputs comes first in the list.
This helps apps that don't generally handle
overlapping outputs to work better in randr
clone mode.
svn path=/trunk/; revision=22386
* configure.in: Check for Xrandr 1.3
* gdk/x11/gdkdisplay-x11.[ch]: Rename have_randr12 to have_randr13
and set if if we have randr 1.3
* gdk/x11/gdkscreen-x11.c: Go back to using randr for monitor
information, if we have XRRGetScreenResourcesCurrent.
svn path=/trunk/; revision=22327
Patch by David Alan Gilbert.
* gdk/gdkcursor.h: Add a GDK_BLANK_CURSOR cursor type.
* gdk/x11/gdkcursor-x11.c: Cache font cursors and named cursors.
* gdk/x11/gdkprivate-x11.h:
* gdk/x11/gdkcdisplay-x11.c: Remove cached cursors when a
display if finalized.
svn path=/trunk/; revision=22145
2009-01-03 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkscreen-x11.h:
* gdk/x11/gdkevents-x11.c (fetch_net_wm_check_window): Recheck
_NET_SUPPORTING_WM_CHECK every now and then to avoid getting
stuck on the id of a former wmcheck window that got reused by
another client (see RH bug 471927)
svn path=/trunk/; revision=22058
2008-11-30 Christian Dywan <christian@imendio.com>
Bug 559622 – GdkDevice test segfaults
* gdk/x11/gdkdisplay-x11.c (gdk_display_x11_dispose):
* gdk/x11/gdkinput.c (gdk_device_class_init), (gdk_device_dispose):
Free and reset device in dispose. Patch by Michael Natterer and myself.
svn path=/trunk/; revision=21834
2008-09-29 Matthias Clasen <mclasen@redhat.com>
Bug 107000 – Add signals to GdkKeymap for monitoring caps_lock, etc.
* gdk/gdk.symbols:
* gdk/gdkkeys.[ch]: Add a new GdkKeymap::state-changed signal, and
a gdk_keymap_get_caps_lock_state function.
* gdk/x11/gdkkeys-x11.c: Implement it here. For now, only emit
state-changed when caps lock lockedness changes.
* gdk/x11/gdkdisplay-x11.c: Also select for modifier lock status
changes in the XkbSelectEventDetails call.
svn path=/trunk/; revision=21545
2008-09-26 Matthias Clasen <mclasen@redhat.com>
Bug 552956 – Should check composite extension version
* gdk/x11/gdkdisplay-x11.c: Check that the version of the
composite extension is at least 0.4.
Patch by Owen Taylor
svn path=/trunk/; revision=21530
* gdk/x11/gdkinput.c: Add a finalize function for device objects,
and call XCloseDevice there.
* gdk/x11/gdkinput-x11.c:
* gdk/x11/gdkdisplay-x11.c: Move freeing of device objects to
the finalize function.
Patch by Caolan McNamara
svn path=/trunk/; revision=21529
Wed Sep 10 06:18:25 2008 Søren Sandmann <sandmann@redhat.com>
* gdk/x11/gdkscreen-x11.c (init_multihead): Don't use
XRRGetScreenResources() as there are performance issues with
it. Instead rely on the fact that the RandR information is
propagated through Xinerama as well.
svn path=/trunk/; revision=21334
+
+ * gdk/x11/gdkscreen-x11.c (_gdk_x11_screen_size_changed): Emit the
+ monitors changed signal when the screen size changes.
+
svn path=/trunk/; revision=21172
2008-08-05 Tor Lillqvist <tml@novell.com>
Bug 544684 - Win64 issue, window handles are assumed to be 32-bit
* gdk/gdkselection.h
* gdk/gdkselection.c
* gdk/win32/gdkselection-win32.c
* gdk/x11/gdkselection-x11.c: Change type of the requestor
window id parameter of gdk_selection_send_notify_for_display()
and gdk_selection_send_notify() from guint32 to
GdkNativeWindow.
* gdk/win32/gdkselection-win32.c: Add some guchar and char pointer
casts to get rid of gcc 4.4 warnings. Print GdkAtom values in
debugging output using the %p format.
svn path=/trunk/; revision=20991
2008-08-05 Tor Lillqvist <tml@novell.com>
Bug 544684 - Win64 issue, window handles are assumed to be 32-bit
* gdk/gdkdnd.h
* gdk/gdkdnd.c
* gdk/win32/gdkdnd-win32.c
* gdk/x11/gdkdnd-x11.c: Change return value and type of window id
from guint32 to GdkNativeWindow for
gdk_drag_get_protocol_for_display() and
gdk_drag_get_protocol(). This is not an API break on existing
platforms, as GdkNativeWindow has been guint32 for them
already.
svn path=/trunk/; revision=20988
2008-07-23 Matthias Clasen <mclasen@redhat.com>
Bug 544265 – GDK assumes XFIXES extension
* gdk/x11/gdkcursor-x11.c (_gdk_x11_cursor_update_theme):
Only call XFixes functions if the server has the extension.
Reported by Ian Turner.
svn path=/trunk/; revision=20901
2008-07-22 Frederic Crozat <fcrozat@mandriva.com>
* gdk/x11/gdkscreen-x11.c: Don't use RandR 1.2
if driver is detected as randr12_compat (ie X driver
is not RandR 1.2 compliant). Fixes multihead with
such drivers. Bug #543317.
svn path=/trunk/; revision=20893
2008-06-30 Cody Russell <bratsche@gnome.org>
* Practically everything changed.
Change all references of GIMP Toolkit (and variations of it)
to GTK+ Toolkit, showing no mercy at all to our beloved
ancestry. (#540529)
svn path=/trunk/; revision=20709
2008-06-30 Michael Natterer <mitch@imendio.com>
Some unrelated cleanups found while reviewing
the offscreen window patch:
* gdk/gdkwindow.c: add missing Since: 2.14 to the redirection
functions, fix some function header indentation, update
documentation of redirect_to_drawable().
* gdk/x11/gdkwindow-x11.c
* gdk/x11/gdkpixmap-x11.c: fix function header
formatting/indentation.
* gtk/gtkwidget.c: use I_() on "damage_event".
svn path=/trunk/; revision=20708
2008-06-27 Emmanuele Bassi <ebassi@gnome.org>
Abstract some GdkWindow API into an interface that the backends
must implement. (based on a patch by Alex Larsson)
* gdk/Makefile.am: Add gdkwindowimpl.[ch]
* gdk/gdk.symbols: Move symbols around.
* gdk/gdkinternals.h:
* gdk/gdkwindowimpl.[ch]: Move some of the GdkWindow API we require
from the backends to a GInterface that the backends should implement
instead.
* gdk/gdkwindow.c: Provide some of the GdkWindow public API as a
wrapper call around the GdkWindowImpl interface vtable.
* gdk/x11/gdkevents-x11.c:
* gdk/x11/gdkgeometry-x11.c:
* gdk/x11/gdkprivate-x11.h:
* gdk/x11/gdkwindow-x11.c:
* gdk/x11/gdkwindow-x11.h: Update the X11 backend to implement
the GdkWindowImpl interface.
svn path=/trunk/; revision=20695
* gdk/x11/gdkkeys-x11.c (_gdk_keymap_key_is_modifier): Protect
against XKB being stupid. Reported by Pedro Villavicencio.
svn path=/trunk/; revision=20413
2008-05-28 Michael Natterer <mitch@imendio.com>
* gdk/gdk.h: define __GDK_H_INSIDE__ around including all other
headers.
* gdk/gdkenumtypes.h.template
* gdk/gdk*.h: add single-include guards that #error out if
GTK_DISABLE_SINGLE_INCLUDES is defined and any of these files is
included individually. Also removed some redundant includes and
did some tiny trailing whitespace removal that's not worth to
commit separately.
* gdk/gdkprivate.h: include <gdk/gdk.h> instead of individual
files.
* gdk/win32/gdkwin32.h
* gdk/x11/gdkx.h: only include <gdk/gdkprivate.h> and remove all
other includes.
svn path=/trunk/; revision=20217
2008-05-25 Cody Russell <bratsche@gnome.org>
Bug 526635 - _gdk_window_get_toplevel handles FOREIGN windows
* gdk/x11/gdkwindow-x11.c (_gdk_window_get_toplevel): Check
!WINDOW_IS_TOPLEVEL instead of checking for GDK_WINDOW_CHILD,
so that we also take into account for foreign windows.
Report and patch by Nathaniel Smith.
svn path=/trunk/; revision=20166
2008-05-25 Cody Russell <bratsche@gnome.org>
Bug 525461 - Don't invalidate under an input-only child
* gdk/x11/gdkgeometry-x11.c (_gdk_window_move_resize_child):
Check that the window is not input-only before invalidating.
Report and patch by Owen Taylor.
svn path=/trunk/; revision=20165
2008-05-25 Cody Russell <bratsche@gnome.org>
Bug 524110 - Gdk should not assume reparenting WMs when retrieving
window frame extents
* gdk/x11/gdkwindow-x11.c (gdk_window_get_frame_extents):
Use _NET_FRAME_EXTENTS, if available. Patch by Danny Baumann.
svn path=/trunk/; revision=20164
2008-05-25 Cody Russell <bratsche@gnome.org>
Bug 522269 - Evince windows sometimes incorrectly unmaximized,
caused by missing flag initialization
* gdk/x11/gdkwindow-x11.c (set_initial_hints): Initialize
top-level private flags correctly. Patch by Danny Baumann.
svn path=/trunk/; revision=20163
2008-03-18 10:49:20 Tim Janik <timj@imendio.com>
* Applied pixmap redirection patch by Alexander Larsson with
various updates from:
Bug 318807 – Offscreen windows and window redirection.
Updates:
* updated docs to mention "Since 2.16".
* tests/testgtk.c: fixed snapshooting pixmap leak.
convert pixmap to pixbuf after snapshooting, to compensate for different
bit depths (occurs when snapshooting ARGB visuals and displaying the
pixmap in an RGB visual).
* gdk/gdkwindow.[hc]: made GdkWindowRedirect private.
* gdk/gdkwindow.c: removed damage idle handler, there's no aparent
need for it. enqueue damage notification as GDK_DAMAGE events
for each painting redirection at the start of the event queue.
consider windows with a redirection fully visible when invalidating,
and when updating from backing store. cleaned up stale variables.
* gdk/gdkevents.c: added _gdk_event_queue_prepend().
* gtk/gtkwidget.c: fixed coordinates for !NO_WINDOW widgets in
gtk_widget_get_snapshot; this fixes garbage snap offsets for gammacurve,
tree, drawingarea, text, handlebox, etc.
clip the redirected window hierarchy to window sizes, the visible
rectangles don't need to be taken into account here.
extended snapshooting docs to recommend gdk_pixbuf_get_from_drawable()
in case pixmap visuals could mismatch.
* gdk/x11/gdkwindow-x11.c: removed _gdk_windowing_window_get_visible_rect().
Base patch:
* tests/testgtk.c: add a "Snapshot" test to demonstrate snapshooting
of possibly obscured widgets into an offscreen pixmap.
* gtk/gtkwidget.[hc]: add GtkWidget::damage-event signal, add
gtk_widget_get_snapshot() to render a widget's contents to a GdkPixmap.
* gtk/gtkmain.c: dispatch GDK_DAMAGE events.
* gdk/gdkwindow.c: moved outer gdk_window_new() and gdk_window_reparent()
implementations here, adapted them to propagate redirects to child windows.
gdk_window_end_paint(): copy repainted window contents to redirection pixmap,
clipped to visible region. queue GDK_DAMAGE event delivery.
gdk_window_redirect_to_drawable(): install window painting redirection.
gdk_window_remove_redirection(): remove previously installed redirection.
* gdk/x11/gdkwindow-x11.c: added _gdk_windowing_window_get_visible_rect(),
renamed _gdk_window_new() and _gdk_window_reparent().
* gdk/gdkwindow.h: added GdkWindowRedirect* to GdkWindowObject, export
gdk_window_redirect_to_drawable() and gdk_window_remove_redirection().
* gdk/gdkevents.h: added GDK_DAMAGE event type.
* gdk/gdkevents.c: extract time and state from GDK_DAMAGE events.
* gdk/gdkinternals.h: added internal prototypes.
svn path=/trunk/; revision=20122
2008-05-06 Richard Hult <richard@imendio.com>
* gdk/gdkevents.c: (gdk_event_copy), (gdk_event_free):
* gdk/gdkinternals.h: Add private backend data to events, and
handle it when copying/freeing events. Currently only needed in
the quartz backend.
* gdk/directfb/gdkevents-directfb.c:
* gdk/quartz/gdkevents-quartz.c:
* gdk/win32/gdkevents-win32.c:
* gdk/x11/gdkevents-x11.c: (_gdk_windowing_event_data_copy)
(_gdk_windowing_event_data_free): Add stubs for X11, win32 and
directfb. Implement for quartz. Part of fixing bug #473822.
svn path=/trunk/; revision=20078
2008-01-15 Michael Natterer <mitch@imendio.com>
* gdk/gdkdisplay.h
* gdk/gdkdrawable.h
* gdk/gdkevents.h
* gdk/gdkpango.h
* gdk/gdkregion.h
* gdk/gdkrgb.h
* gdk/gdkwindow.h: made more struct pointer and array parameters
const. GDK should now be constified as far as possible without
breaking source compatibility. Includes some minor cleanup like
indentation and s/nfoo/n_foo/ (bug #508544).
* gdk/gdkdisplay.c
* gdk/gdkdraw.c
* gdk/gdkevents.c
* gdk/gdkpango.c
* gdk/gdkregion-generic.c
* gdk/gdkrgb.c
* gdk/directfb/gdkdisplay-directfb.c
* gdk/directfb/gdkwindow-directfb.c
* gdk/quartz/gdkdisplay-quartz.c
* gdk/quartz/gdkwindow-quartz.c
* gdk/win32/gdkdisplay-win32.c
* gdk/win32/gdkwindow-win32.c
* gdk/x11/gdkdisplay-x11.c
* gdk/x11/gdkwindow-x11.c: changed accordingly.
svn path=/trunk/; revision=19372
2008-01-04 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkinput-x11.c (_gdk_device_get_history): don't forget
to set the time in the returned GdkTimeCoords.
svn path=/trunk/; revision=19304
2007-12-27 Christian Persch <chpe@gnome.org>
* gdk/x11/gdkscreen-x11.c: (init_randr12): Fir the patch from
bug #504886 not to read unitialised memory.
svn path=/trunk/; revision=19247
2007-12-17 Matthias Clasen <mclasen@redhat.com>
* gtk/gtksettings.c: Add a gtk-im-module GTK setting
* gdk/win32/gdkproperty-win32.c:
* gdk/x11/gdksettings.c: ...and back it by a Gtk/IMModule X setting.
* gtk/gtkimmodule.[hc]:
* gtk/gtkimmulticontext.[hc]: When determining the default context,
look at the gtk-im-module setting, and listen for changes to the
setting. (#502446, Akira Tagoh)
svn path=/trunk/; revision=19195
Thu Dec 13 13:14:50 2007 Søren Sandmann <sandmann@redhat.com>
* Add RandR 1.2 support
- New monitors_changed signal - New API to get width/height of
monitors, and the name of the plug
svn path=/trunk/; revision=19173
2007-11-12 Alexander Larsson <alexl@redhat.com>
* gdk/x11/gdkselection-x11.c:
Avoid loading the ISO8859-1 iconv module.
We're already doing all the required work anyway.
This saves 4kb private dirty memory per gtk+ process
svn path=/trunk/; revision=18986
Thu Aug 23 15:32:09 2007 Tim Janik <timj@imendio.com>
* gdk/x11/gdkgeometry-x11.c (_gdk_window_process_expose): fix
X serial handling to cope with wraparounds and maintain referential
integrity when removing list nodes. based on a patch by Hui Wang,
fixes#461648.
svn path=/trunk/; revision=18693
2007-07-20 Ryan Lortie <desrt@desrt.ca>
* gtk/gtkwidget.c (gtk_widget_is_composited): add note that the
semantics of this call, when mixed with the new
gdk_window_set_composited(), will change in the future.
* gdk/x11/gdkevents-x11.c (gdk_event_translate): only grab Damage
events that belong to us.
svn path=/trunk/; revision=18506
2007-06-29 Matthias Clasen <mclasen@redhat.com>
* gdk/gdk.symbols:
* gdk/gdkkeys.h:
* gdk/x11/gdkkeys-x11.c (gdk_keymap_have_bidi_layouts): New
function to determine if keyboard layouts for both LTR and LTR
languages are in use. Refactor the direction caching code to
make this information available. (#451575, Behnam Esfahbod)
svn path=/trunk/; revision=18301
2007-06-29 Ryan Lortie <desrt@desrt.ca>
* tests/testgtk.c (create_composited_window): Connect the "destroy"
signal so that the 'window' pointer is set back to NULL (like for the
other examples).
* gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_finalize): Don't
destroy the Damage here. By finalize() XDestroyWindow has already
been called (and took the Damage with it).
Bug #452046.
svn path=/trunk/; revision=18290
Fri Jun 22 00:34:34 2007 Tim Janik <timj@gtk.org>
* gdk/x11/gdkdisplay-x11.c (gdk_x11_display_get_xdisplay): applied
patch from Mark Tiefenbruck to add missing return_if_fail, #449862.
svn path=/trunk/; revision=18215
2007-06-17 Xan Lopez <xan@gnome.org>
* gdk/x11/gdkgeometry-x11.c: replace GDK_WINDOW calls by cast to
GdkWindow. Patch by Tilman Sauerbeck from #2063820.
svn path=/trunk/; revision=18170
2007-06-06 Ross Burton <ross@openedhand.com>
* gdk/x11/gdkspawn-x11.c:
Set DISPLAY in the child process using g_setenv() instead of
constructing a new envp, which lets callers use child setup
functions which call putenv (#442617).
svn path=/trunk/; revision=18062
2007-06-05 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Check that
window_private is not NULL before using it. (#444351, David Ronis)
svn path=/trunk/; revision=18043
* gdk/x11/gdkwindow-x11.c (setup_toplevel_window): Make sure the
leader_window's WM_CLIENT_LEADER points to itself. #435028
svn path=/trunk/; revision=17762
2007-04-30 Tor Lillqvist <tml@novell.com>
Add functionality to set overall opacity of a top-level
window. (#405316)
* gdk/gdk.symbols: Add gdk_window_set_opacity.
* gdk/x11/gdkwindow-x11.c
* gdk/win32/gdkwindow-win32.c: Implement
gdk_window_set_opacity(). On X11 use the _NET_WM_WINDOW_OPACITY
property. On Win32 use SetLayeredWindowAttributes(LWA_ALPHA).
* gdk/gdkwindow.h: Declare gdk_window_set_opacity().
* gdk/x11/gdkscreen-x11.c (gdk_screen_get_rgba_colormap): Document
that this is not implemented in the Windows backend. Add reference
to gdk_window_set_opacity().
svn path=/trunk/; revision=17730
* gdk/x11/gdkdisplay-x11.c
(gdk_x11_display_broadcast_startup_message): New method to
marshall and send a Startup Notification message. (from #415070)
(gdk_notify_startup_complete_with_id): Use that
svn path=/trunk/; revision=17710
2007-04-10 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/xsettings-client.[hc]: Change the XSettingsWatchFunc
to return a Bool to indicate success. Update callers and
implementors. Based on a patch by Owen Taylor.
* gdk/x11/gdkevents-x11.c (gdk_xsettings_watch_cb): Don't
leak a reference to gdkwin.
svn path=/trunk/; revision=17592
2007-03-31 Elijah Newren <newren gmail com>
* gdk/x11/gdkwindow-x11.c (setup_toplevel_window,
gdk_x11_window_set_user_time):
Patch from Matthias to add support for the
_NET_WM_USER_TIME_WINDOW EWMH protocol; see #354213.
WARNING: This patch will make metacity <= 2.18.0 freeze on
workspace switch. This is due to a weird problem that should only
affect window managers using gdk in-process for decoration drawing
and which make an unsafe assumption relating to doing so (i.e. it
should only affect metacity). Upgrade your version of metacity if
you hit this bug.
svn path=/trunk/; revision=17574
2007-03-17 Chris Wilson <chris@chris-wilson.co.uk>
* gdk/x11/gdkvisual-x11.c (_gdk_visual_init):
Initialise nxvisuals to 0 in order to handle
XGetVisualInfo() failures gracefully. (#419171)
svn path=/trunk/; revision=17538
2007-03-14 Michael Natterer <mitch@imendio.com>
Make gtk_widget_set_extension_events() work on already realized
widgets (bug #379550, Tommi Komulainen)
* gdk/x11/gdkinput.c (gdk_input_set_extension_events): allow to be
called multiple times without leaking and work correctly when
already realized (don't rely on a configure event following).
* gtk/gtkwidget.c (gtk_widget_set_extension_events_internal): new
internal function which walks the GdkWindow tree and sets the
extension events on all windows that belong to the widget.
(gtk_widget_realize)
(gtk_widget_set_extension_events): use the new function.
svn path=/trunk/; revision=17515
2007-03-13 Emmanuele Bassi <ebassi@gnome.org>
Apply patch by Vytautas Liuolia for changing the startup
notification id on a window in the X11 backend. (#347375)
* gdk/gdk.h:
* gdk/gdkx.h:
* gdk/x11/gdkdisplay-x11.c: Add gdk_notify_startup_complete_wit_id()
and gdk_x11_display_get_startup_notification_id().
* gdk/gdkwindow.h:
* gdk/x11/gdkwindow-x11.c: Add gdk_window_set_startup_id().
* gtk/gtkwindow.h:
* gtk/gtkwindow.c: Add gtk_window_set_startup_id(), used to
change the startup notification id.
(gtk_window_class_init), (gtk_window_init),
(gtk_window_set_property): Add write-only "startup-id" property
to GtkWindow.
(gtk_window_realize): Set the startup notification id
on a GtkWindow if it's valid.
(gtk_window_map): If we have another valid startup notification
id then finish the notification process.
svn path=/trunk/; revision=17508
2007-03-08 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkasync.c (send_event_handler): Defer the callbacks
to an idle to avoid deadlock with xcb-ified libX11. (#413032,
Sebastian Dröge)
svn path=/trunk/; revision=17436
2007-02-15 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdmain-x11.c (_gdk_xgrab_check_button_event): Be more
careful when checking for ButtonRelease events that end implicit
grabs. (#386618, Christof Krüger)
svn path=/trunk/; revision=17304
2007-01-30 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_x11_window_move_to_current_desktop):
(gdk_x11_window_set_user_time): Be more careful about toplevel
possibly being NULL. (#402453, Sebastian Bacher)
svn path=/trunk/; revision=17236
2007-01-03 Matthias Clasen <mclasen@redhat.com>
* gtk/*.c:
* gdk/x11/*.c: Apply a patch by Chris Wilson to
avoid spurious valgrind warnings from XSendEvent()
calls. (#392532)
svn path=/trunk/; revision=17044
2007-01-02 Matthias Clasen <mclasen@redhat.com>
Try to fix#315732, reported by Luke Hutchinson:
* gdk/x11/xsettings-client.[hc]:
* gdk/x11/gdkdevents-x11.c: Don't assume that ref'ing a GdkWindow
will guarantee that it can be looked up in the xid hash later.
Also, use the nesting server grab function during the xsettings
client initialization. Finally, make xsettings client not
eat DestroyNotifys so that GDK can do its regular cleanup.
svn path=/trunk/; revision=17022
2006-12-10 Matthias Clasen <mclasen@redhat.com>
* configure.in: Check for crt_extern.h and _NSGetEnviron.
* gdk/x11/gdkspawn-x11.c: Fix compilation on Darwin where
environ is not available. (#384168, Min Sik Kim)
2006-10-09 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkkeys-x11.c (gdk_keymap_translate_keyboard_state):
Update the docs to state which out parameters may be NULL.
(#360870, Attilio Fiandrotti)
2006-09-25 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkdisplay-x11.c (gdk_display_x11_finalize): free
display->input_windows with g_free(), not g_object_unref()
(#357566, Tommi Komulainen).
2006-09-20 Behnam Esfahbod <behnam@zwnj.org>
* gdk/x11/gdkkeys-x11.c:
(get_direction): just check the first shift-level of keyboard
layout for RTL and LTR keysyms() (compliment to #116626)
2006-09-10 Matthias Clasen <mclasen@redhat.com>
* Commit a patch by Behdad to fix typos, omissions and other
errors in the symbol aliasing, and add checks for local PLT
entries. (#354687, Behdad Esfahbod)
2006-08-29 Matthias Clasen <mclasen@redhat.com>
* gdk/gdkwindow.h:
* gdk/gdk.symbols:
* gdk/directfb/gdkwindow-directfb.c (gdk_window_beep):
* gdk/win32/gdkwindow-win32.c (gdk_window_beep):
* gdk/quartz/gdkwindow-quartz.c (gdk_window_beep):
* gdk/x11/gdkwindow-x11.c (gdk_window_beep): Add a function
to beep on a window. For X11, implement this with
XkbBell. (#353455, Mariano Suárez-Alvarez)
2006-08-15 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_get_geometry_hints):
Use XAllocSizeHints to allocate the XSizeHints struct.
(#249285, David Baron)
2006-08-15 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (gdk_window_register_dnd):
* gdk/x11/gdkwindow-x11.c (gdk_window_set_decorations):
(gdk_window_set_functions): Zero out some stack-allocated
X structures, to avoid valgrind warnings about uninitialized
memory. (#349382, David Baron)
2006-07-27 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_get_type_hint): cast the
return value of XGetWindowProperty() correctly so we don't return
garbage type hints. Pointed out by Tommi Komulainen, patch taken
from https://maemo.org/bugzilla/show_bug.cgi?id=724
2006-07-19 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkx.h (gdk_font_lookup_for_display): When looking
up a font XID, add the XID_FONT_BIT. (#348001)
2006-06-04 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkfont-x11.c (_gdk_font_destroy): Remove the right
XID from the xid table. (#34327, Sampo Savolainen, Tim Janik)
Mon May 15 15:12:05 2006 Søren Sandmann <sandmann@redhat.com>
* gtk/gtklayout.c (gtk_layout_realize),
* gtk/gtkiconview.c (gtk_icon_view_realize),
* gtk/gtktreeview.c (gtk_tree_view_realize): Set the background of
the clip windows to NULL, since they are generally invisible and
don't have EXPOSURE set, which means they temp-unvlicker code
doesn't apply to them.
* gdk/x11/gdkgeometry-x11.c (_gdk_window_move_resize_child): Unset
the background of the parent window during resizing. Invalidate
the uncoered area of the parent window. Bug 341332.
Tue Apr 25 10:25:28 2006 Søren Sandmann <sandmann@redhat.com>
* tests/testgtk.c (create_alpha_window): Create 'composited' label.
* tests/testgtk.c (on_composited_changed): New function, change
the label to say whether the screen is composited or not.
* gtk/gtkwindow.c (gtk_window_on_composited_changed): When
composited status change, invalidate the window and propagate the signal;.
* gtk/gtkwindow.c (gtk_window_map): Set the appropriate type hint
if reset_type_hint is TRUE.
* gtk/gtkwindow.c (gtk_window_set_type_hint): If hint is one of
the old hints, store a shadow copy in the public window->type_hint
bitfield, otherwise set this field to normal. Set the private
field to the type hint.
* gtk/gtkwindow.c (gtk_window_init): Initialize priv->type_hint.
* gtk/gtkwindow.c (struct _GtkWindowPrivate): New field
"reset_type_hint" indicating whether the type hint needs to be
reset. New field type_hint containing a GdkWindowTypeHint.
* gtk/gtkwidget.c (propagate_composited_changed): New function to
propagate changes in composited status.
(gtk_widget_class_init): Add composited_changed signal.
* gtk/gtkwidget.h (struct _GtkWidgetClass): New signal composited-changed.
* gtk/gtkwidget.c (gtk_widget_is_composited): New function.
* gtk/gtktooltips.c (gtk_tooltips_draw_tips): Set transient for.
* gtk/gtktooltips.c (gtk_tooltips_force_window): Set the type hint
* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): Compute whether
the item belongs to a menubar. Set the type_hint appropriately
depending on the outcome.
* gtk/gtkmenu.c (gtk_menu_position): Set the default type hint here.
* gtk/gtkmenu.c (gtk_menu_attach_to_widget): connect to hierarchy
changed on the attach widget.
* gtk/gtkmenu.c (attach_widget_hierarchy_changed): New function to
set the transient_for property for menus.
* gtk/gtkdnd.c (set_icon_stock_pixbuf): Set the appropriate type hint.
* gtk/gtkcombo.c (gtk_combo_popup_list): Make the popup window
transient for the toplevel.
* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget): Set
transient-for, for the popup window.
* gdk/x11/gdkwindow-x11.c (gdk_window_get_type_hint): Support for
new window types.
* gdk/x11/gdkwindow-x11.c (gdk_window_set_type_hint): Add support
for new window types.
* gdk/x11/gdkscreen-x11.c (_gdk_x11_screen_process_owner_change):
New function called whenever the compositing manager comes and goes.
* gdk/x11/gdkscreen-x11.c (gdk_screen_is_composited): New function.
* gdk/x11/gdkscreen-x11.c
(_gdk_x11_screen_request_cm_notification, make_cm_atom,
check_is_composited): New functions
* gdk/x11/gdkevents-x11.c (gdk_event_translate): Call
_gdk_x11_screen_process_owner_change when an
XFixesSelectionNotifyEvent is received.
* gdk/x11/gdkdisplay-x11.c (gdk_display_open): Call
_gdk_x11_screen_request_cm_notification() on all screens.
* gdk/quartz/gdkscreen-quartz.c (gdk_screen_is_composited): Dummy
implementation.
* gdk/gdkscreen.c (gdk_screen_class_init): New signal,
'composited-changed'.
* gdk/gdkwindow.h: Add new EWMH window types.
* gdk/win32/gdkscreen-win32.c (gdk_screen_is_composited)
2006-03-29 Matthias Clasen <mclasen@redhat.com>
* gdk/gdk.symbols:
* gdk/gdkpixmap.h:
* gdk/win32/gdkpixmap-win32.c:
* gdk/x11/gdkpixmap-x11.c (gdk_pixmap_foreign_new_for_screen):
New function to allow wrapping a native pixmap without
a server roundtrip. (#334954, David Baron)
2006-03-04 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkinput-x11 (gdk_input_translate_coordinates):
Adjust the handling of min values for the x and y axes of
extended input devices (#324562, #142536, Denis Auroux and
Robert Ögren)
2006-02-27 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdksettings.c: map "gtk-touchscreen-mode" to the
"Gtk/TouchscreenMode" XSettings property, remove trailing
whitespace.
* gdk/x11/checksettings.c: #include <string.h> and sprinkled some
newlines.
Mon Feb 27 14:52:50 2006 Tim Janik <timj@imendio.com>
* gdkevents-x11.c:
* gdksettings.c: moved and renamed the gdk_settings_names and
gdk_settings_map.
* gdk/x11/checksettings.c: test program for the gdk_settings_map array.
* gdk/x11/Makefile.am: run checksettings as part of make check.
Thu Feb 23 13:28:21 2006 Tim Janik <timj@imendio.com>
* gdk/x11/gdkim-x11.c (_gdk_x11_initialize_locale): remove unconditional
warnings about missing X locale support. Gdk properly handles this
situation anyway.
2006-02-20 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkdisplay-x11.h (struct _GdkDisplayX11): adding boolean
have_shapes and have_input_shapes members fixes the build.
2006-02-19 Matthias Clasen <mclasen@redhat.com>
Support input shapes: (#331070)
* gdk/gdk.symbols:
* gdk/gdkdisplay.h:
* gdk/gdkwindow.h:
* gdk/x11/gdkdisplay-x11.c (gdk_display_supports_shapes)
(gdk_display_supports_input_shapes): Functions to determine
if a display supports shaped windows or input shapes.
* gdk/x11/gdkwindow-x11.c (gdk_window_input_shape_combine_region):
(gdk_window_input_shape_combine_mask):
(gdk_window_set_child_input_shapes):
(gdk_window_merge_child_input_shapes): Input shape versions
of the window shape API.
* gtk/gtk.symbols:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c (gtk_widget_input_shape_combine_mask):
New function to set an input shape on a widget.
2006-02-02 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkdnd-x11.c (_gdk_drag_get_protocol_for_display):
Make drops on the root window work again. (#145243, Andrew S. Dixon)
2006-01-28 Behdad Esfahbod <behdad@gnome.org>
* configure.in: If major.minor of required and available glib versions
are the same, add -DG_DISABLE_DEPRECATED to GLIB_CFLAGS. (bug #328617)
* */Makefile.am: Remove hardcoded -DG_DISABLE_DEPRECATED.
2006-01-25 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkcursor-x11.c (gdk_x11_display_set_cursor_theme): Only
set the cursor size if it is != 0.
* gtk/gtksettings.c (gtk_settings_class_init): Change the default value
of gtk-cursor-theme-size to 0, meaning "use default".
2006-01-19 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkprivate-x11.h (XID_FONT_BIT):
* gdk/x11/gdkfont-x11.c:
* gdk/x11/gdkxid.c: Use an unused high bit in the
XID to mark fonts in the global xid hash table.
* gdk/x11/gdkcursor-x11.c (update_cursor): Skip fonts
when iterating over the xid hash table, since calling
GDK_IS_WINDOW () on an GdkFont can cause a segfault.
(#327751, Ryan Lortie)
2006-01-11 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkwindow-x11.c (create_moveresize_window): Clean
up properly if the grab fails.
(finish_drag): Don't leak a reference to moveresize_window
here.
2006-01-11 Matthias Clasen <mclasen@redhat.com>
Allow falling back to another icon theme before
hicolor. (#325546, Rodney Dawes)
* gtk/gtksettings.c: Add a gtk-fallback-icon-theme setting.
* gdk/x11/gdkevents-x11.c: Map it to the XSetting Net/FallbackIconTheme.
* gtk/gtkicontheme.c: Consult the fallback icon theme before
looking in hicolor.
2005-12-05 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkevents-x11.c: map the new GtkSettings properties
"timeout-initial", "timeout-repeat", "color-scheme" and
"enable-enimations" to X settings.
2005-11-16 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkevents-x11.c (_gdk_events_uninit): new internal
function which destroys the display's event source. Also removes
the source from the global display_sources list and unrefs it.
* gdk/x11/gdkprivate-x11.h: declare the function.
* gdk/x11/gdkdisplay-x11.c (gdk_display_x11_dispose): call it
instead of half-destroying the source here.
2005-11-15 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkdisplay-x11.c (gdk_display_x11_finalize): destroy
display->xid_ht as late as possible (right before XCloseDisplay)
because it still needs to be around when the display's screens are
finalized. (#85715)
2005-11-10 Matthias Clasen <mclasen@redhat.com>
Don't corrupt odd keymaps (#316638, Kean Johnston)
* gdk/x11/gdkkeys-x11.c (set_symbol): Auxiliary function to
handle frobbing keymaps with odd numbers of syms/code.
* gdk/x11/gdkkeys-x11.c (update_keymaps): Use set_symbol() to
frob the keymap.
2005-11-10 Michael Natterer <mitch@imendio.com>
Applied patch from maemo-gtk that addresses many issues wrt
display migration and display closing (bug #85715).
* gdk/gdkdisplay.c (gdk_display_dispose): don't just set the
default display to NULL when it's closed. Instead set the most
recently opened display as new default (if one exists).
* gdk/gdkpango.c (on_renderer_display_closed): fixed signature
of this callback.
* gdk/gdkscreen.c (gdk_screen_dispose): check if the GCs still
exist before unrefing them.
* gdk/gdkwindow.c (_gdk_window_destroy_hierarchy): if the screen
is closed, allow destruction of the root window.
* gdk/x11/gdkdisplay-x11.c: moved some stuff from finalize() to
dispose(), free stuff that was leaked before.
* gdk/x11/gdkevents-x11.c (_gdk_x11_events_uninit_screen): check if
the xsettings_client still exists before destroying it.
* gdk/x11/gdkkeys-x11.c: added finalization and free the allocated
X resources.
* gdk/x11/gdkpixmap-x11.c: moved stuff from finalize() to new
dispose() implementation.
* gdk/x11/gdkscreen-x11.c: moved stuff from finalize() to
dispose() and check if it still exists before unrefing it. Set
their pointers to NULL/None *after* upchaining in dispose(),
because X11 implementations of members of the parent class still
need them for their own destruction.
* gdk/x11/gdkvisual-x11.c: removed finalize() implementation which
was g_error()ing when finalizing a visual.
* gtk/gtkclipboard.c (gtk_clipboard_finalize): don't use
get_clipboard_widget() because it would create the widget if it
doesn't exist. Use g_object_get_data() directly instead.
* gtk/gtktextdisplay.c (on_renderer_display_closed): fixed signature
of this callback.
2005-11-08 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Ignore
icons if they would make the request large enough to cause
Xlib to loose the connection. (#320909, Claudio Saavedra)
2005-10-25 Matthias Clasen <mclasen@redhat.com>
* gdk/x11/gdkxftdefaults.c (init_xft_settings): Make the
initialization of screen_x11->xft_rgba more explicit. (#319627,
Bogdan Nicula)
2005-10-24 Matthias Clasen <mclasen@redhat.com>
Add settings to hide the input method and Unicode control character
submenus in the context menus of GtkEntry and GtkTextView.
* gdk/x11/gdkevents-x11.c: Map GTK+ settings to X settings.
* gtk/gtksettings.c (gtk_settings_class_init): Declare GTK+ settings here.
* gtk/gtktextview.c (popup_targets_received):
* gtk/gtkentry.c (popup_targets_received): Use the settings here.
2005-09-26 Matthias Clasen <mclasen@redhat.com>
Fix#316871, reported by Dan Winship:
* gdk/gdkwindow.h (struct _GdkWindowObject): Add a shaped flag.
* gdk/x11/gdkwindow-x11.c (gdk_window_shape_combine_mask)
(gdk_window_shape_combine_region): Set it here.
* gdk/gdkwindow.c (gdk_window_invalidate_maybe_recurse): Don't
remove the child area for shaped windows.