2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* configure.in:
	* NEWS: version 2.19.4

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	Fix crash on multihead setups, when closing a window. The active
	window and previously active window are generally the same for all
	screens (since there's only one focus), and they could be invalid for
	one screen in some cases.
	Fix bug #447387

	* libwnck/screen.c: (wnck_screen_finalize): remove weak pointers
	(set_active_window): new, remove the weak pointer on the old active
	window and set a new weak pointer to the new active window so that our
	variable is reset to NULL when the active window is destroyed
	(set_previously_active_window): ditto for previously active window
	(update_client_list): use new functions, and first check if the closed
	window was previously active window (else, it could have been the
	active window, and then previously active window, which was wrong)
	(update_active_window): use new functions

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/pager.c: (wnck_drag_clean_up): fix commit for bug #420713.
	There was probably a crasher.

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	Be a bit more friendly to people who want to use our widgets through
	bindings.

	* libwnck/selector.c: (wnck_selector_class_init): add constructor
	(wnck_selector_constructor): new, move what we did in
	wnck_selector_new() here
	(wnck_selector_new): updated
	* libwnck/tasklist.c: (wnck_tasklist_class_init): add constructor
	(wnck_tasklist_constructor): new, move what we did in
	wnck_tasklist_new() here
	(wnck_tasklist_new): updated

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	Fix a crash when dragging a window to somewhere like another
	workspace/viewport. The original drag source widget might have been
	destroyed. We're now more solid against this, and use another drag
	source widget which lives longer.
	Fix bug #420713.

	* libwnck/pager.c: (wnck_update_drag_icon): return if the drag source
	widget is NULL
	(wnck_drag_source_destroyed): new, set the drag source widget to NULL,
	instead of keeping an invalid pointer
	(_wnck_window_set_as_drag_icon): connect to the finalization for
	drag_source. This way, we're more solid.
	* libwnck/selector.c: (wnck_selector_drag_begin): use a more long-lived
	widget for setting up the drag icon, ie the WnckSelector
	* libwnck/tasklist.c: (wnck_task_drag_begin): use a more long-lived
	widget for setting up the drag icon, ie the WnckTasklist

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/window.c: (update_state): only skip taskbar for transient
	windows if the window they're transient for actually exists.
	* libwnck/libwnck.h: fix compilation

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-sections.txt:
	* libwnck/libwnck.h: add missing includes of our public API

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/private.h:
	* libwnck/screen.c: (_wnck_screen_get_number): kill
	* libwnck/tasklist.c: (wnck_tasklist_realize): updated to use
	wnck_screen_get_number()

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-sections.txt:
	* doc/tmpl/tasklist.sgml:
	* doc/tmpl/util.sgml:
	* libwnck/application.c:
	* libwnck/class-group.c:
	* libwnck/pager.c:
	* libwnck/screen.c:
	* libwnck/screen.h:
	* libwnck/selector.c:
	* libwnck/tasklist.c:
	* libwnck/tasklist.h:
	* libwnck/util.c:
	* libwnck/util.h:
	* libwnck/window.c:
	* libwnck/window.h:
	* libwnck/workspace.c: add lots of Since: tags.

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/tasklist.c: (wnck_task_update_visible_state),
	(wnck_task_create_widgets): use gtk_widget_set_tooltip_text()

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/screen.c: (update_client_list), (update_workspace_list),
	(update_viewport_settings), (update_workspace_layout):
	* libwnck/window.c: (_wnck_window_create), (update_actions),
	(update_wintype), (update_transient_for), (update_wmclass),
	(update_frame_extents): initializes data to some good values before
	fetching information from hints, since the fetches might fail.

	* libwnck/screen.c: (update_workspace_list): be more solid against
	invalid values of _NET_NUMBER_OF_DESKTOPS

2007-06-18  Vincent Untz  <vuntz@gnome.org>

	* libwnck/tasklist.c: (wnck_tasklist_disconnect_screen): disconnect
	signal handlers for all windows
	(wnck_tasklist_disconnect_window): new
	Fix a crash that can happen when destroying the tasklist.

2007-06-16  Vincent Untz  <vuntz@gnome.org>

	Make wnck_pid_read_resource_usage() work for more X clients.
	Fix bug #150153.

	* libwnck/util.c: (_wnck_print_resource_usage): new, useful for
	debugging
	(wnck_xid_read_resource_usage): improve doc, add guard against bad
	argument, fix small bug where font and picture were swapped
	(wnck_pid_read_resource_usage_free_hash), (wnck_gulong_hash),
	(wnck_gulong_equal), (wnck_check_window_for_pid),
	(wnck_find_pid_for_resource_r),
	(wnck_pid_read_resource_usage_xres_state_free),
	(wnck_pid_read_resource_usage_fill_cache),
	(wnck_pid_read_resource_usage_start_build_cache),
	(wnck_pid_read_resource_usage_destroy_hash_table),
	(wnck_pid_read_resource_usage_from_cache): new stuff, to build a cache
	of PID<->XID associations, to help when an X client doesn't have a
	toplevel window that libwnck can see. This has the nice side-effect of
	removing a FIXME :-)
	(wnck_pid_read_resource_usage_no_cache): based on the old
	wnck_pid_read_resource_usage()
	(wnck_pid_read_resource_usage): updated

