2007-07-08 Vincent Untz * configure.in: * NEWS: version 2.19.5 2007-07-08 Vincent Untz 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 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 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 * 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 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 * 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 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 * 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 * 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 * libwnck/application.c: fix the doc API for wnck_application_get_icon() and wnck_application_get_mini_icon() 2007-06-24 Vincent Untz 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 * 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 * doc/libwnck-sections.txt: * doc/tmpl/workspace.sgml: forgot to commit the doc changes for the new API 2007-06-24 Vincent Untz * 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 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 * libwnck/class-group.h: * libwnck/private.h: move private WnckClassGroup functions to private.h 2007-06-24 Vincent Untz * libwnck/screen.c: (wnck_screen_get_workspaces): forgot the "Since:" for documentation 2007-06-24 Vincent Untz * 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 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 * libwnck/tasklist.c: (wnck_tasklist_update_lists): do not group together windows without a class. Fix bug #165075. 2007-06-23 Vincent Untz * libwnck/tasklist.c: (wnck_task_popup_menu): add a small assertion 2007-06-21 Vincent Untz * libwnck/tasklist.c: (wnck_task_popup_menu): add dragging of windows from a grouped task menu 2007-06-21 Vincent Untz Add a --transparent command line for test-tasklist Patch by Ryan Lortie . Fix bug #439417 * libwnck/test-tasklist.c: (window_expose_event): new (window_composited_changed): new (main): updated 2007-06-21 Vincent Untz Make the glowing effect use cairo. This makes it work with RGBA. Patch by Ryan Lortie . 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 * 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 * 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 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 * 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 * libwnck/wnckprop.c: (update_screen_props), (update_window_props), (print_screen_props): rework TODO list 2007-06-20 Vincent Untz * 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 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 * 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 * 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 * 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 * 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 * libwnck/wnckprop.c: add missing include. Fix bug #449186. 2007-06-19 Vincent Untz * 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 * 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 * 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 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 * 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 . Fix bug #339861 2007-06-18 Vincent Untz * libwnck/Makefile.am: install wnckprop 2007-06-18 Vincent Untz * libwnck/pager.c: (wnck_drag_clean_up): fix critical warning. Things were done in the wrong if () {} part. 2007-06-18 Vincent Untz * 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 * configure.in: post-release bump to 2.19.5 ==================== 2.19.4 ====================