2007-06-18 Vincent Untz * configure.in: * NEWS: version 2.19.4 2007-06-18 Vincent Untz 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 * libwnck/pager.c: (wnck_drag_clean_up): fix commit for bug #420713. There was probably a crasher. 2007-06-18 Vincent Untz 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 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 * 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 * doc/libwnck-sections.txt: * libwnck/libwnck.h: add missing includes of our public API 2007-06-18 Vincent Untz * 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 * 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 * libwnck/tasklist.c: (wnck_task_update_visible_state), (wnck_task_create_widgets): use gtk_widget_set_tooltip_text() 2007-06-18 Vincent Untz * 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 * 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 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 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 * 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 * libwnck/pager.c: (wnck_update_drag_icon): improve relative position of the drag icon. Fix bug #446531 2007-06-15 Vincent Untz 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 * doc/Makefile.am: * libwnck/pager.h: * libwnck/tasklist.h: * libwnck/util.h: add WNCK_DISABLE_DEPRECATED 2007-06-14 Vincent Untz 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 * 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 . 2007-06-14 Vincent Untz * configure.in: require glib 2.13.0 * libwnck/tasklist.c: (wnck_tasklist_sn_event): use g_timeout_add_seconds() 2007-06-12 Vincent Untz * 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 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 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 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 * 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 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 * libwnck/xutils.c: (_wnck_release_desktop_layout_manager): release the selection ownership for the desktop layout. 2007-06-10 Vincent Untz 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 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 * 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 * doc/*: reorganize a bit some of the functions. 2007-06-10 Vincent Untz * 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 * libwnck/class-group.c: * libwnck/workspace.c: use # 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 * libwnck/*.[ch]: add /* vim: set sw=2 et: */ 2007-06-09 Vincent Untz * 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 * 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 * 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 * 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 * 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 * 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 * libwnck/util.[ch]: * libwnck/window-action-menu.c: * doc/*: small improvements to documentation 2007-06-06 Vincent Untz * 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 * configure.in: post-release bump to 2.19.4 ==================== 2.19.3.1 ====================