2007-06-16  Vincent Untz  <vuntz@gnome.org>

	Add API to get the name of the running window manager.
	Fix bug #448043.

	* doc/libwnck-sections.txt:
	* doc/tmpl/screen.sgml: updated
	* libwnck/screen.[ch]: (wnck_screen_class_init): add new
	window_manager_changed signal
	(wnck_screen_finalize): free wm name
	(wnck_screen_construct): we need to update information about the wm
	(_wnck_screen_process_property_notify): queue update for wm if the
	hint is _NET_SUPPORTING_WM_CHECK
	(update_wm): new, get the wm name
	(do_update_now): update the wm information
	(emit_wm_changed): new, emit window_manager_changed signal
	(wnck_screen_get_window_manager_name): new
	* libwnck/wnckprop.c: (print_props): print the name of the window
	manager running on the screen

2007-06-15  Vincent Untz  <vuntz@gnome.org>

	* libwnck/private.h: add _wnck_stock_icons_init()
	* libwnck/util.c: (_wnck_stock_icons_init): moved from xutils.c
	* libwnck/xutils.[ch]: (_wnck_stock_icons_init): moved away, since
	this has nothing to do in this file

2007-06-15  Vincent Untz  <vuntz@gnome.org>

	* libwnck/pager.c: (wnck_update_drag_icon): improve relative position
	of the drag icon. Fix bug #446531

2007-06-15  Vincent Untz  <vuntz@gnome.org>

	Add lots of g_return_if_fail() and g_return_val_if_fail() for our
	public API.

	* libwnck/application.c: (wnck_application_get_icon),
	(wnck_application_get_mini_icon):
	* libwnck/screen.c: (wnck_screen_calc_workspace_layout),
	(wnck_screen_free_workspace_layout):
	* libwnck/tasklist.c: (wnck_tasklist_set_button_relief),
	(wnck_tasklist_set_icon_loader),
	(wnck_tasklist_get_size_hint_list):
	* libwnck/util.c: (wnck_gtk_window_set_dock_type):
	* libwnck/window-action-menu.c: (wnck_create_window_action_menu):
	* libwnck/window.c: (wnck_window_get_window_type),
	(wnck_window_get_workspace),
	(wnck_window_transient_is_most_recently_activated),
	(wnck_window_set_icon_geometry):
	* libwnck/workspace.c: (wnck_workspace_get_number),
	(wnck_workspace_get_width), (wnck_workspace_get_height),
	(wnck_workspace_get_viewport_x), (wnck_workspace_get_viewport_y),
	(wnck_workspace_is_virtual):

2007-06-15  Vincent Untz  <vuntz@gnome.org>

	* doc/Makefile.am:
	* libwnck/pager.h:
	* libwnck/tasklist.h:
	* libwnck/util.h: add WNCK_DISABLE_DEPRECATED

2007-06-14  Vincent Untz  <vuntz@gnome.org>

	Migrate from GtkTooltips to GtkTooltip.

	* configure.in: require GTK+ 2.11.3
	* libwnck/tasklist.c: (wnck_tasklist_finalize): we don't have a
	GtkTooltips anymore
	(wnck_tasklist_new): ditto
	(wnck_task_update_visible_state): use the "tooltip-markup" property on
	the button
	(wnck_task_create_widgets): ditto

