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

	* configure.in:
	* NEWS: version 2.19.5

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

	Make the window action menu work when more things change.

	* libwnck/window-action-menu.c: (update_menu_state): hide/show
	left/right/up/down items, refill the workspace submenu when needed,
	hide the unpin item and popdown the workspace submenu when there is
	only one workspace
	(workspace_changed_callback): new, update the menu when the window is
	on another workspace
	(screen_workspace_callback): new, update the menu when a workspace is
	created/destroyed
	(refill_submenu): new, from code from wnck_create_window_action_menu()
	(wnck_create_window_action_menu): always create left/right/up/down
	items, don't create the workspace submenu here, connect to
	workspace_changed, workspace_created and workspace_destroyed

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

	Add wnck_window_is_below()/make_below()/unmake_below()
	Fix bug #453982.

	* doc/libwnck-sections.txt:
	* doc/tmpl/window.sgml: update doc
	* libwnck/window.c: (wnck_window_init): init new field
	(wnck_window_class_init): update doc
	(wnck_window_is_below), (wnck_window_make_below),
	(wnck_window_unmake_below): new
	(update_state): handle below
	* libwnck/window.h: updated
	* libwnck/wnckprop.c: add --make-below and --unmake-below
	(validate_options), (update_window): handle new options
	(print_window): print below state, and add FIXME

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

	Keep a list of tasks that don't belong to any class group.
	Fix bug #453777. And complete fix for bug #165075.

	* libwnck/tasklist.c: (wnck_tasklist_init): initialize new
	windows_without_class_group field.
	(wnck_tasklist_finalize): add new assertion
	(wnck_tasklist_size_allocate): append the tasks from
	windows_without_class_group to the list of visible tasks
	(wnck_tasklist_remove): remove the task from
	windows_without_class_group when it's needed
	(wnck_tasklist_free_tasks): add assertion
	(wnck_tasklist_update_lists): if there's no class group for the
	window, add it to windows_without_class_group

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

	* libwnck/application.c: (update_name): add assertion to make it clear
	how this works.
	Makes it possible to close bug #77942, since people were not
	understanding this right.

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

	Fix bug #308552.

	* libwnck/tasklist.c: (wnck_tasklist_size_request): some clean up, and
	add a comment about wnck_task_size_allocated()
	(wnck_task_size_allocated): new, hide widget the image or label in the
	task button if the width is really small
	(wnck_task_create_widgets): connect to the size-allocate signal of the
	buttons

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

	* libwnck/tasklist.[ch]: (wnck_tasklist_init): updated
	(wnck_tasklist_set_minimum_width),
	(wnck_tasklist_get_minimum_width),
	(wnck_tasklist_set_minimum_height),
	(wnck_tasklist_get_minimum_height): deprecate those functions, since
	the new size algorithm makes them more or less useless now. So they
	don't do anything anymore.

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

	Fix size of buttons in tasklist changing with the text.
	Fix bug #310809.

	* libwnck/tasklist.c: (wnck_tasklist_get_button_size): new, get the
	ideal button size based on the icon size and a maximum number of
	characters for the text
	(wnck_tasklist_size_request): use wnck_tasklist_get_button_size() for
	the maximum button width, ignore the minimum width/height since
	they're useless and making things more complex than they should be,
	use the maximum size hint for the requested width
	(wnck_task_create_widgets): don't call gtk_label_set_max_width_chars()

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

	* libwnck/screen.c: (wnck_screen_change_workspace_count): call
	_wnck_error_trap_push() and _wnck_error_trap_pop() (mainly for the
	XSync() call in _wnck_error_trap_push())
	* libwnck/xutils.c: (_wnck_close), (_wnck_keyboard_move),
	(_wnck_keyboard_size), (_wnck_change_state),
	(_wnck_change_workspace), (_wnck_activate),
	(_wnck_activate_workspace), (_wnck_change_viewport),
	(_wnck_toggle_showing_desktop), (_wnck_gdk_pixbuf_get_from_pixmap),
	(_wnck_set_window_geometry), (_wnck_free_layout_manager),
	(_wnck_try_desktop_layout_manager),
	(_wnck_release_desktop_layout_manager): ditto.
	This is needed for wnckprop to correctly work.

	* libwnck/wnckprop.c: (timestamp_predicate),
	(get_xserver_timestamp): new, stolen from xutils.c
	(update_screen): we don't need the timestamp here
	(update_workspace): get a real xserver timestamp
	(update_window): ditto

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

	* libwnck/wnckprop.c: (validate_options): make "wnckprop --list" (and
	others action on the screen without a --screen option) work again,
	instead of having it force the user to select a window

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

	* libwnck/application.c: fix the doc API for
	wnck_application_get_icon() and wnck_application_get_mini_icon()

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

	Make it possible to print information about a class group or an
	application by selecting a window. Also, if no argument is specified
	for --screen or --workspace, use the default screen or the active
	workspace.

	* libwnck/wnckprop.c: force no conflict resolution for --activate
	(used in --workspace and --window)
	(option_parse): new, we need this since we have optional arguments for
	some options
	(validate_options): updated
	(handle_button_press_event): updated, since we'll return to main()
	which will handle everything
	(main): updated to use the active workspace if no number is specified
	after --workspace, and to let the user select a window for a class
	group or an application

	* doc/tmpl/workspace.sgml: forgot to update this

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

	* doc/libwnck-sections.txt:
	* libwnck/workspace.[ch]: (wnck_workspace_get_screen): add
	wnck_workspace_get_screen() API, for consistency

	* libwnck/wnckprop.c: add parameters to print information about a
	class group and an application,
	make --list list windows for a screen, workspace, class group or
	application. This removes --list-windows and friends.

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

	* doc/libwnck-sections.txt:
	* doc/tmpl/workspace.sgml: forgot to commit the doc changes for the
	new API

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

	* libwnck/window-action-menu.c: (item_activated_callback): updated to
	use wnck_workspace_get_neighbor()
	(wnck_create_window_action_menu): don't use
	wnck_screen_calc_workspace_layout(), and just check if neighbors exist
	with wnck_workspace_get_neighbor()

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

	Add new API to get layout information about a workspace.
	Also add a mode to wnckprop to interact with workspaces.

	* libwnck/workspace.[ch]: (wnck_workspace_get_layout_row),
	(wnck_workspace_get_layout_column), (wnck_workspace_get_neighbor): 3
	new API, that are useful for knowing more about the layout
	* libwnck/screen.[ch]: (wnck_screen_get_workspace_neighbor): deprecate
	this function, wnck_workspace_get_neighbor() is simpler and should be
	used instead
	(update_workspace_layout): if the number of rows (or columns) is not
	set on the screen, compute it using the number of columns (or rows)
	and the number of workspaces

	* libwnck/wnckprop.c: (set_mode): new
	(validate_options): updated
	(update_screen_props): remove the part about workspace activation
	(update_space_props): new
	(print_screen_props): indentation fixes
	(print_space_props): new
	(handle_button_press_event): updated
	(main): updated

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

	* libwnck/class-group.h:
	* libwnck/private.h: move private WnckClassGroup functions to
	private.h

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

	* libwnck/screen.c: (wnck_screen_get_workspaces): forgot the
	"Since:" for documentation

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

	* doc/libwnck-sections.txt:
	* doc/tmpl/screen.sgml:
	* libwnck/screen.[ch]: (wnck_screen_get_workspaces): new API, for
	consistency.
	Fix also two API docs.

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

	Cleanups and deprecate some WnckScreen functions that shouldn't have
	been made public when they were added.

	* doc/tmpl/tasklist.sgml:
	* libwnck/tasklist.c: improve a bit documentation
	(wnck_tasklist_class_init): add doc for the style properties
	(wnck_tasklist_size_request): remove spurious spaces
	(wnck_tasklist_free_tasks): move some assertions around, since it's a
	bit clearer
	(wnck_tasklist_update_lists): remove empty line
	(wnck_task_create_widgets): use a define instead of magic values for
	the padding
	* libwnck/screen.[ch]: deprecate wnck_screen_get_workspace_index() (we
	have wnck_workspace_get_number()),
	wnck_screen_calc_workspace_layout(),
	wnck_screen_free_workspace_layout() and WnckWorkspaceLayout
	* libwnck/util.c: remove useless TODO (since the function is already
	deprecated)
	* libwnck/workspace.c: update doc to not refer to
	wnck_screen_calc_workspace_layout()

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

	* libwnck/tasklist.c: (wnck_tasklist_update_lists): do not group
	together windows without a class. Fix bug #165075.

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

	* libwnck/tasklist.c: (wnck_task_popup_menu): add a small assertion

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

	* libwnck/tasklist.c: (wnck_task_popup_menu): add dragging of windows
	from a grouped task menu

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

	Add a --transparent command line for test-tasklist
	Patch by Ryan Lortie <desrt@desrt.ca>. Fix bug #439417

	* libwnck/test-tasklist.c: (window_expose_event): new
	(window_composited_changed): new
	(main): updated

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

	Make the glowing effect use cairo. This makes it work with RGBA.
	Patch by Ryan Lortie <desrt@desrt.ca>. Fix bug #439417

	* libwnck/tasklist.c: (glow_pixbuf): kill
	(wnck_task_button_glow): cairo love!
	(take_screenshot): just return the pixmap
	(copy_pixmap): new, copy the window of a widget in a pixmap
	(wnck_task_expose): updated

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

	* libwnck/tasklist.c: (draw_dot): killed
	(wnck_task_expose): don't draw small dots that people don't see, but
	use gtk_paint_tab()
	Fix bug #139523

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

	* libwnck/tasklist.c: (wnck_task_expose): only make the button glow if
	the task needs attention. It doesn't change anything in the end. But
	still (since there's no timeout involved), it's better :-)

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

	Stop the glowing effect in the tasklist for urgent windows after a
	while. This fixes bug #327870.
	Also, a new fade-max-loops controls the number of loops before this
	stops. If set to 0, then the effect is nearly disabled. This is
	hopefully okay for bug #356452.

	This also adds a needs_attention_time field to WnckWindow. This could
	be useful for other stuff, but it's private for now.

	* libwnck/window.c: (wnck_window_init): init new field
	(_wnck_window_get_needs_attention_time): new
	(transient_needs_attention): changed to return a WnckWindow
	(_wnck_window_or_transient_get_needs_attention_time): new
	(wnck_window_or_transient_needs_attention): updated
	(update_state): correctly set needs_attention_time
	(update_wmhints): ditto
	* libwnck/private.h: updated
	* libwnck/tasklist.c: (wnck_task_init): init new field
	(wnck_task_button_glow): get the fade-max-loops setting, and stop the
	glowing effect if we're past the number of loops
	(wnck_task_stop_glow): just do g_source_remove() since there's a
	destroy handler for the source
	(wnck_tasklist_class_init): add new fade-max-loops property
	(wnck_task_get_needs_attention): get the time when the task started
	needing attention
	(wnck_task_expose): updated a bit, and add missing
	wnck_task_button_glow()

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

	* doc/libwnck-docs.sgml:
	* libwnck/window.c:
	* libwnck/workspace.c: update docs to have indexes of symbols.
	* libwnck/wnckprop.c: add TODO

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

	* libwnck/wnckprop.c: (update_screen_props), (update_window_props),
	(print_screen_props): rework TODO list

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

	* libwnck/pager.c: (wnck_pager_window_get_workspace): add a new
	is_state_relevant argument
	(get_windows_for_workspace_in_bottom_to_top): updated
	(wnck_pager_queue_draw_window): updated
	(window_state_changed_callback): if the state change is about
	visibility in the pager, we need to force the redraw of the workspace
	* libwnck/wnckprop.c: (update_window_props): remove FIXME
	(print_screen_props): fix in commented code

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

	Add new features to wnckprop: it can now change properties of windows,
	but also of screens, and display information about a screen. And it's
	more l10n-friendly.

	* libwnck/screen.c: (wnck_screen_get): do not print a warning if
	there's no screen for the index
	* libwnck/window.c: improved a bit doc
	* libwnck/wnckprop.c: (validate_options): new
	(update_screen_props): new
	(update_window_props): new
	(print_screen_props): new
	(print_window_props): improved i18n
	(handle_button_press_event): updated
	(main): updated

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

	* libwnck/tasklist.c: (tasklist_include_window_impl): always show
	window needing attention. This worked with multiple workspace, but the
	code didn't seem to work when the user is using viewports (in compiz,
	eg). I can't test this change, but it should work.

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

	* libwnck/window-action-menu.c: (amd_free),
	(wnck_create_window_action_menu):
	* libwnck/xutils.c: (_wnck_icon_cache_new),
	(_wnck_icon_cache_free), (_wnck_free_layout_manager),
	(_wnck_try_desktop_layout_manager):
	Use GSlice.

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

	* libwnck/application.c: (wnck_application_init),
	(wnck_application_class_init), (wnck_application_finalize),
	(_wnck_application_destroy):
	* libwnck/class-group.c: (wnck_class_group_class_init),
	(wnck_class_group_init), (wnck_class_group_finalize),
	(_wnck_class_group_create), (_wnck_class_group_destroy),
	(get_name_from_applications), (get_name_from_windows), (set_name),
	(get_icons_from_applications), (get_icons_from_windows),
	(set_icon), (_wnck_class_group_add_window),
	(_wnck_class_group_remove_window), (wnck_class_group_get_windows),
	(wnck_class_group_get_res_class), (wnck_class_group_get_name),
	(wnck_class_group_get_icon), (wnck_class_group_get_mini_icon):
	* libwnck/pager.c: (wnck_pager_init), (wnck_pager_class_init),
	(wnck_pager_finalize), (wnck_pager_unrealize):
	* libwnck/screen.c: (wnck_screen_init), (wnck_screen_class_init),
	(wnck_screen_finalize), (wnck_screen_construct):
	* libwnck/selector.c: (wnck_selector_init),
	(wnck_selector_class_init):
	* libwnck/tasklist.c: (wnck_task_init), (wnck_task_finalize),
	(wnck_tasklist_init), (wnck_tasklist_class_init),
	(wnck_tasklist_finalize):
	* libwnck/window.c: (wnck_window_init), (wnck_window_class_init),
	(wnck_window_finalize):
	* libwnck/workspace.c: (wnck_workspace_init),
	(wnck_workspace_class_init), (wnck_workspace_finalize):
	Use g_type_class_add_private(), initialize all private fields in
	_init() functions, and make sure to clean up everything in _finalize()
	functions.

	Also, some more details:
	* libwnck/screen.c: (wnck_screen_finalize): fix a FIXME
	* libwnck/pager.c: (wnck_pager_unrealize): reset some more data
	* libwnck/class-group.c: code cleanups

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

	* libwnck/pager.c: (wnck_pager_draw_workspace): be a bit safer when
	calling cairo_rectangle()
	* libwnck/tasklist.c: (wnck_tasklist_size_allocate): add a FIXME
	(wnck_dimm_icon): add assertion
	(wnck_task_scale_icon): return if the pixbuf is NULL
	* libwnck/xutils.c: (get_cmap): fix small leak
	Those changes are inspired by the XFCE fork.

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

	* libwnck/wnckprop.c: add missing include. Fix bug #449186.

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

	* libwnck/tasklist.c: (wnck_task_popup_menu): add tooltip
	* rationales.txt: add link for icon name vs name in tasklist

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

	* libwnck/tasklist.c: (wnck_task_popup_menu): use icon names, to be
	consistent (to not have the text changed when tasks are being grouped)
	(wnck_task_update_visible_state): always set tooltip
	(wnck_task_compare_alphabetically): updated
	* libwnck/util.c: moved _wnck_window_get_name_for_display() to
	window.c where it makes more sense
	* libwnck/window.c: (_wnck_window_get_name_for_display): new
	* libwnck/private.h: move _wnck_window_get_name_for_display() around

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

	* libwnck/pager.c: (wnck_pager_query_tooltip): use name, not the icon
	name of the window
	* libwnck/private.h: updated
	* libwnck/util.c: (_wnck_window_get_name_for_display): new, since this
	is something that WnckSelector and WnckTasklist are both doing
	* libwnck/selector.c: (wnck_selector_get_window_name): kill
	(wnck_selector_window_name_changed),
	(wnck_selector_window_state_changed),
	(wnck_selector_create_window): use _wnck_window_get_name_for_display()
	* libwnck/tasklist.c: (wnck_tasklist_score_groups): use name if the
	windows don't have an icon name
	(wnck_task_popup_menu): updated
	(wnck_task_get_text): add an argument to get the text without the
	state indicators, updated to use _wnck_window_get_name_for_display()
	(wnck_task_update_visible_state), (wnck_task_create_widgets),
	(wnck_task_compare_alphabetically): updated

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

	Use a tooltip for the workspace switcher.
	Fix bug #125644.

	* libwnck/pager.c: (wnck_pager_init): set "has-tooltip" to TRUE
	(wnck_pager_class_init): set the query_tooltip handler
	(window_at_point): new, based on code from wnck_pager_button_press()
	(wnck_pager_button_press): updated
	(wnck_pager_query_tooltip): set a tooltip
	(wnck_pager_set_display_mode): set "has-tooltip" to FALSE if we
	display the name of the workspaces

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

	* libwnck/tasklist.c: (wnck_tasklist_size_request): use the last
	allocation as a basis for the fake allocation used to compute the size
	hints
	Based on patch by Joe Shaw <joe@joeshaw.org>. Fix bug #339861

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

	* libwnck/Makefile.am: install wnckprop

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

	* libwnck/pager.c: (wnck_drag_clean_up): fix critical warning. Things
	were done in the wrong if () {} part.

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

	* libwnck/pager.c: (wnck_pager_draw_workspace): use double instead of
	int to compute the x, y, width and height to pass to cairo. Improves
	the look of the pager a bit.

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

	* configure.in: post-release bump to 2.19.5

==================== 2.19.4 ====================