2007-06-14  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-sections.txt:
	* doc/tmpl/screen.sgml: update for new API
	* libwnck/screen.[ch]: (wnck_screen_get_number): new API
	* libwnck/workspace.c: small API doc update for
	wnck_workspace_get_number()
	* libwnck/wnckprop.c: (print_props): print the screen number
	Fix bug #169590, based on API suggestion by
	Mark McLoughlin <mark@skynet.ie>.

2007-06-14  Vincent Untz  <vuntz@gnome.org>

	* configure.in: require glib 2.13.0
	* libwnck/tasklist.c: (wnck_tasklist_sn_event): use
	g_timeout_add_seconds()

2007-06-12  Vincent Untz  <vuntz@gnome.org>

	* libwnck/class-group.c: (set_icon): use default sizes defined in
	private.h for icons instead of redefining the sizes here

2007-06-12  Vincent Untz  <vuntz@gnome.org>

	Use G_DEFINE_TYPE.

	* libwnck/application.c: (wnck_application_class_init),
	(wnck_application_finalize):
	* libwnck/class-group.c: (wnck_class_group_class_init),
	(wnck_class_group_finalize):
	* libwnck/pager-accessible-factory.c:
	(wnck_pager_accessible_factory_init):
	* libwnck/pager.c: (wnck_pager_class_init), (wnck_pager_finalize),
	(_wnck_pager_set_screen), (wnck_pager_unrealize),
	(wnck_pager_size_request), (wnck_pager_size_allocate),
	(wnck_pager_focus), (wnck_pager_get_accessible):
	* libwnck/screen.c: (wnck_screen_class_init),
	(wnck_screen_finalize):
	* libwnck/tasklist.c: (wnck_task_class_init), (wnck_task_finalize),
	(wnck_tasklist_class_init), (wnck_tasklist_finalize),
	(wnck_tasklist_size_allocate), (wnck_tasklist_realize),
	(wnck_tasklist_unrealize), (wnck_tasklist_expose):
	* libwnck/window.c: (wnck_window_class_init),
	(wnck_window_finalize):
	* libwnck/workspace-accessible-factory.c:
	(wnck_workspace_accessible_factory_init):
	* libwnck/workspace.c: (wnck_workspace_class_init),
	(wnck_workspace_finalize):
	Remove the get_type() functions, and update all the parent_class
	references.

2007-06-11  Vincent Untz  <vuntz@gnome.org>

	Make WnckPager and WnckTasklist always display the screen they're on.
	This deprecates wnck_pager_set_screen() and
	wnck_tasklist_set_screen(), and also makes the screen argument of
	wnck_pager_new() and of wnck_tasklist_new() useless.

	* libwnck/pager.c: (wnck_pager_finalize): don't disconnect from the
	screen. That's done in wnck_pager_unrealize() now.
	(_wnck_pager_set_screen): new helper to automatically set the screen,
	based on what wnck_pager_set_screen() was doing
	(wnck_pager_realize): document a bit, and set the screen if it wasn't
	set before
	(wnck_pager_unrealize): disconnect the screen
	(wnck_pager_size_request): set the screen if it wasn't set before
	(wnck_pager_set_screen): deprecate
	(wnck_pager_new): don't call wnck_pager_set_screen()
	(wnck_pager_set_layout_hint): set the screen if it wasn't set before.
	It's useful if users are calling set_n_rows() before the widget is
	shown.
	(wnck_pager_set_orientation): don't reset orientation in case of
	failure if we didn't know about our screen before we tried changing
	the layout (and thus didn't know about the real orientation)
	(wnck_pager_set_n_rows): don't reset n_rows in case of failure if we
	didn't know about our screen before we tried changing the layout (and
	thus didn't know about the real n_rows)
	(wnck_pager_connect_screen): we don't need the screen argument here
	(wnck_pager_disconnect_screen): small update
	* libwnck/tasklist.c: (wnck_tasklist_finalize): don't disconnect from
	the screen. That's done in wnck_tasklist_unrealize() now.
	(wnck_tasklist_realize): do what the wnck_tasklist_set_screen() used
	to do 
	(wnck_tasklist_unrealize): disconnect from the screen
	(wnck_tasklist_connect_screen): we don't need a screen argument here
	(wnck_tasklist_set_screen): deprecated
	(wnck_tasklist_new): don't call wnck_tasklist_set_screen()
	(wnck_tasklist_update_lists): don't do anything if the widget is not
	realized yet, which means we don't know about our screen.
	* libwnck/screen.c: (wnck_screen_get_workspace): add soft assertion
	(wnck_screen_get_workspace_index): add soft assertion
	(wnck_screen_get_workspace_neighbor): add soft assertion
	(wnck_screen_net_wm_supports): add soft assertion
	(wnck_screen_release_workspace_layout): add soft assertion

2007-06-11  Vincent Untz  <vuntz@gnome.org>

	If the pager can't set the layout, make it use the real layout of the
	screen.
	Fix second part of bug #445686.

	* doc/libwnck-sections.txt: updated for not-yet public API
	* doc/tmpl/pager.sgml: updated
	* libwnck/pager.c: (wnck_pager_realize): don't set the layout hint
	here
	(wnck_pager_set_screen): try to set the layout hint on the screen, and
	if it failed, gets the actual layout from the screen
	(wnck_pager_new): call wnck_pager_set_screen() instead of
	wnck_pager_connect_screen()
	* libwnck/screen.[ch]: change WnckScreen to use WnckLayoutCorner
	instead of ScreenCorner
	(wnck_screen_construct): ditto
	(wnck_screen_calc_workspace_layout): ditto, and mention that we should
	remove this from the API next time we break API
	(wnck_screen_free_workspace_layout): add comment to mention that we
	should remove this API
	(update_workspace_layout): use WnckLayoutCorner instead of ScreenCorner
	(_wnck_screen_get_workspace_layout): new private function to get the
	layout on the screen. Should probably be public in the future.
	(wnck_screen_try_set_workspace_layout): update a bit the doc, and add
	a guard againt bogus parameters

2007-06-11  Vincent Untz  <vuntz@gnome.org>

	* wnckprop.c: Glynn Foster said was Sun is okay to relicense the GPL
	code to LGPL. Add a comment about this.

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	Do not change the layout shown in the pager if the the pager couldn't
	update the layout hint.
	Fix bug #445686.

	* libwnck/pager.[ch]: (wnck_pager_set_layout_hint): return the
	information about the success/failure of the layout change
	(wnck_pager_set_orientation): reset the pager orientation if the
	layout could not be changed, and add a return value about the
	success/failure of the layout change
	(wnck_pager_set_n_rows): reset the pager number of rows if the
	layout could not be changed, and add a return value about the
	success/failure of the layout change

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	* libwnck/xutils.c: (_wnck_release_desktop_layout_manager): release
	the selection ownership for the desktop layout.

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	Improve a bit selection ownership for the desktop layout.

	* libwnck/xutils.c: (get_server_time): don't require a display
	argument since we're using gdk_display all over the place already,
	this makes possible to use _wnck_atom_get() instead of XInternAtom()
	(_wnck_free_layout_manager): new, to share code
	(_wnck_try_desktop_layout_manager): makes more robust wrt selection
	ownership, and stop stealing selection ownership from other processes.
	(_wnck_release_desktop_layout_manager): use
	_wnck_free_layout_manager()
	(_wnck_desktop_layout_manager_process_event): use
	_wnck_free_layout_manager()

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	Add support for _NET_FRAME_EXTENTS. This adds a new API.
	Fix bug #351055.

	* doc/libwnck-sections.txt: updated for
	wnck_window_get_client_window_geometry()
	* doc/tmpl/window.sgml: ditto
	* libwnck/window.[ch]: (_wnck_window_create): we need to update the
	information about frame.
	(wnck_window_get_client_window_geometry): new, returns the geometry of
	the window without the frame (that's the "real" X geometry)
	(wnck_window_get_geometry): changed to return the geometry of the
	window with its frame. That's a small change in the API meaning, but
	we're unstable, aren't we? :-)
	(wnck_window_is_in_viewport): take into account the frame of the
	window
	(_wnck_window_process_property_notify): check if we need to update the
	frame info
	(update_icon_name): move some code into xutils.c, to make this
	function more like update_name()
	(update_frame_extents): new, gets the frame info and emit a geometry
	changed signal if the info changed
	(force_update_now): 
	* libwnck/xutils.[ch]: (_wnck_get_icon_name): new, works like
	_wnck_get_name()
	(_wnck_get_frame_extents): new, gets the frame info from the
	_NET_FRAME_EXTENTS hint

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	* libwnck/window.c: (update_actions): add WNCK_WINDOW_ACTION_BELOW to
	the available actions if we couldn't get the list of available actions.

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	* doc/*: reorganize a bit some of the functions.

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	* libwnck/libwnck/wnckprop.c:
	* libwnck/Makefile.am: add a wnckprop utility, similar to xprop, but
	giving information about a WnckWindow. The output is nicer, although
	we can't show as much information as xprop. This will hopefully be
	useful for debugging. It's not installed when running "make install",
	but maybe we want to do this?
	Also this is GPL for now, because it uses code from the panel. We can
	ask Mark McLoughlin to relicense it if necessary.

2007-06-10  Vincent Untz  <vuntz@gnome.org>

	* libwnck/class-group.c:
	* libwnck/workspace.c: use &num; to put anchors in links for
	documentation. Thanks Matthias!

	* libwnck/workspace-accessible-factory.[ch]:
	* libwnck/workspace-accessible.[ch]:
	* libwnck/workspace.[ch]:
	* libwnck/xutils.[ch]: add /* vim: set sw=2 et: */

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* libwnck/*.[ch]: add /* vim: set sw=2 et: */

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* libwnck/screen.c:
	* libwnck/window.c: add some "Since: 2.20" items to doc.
	* libwnck/util.c: (set_dock_realize_handler): kill,
	(wnck_gtk_window_set_dock_type): deprecate, and make it use
	gdk_window_set_type_hint()
	* libwnck/xutils.[ch]: (_wnck_set_dock_type_hint): kill

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-docs.sgml:
	* doc/tmpl/util.sgml:
	* libwnck/application.c:
	* libwnck/pager.c:
	* libwnck/screen.c:
	* libwnck/selector.c:
	* libwnck/tasklist.[ch]:
	* libwnck/util.[ch]:
	* libwnck/window.c: woohoo, 100% symbol coverage for the API doc!

	* libwnck/util.[ch]: (wnck_xid_read_resource_usage),
	(wnck_pid_read_resource_usage): s/unsigned long/gulong/ to please
	gtk-doc.

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-docs.sgml:
	* doc/libwnck-sections.txt:
	* doc/tmpl/screen.sgml:
	* libwnck/application.c:
	* libwnck/class-group.c:
	* libwnck/screen.[ch]:
	* libwnck/util.h:
	* libwnck/window.c:
	* libwnck/workspace.c: writing API doc is fun!

	* libwnck/screen.c: (wnck_screen_get_workspace_index): updated for
	some clarity
	(wnck_screen_get_workspace_neighbor): ditto
	(wnck_screen_calc_workspace_layout): ditto, and if the number of
	workspaces is negative, calculate it
	(wnck_screen_net_wm_supports): make it really work on all screens, and
	not just the default screen
	* libwnck/window-action-menu.c: (wnck_create_window_action_menu):
	updated for some clarity

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-docs.sgml:
	* libwnck/application.[ch]:
	* libwnck/class-group.[ch]:
	* libwnck/pager.h:
	* libwnck/screen.[ch]:
	* libwnck/selector.h:
	* libwnck/tasklist.h:
	* libwnck/window.[ch]:
	* libwnck/workspace.[ch]: even more API documentation

2007-06-09  Vincent Untz  <vuntz@gnome.org>

	* doc/libwnck-docs.sgml:
	* libwnck/application.c:
	* libwnck/class-group.c:
	* libwnck/pager.c:
	* libwnck/screen.c:
	* libwnck/window.c:
	* libwnck/workspace.c: add more API documentation

2007-06-08  Vincent Untz  <vuntz@gnome.org>

	* doc/*:
	* libwnck/application.c:
	* libwnck/class-group.c:
	* libwnck/pager.[ch]:
	* libwnck/screen.c:
	* libwnck/selector.c:
	* libwnck/tasklist.[ch]:
	* libwnck/window.c:
	* libwnck/workspace.c: add more API documentation

2007-06-06  Vincent Untz  <vuntz@gnome.org>

	* libwnck/util.[ch]:
	* libwnck/window-action-menu.c:
	* doc/*: small improvements to documentation

2007-06-06  Vincent Untz  <vuntz@gnome.org>

	* doc/*: rework the documentation. They're now nicely organized, and
	don't contain non-useful stuff for libwnck users. A small FAQ and 100%
	symbol coverage are the next steps :-)

2007-06-05  Vincent Untz  <vuntz@gnome.org>

	* configure.in: post-release bump to 2.19.4

==================== 2.19.3.1 ====================