2006-04-25 Elijah Newren * autogen.sh: Nuke the old version, copy one from gcalctool that uses gnome-autogen.sh. Seems to fix the translations-aren't-included-in-the-tarball problem. Fix from Rodney in IRC. 2006-04-25 Elijah Newren * configure.in: post-release version bump to 2.15.2 2006-04-25 Elijah Newren * NEWS: 2.15.1 release * configure.in: belated post-release version bump to 2.15.1 * src/Makefile.am: Include boxes.h so that control-center won't fail to build #339708. 2006-04-24 Elijah Newren * NEWS: 2.15.0 release 2006-04-20 Brian Pepple #337951. * po/LINGUAS: New file listing all supported languages. * configure.in: Use po/LINGUAS instead of including all languages directly in this file. See the wiki for more information: http://live.gnome.org/GnomeGoals/PoLinguas. 2006-04-19 Thomas Andersen * src/window-props.c (reload_transient_for): warn and ignore if transient_for is set to a non-top-level window. Fixes #335524. 2006-04-19 Björn Lindqvist * src/frames.c (struct CachedPixels, meta_frames_destroy, invalidate_cache, generate_pixmap, populate_cache, cached_pixels_draw, meta_frames_expose_event, meta_frames_paint_to_drawable): Replace while loops iterating over sequences with for loops. Also, replace the attributes in the CachedPixels struct with a list of four CachedFramePiece:s, this allows iteration over the four pixmaps instead of treating each one separately. Fixes #338359. 2006-04-18 Björn Lindqvist * makefile.am: Add boxes.{c,h} to libmetacity_private * src/theme-parser.c (check_expression): * src/theme-viewer.c (run_position_expression_tests): Use meta_rect (). * src/theme.c: Replace while loops iterating over sequences with for loops. * src/theme.c, src/theme.h (struct _MetaPositionExprEnv, meta_draw_op_draw, meta_draw_op_list_draw, meta_theme_draw_menu_icon): Use MetaRectangles in function prototypes instead of x, y, with, height ints where applicable. 2006-04-18 Kjartan Maraas * configure.in: Remove obsolete entry for no_NO * po/no.po: And the translation. 2004-04-17 Thomas Thurman * keybindings.c (count_bindings, rebuild_binding_table): * prefs.c (change_notify, screen_bindings, window_bindings, init_bindings, update_binding, find_and_update_list_binding, update_list_binding, meta_prefs_get_window_binding): Allow any keybinding pref to be specified either with , a string, or _list, a list of strings, or both. Fixes #164831. 2006-04-16 Elijah Newren Patch from Dan Sanders to fix #334899. * window.c (meta_window_new_with_attrs): Unminimize ancestors of new windows when mapped; this prevents e.g. confirmation windows from causing applications to appear locked when closing via the window list. 2006-04-15 Elijah Newren Patch from Dan Sanders to fix #335076. * src/core.c (meta_core_maximize, meta_core_toggle_maximize, meta_core_unmaximize): * src/window.c (meta_window_client_message): Raise windows on maximize/unmaximize. 2006-04-15 Elijah Newren * src/display.h: Patch from Andy Morum to fix the build with --disable-xsync. #336605 2006-04-14 Elijah Newren * HACKING: Include instructions on setting up a minimal building/testing environment 2006-04-14 Thomas Thurman Add a tabbing function, bound to alt-f6 by default, to cycle through the windows of the current application. Fixes #94682. * src/common.h: two new MetaGrabOpts values for group switching * src/display.c (ping_data_free, meta_display_in_grab_op, IN_TAB_CHAIN): adapt to new MetaGrabOpts * src/display.h: new enum value for MetaTabList for group switching * src/keybindings.c (meta_display_process_key_event): adapt to new MetaGrabOpts (process_tab_grab): adapt to new MetaGrabOpts, and use switch statement for cancelling instead of if statement * src/metacity.schemas.in: new keybindings * src/prefs.c, src/prefs.h: handle new keybindings * src/window.h: define META_WINDOW_IN_GROUP_TAB_CHAIN macro 2006-04-14 Elijah Newren * HACKING: Include reasons why gdk/gtk.h and core includes like display.h/window.h must be kept separate. Taken from a private email from Havoc. 2006-04-13 Alejandro Andres * README: Fixed broken links. #333303 Thu Apr 13 12:23:28 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_add_window): Check for both POPUP and DROPDOWN. 2006-04-13 Björn Lindqvist * src/async-getprop.c, src/async-getprop.h (async_get_property_handler, ag_task_get_reply_and_free): * src/testasyncgetprop.c (try_get_reply, run_speed_comparison): Change unsigned chars to chars. * src/display.h (struct MetaDisplay): * src/keybindings.c (reload_modmap): Change unsigned ints to ints. * src/screen.c (set_workspace_names) * src/stack.c (meta_stack_sync_to_server): * src/xprops.c (utf8_string_from_results, utf8_list_from_results, class_hint_from_results, meta_prop_get_values): Introduce casts. Add a number of casts and change signedness on a number of variables so that Metacity compiles with many fewer warnings. Fixes #336032. 2006-04-12 Elijah Newren Patch from Ron Yorston to add a focus_new_windows option. Default is 'smart' (focus by default but normal focus-stealing-prevention can kick in); 'strict' is current other choice (like 'smart' except that programs launched by the terminal will not be focused). Fixes remainder of #326159. Should also close #152004 and a bunch of others. * src/common.h: Add a MetaFocusNewWindows enum giving the current types allowed * src/display.h: Update docs on allow_terminal_deactivation to note that it is only relevant when focus_new_windows is 'strict' * src/metacity.schemas.in: add the new gconf key and explanation * src/prefs.[ch] (#define KEY_FOCUS_NEW_WINDOWS, static gboolean focus_new_windows, update_focus_new_windows, meta_prefs_init, change_notify, meta_prefs_get_focus_new_windows, meta_preference_to_string): Add all the normal preference handling stuff for this new focus-new-windows option. * src/window.c (window_state_on_map, meta_window_set_user_time): Don't focus windows launched from a terminal Mon Apr 10 16:44:51 2006 Søren Sandmann * src/c-screen.c (is_menu): Check if the window is a menu and make it 90% opaque in that case. * src/c-screen.c (claim_selection): Handle CM_Sn selection properly. * src/c-screen.c: Remove debug spew * src/screen.c (meta_screen_composite_all_windows): Remove debug spew 2006-04-10 Björn Lindqvist * display.c (meta_display_open, event_callback): * ui.c (meta_ui_get_double_click_timeout): Delete dead code that used to handle double click on the titlebar. Remove the attributes last_button_time, last_button_xwindow, last_button_num and is_double_click from MetaDisplay and the functions meta_ui_get_double_click_timeout() and meta_display_is_double_click() from their respective files. Fixes #337507. 2006-03-27 Gora Mohanty * src/metacity.schemas.in: * src/theme.c: Changes strings to make them more readable, and more translatable. Fixes #335720. 2006-04-02 Elijah Newren Fix constraints bug causing negative width windows and crashes. #336651 * src/constraints.c (constrain_partially_onscreen): Don't accidentally shove & resize the window by requiring more pixels to be onscreen than the size of the window. Fri Mar 31 16:44:56 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_unredirect): Release the GL window here. Disconect from the magnifier, not the stacker. Fri Mar 31 12:24:26 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_redirect): Only use magnifier when USE_MAGNIFIER is set. * src/compositor.c (meta_compositor_free_window): Only wobble when USE_WOBBLE is set. Fri Mar 31 12:13:21 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_redirect): Don't hardcode screen size. Thu Mar 30 17:01:12 2006 Søren Sandmann * src/compositor.c (struct MetaCompositor): Fix the memory corruption in a better way. Thu Mar 30 16:38:35 2006 Søren Sandmann * src/compositor.c (meta_compositor_begin_move): Fix an illegal write. Thu Mar 30 16:13:52 2006 Søren Sandmann * composite.c: Turn wobbling back on Add new explosion effect. 2006-03-29 Elijah Newren Fix grouping in the presence of ancestors; caught by Björn. #336184 * src/group.c (meta_window_compute_group): Use new meta_window_find_root_ancestor() function to get ancestor; for the computed group, use the ancestor's group instead of the ancestor itself * src/window.[ch] (meta_window_find_root_ancestor, meta_window_raise): split meta_window_find_root_ancestor() functionality of meta_window_raise() and make it available elsewhere 2006-03-29 Elijah Newren * rationales.txt: Add bugs about pointer warping; update raise-on-click ones. 2006-03-29 Thomas Thurman Abstract out the functions for setting/unsetting demands attention hint and avoid doing it when the window isn't obscured. Fixes the remainder of #305882. * src/window.c, src/window.h (meta_window_set_demands_attention, meta_window_unset_demands_attention): new functions to mark a window as needing or not needing the user's attention * src/window.c (meta_window_show, window_activate, meta_window_focus, meta_window_configure_request, meta_window_client_message): use the new set/unset demands attention functions. 2006-03-29 Björn Lindqvist * src/resizepopup.c: * src/resizepopup.h: * src/window.c (meta_window_refresh_resize_popup): Aggregate the x, y, width and height attributes of MetaResizePopup to one MetaRectangle rect attribute and update code using the MetaResizePopup struct. Fixes #335177. 2006-03-28 Elijah Newren * MAINTAINERS: New file. #335026. ;-) Tue Mar 28 09:57:26 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_add_window): Also check for overlay_window. * src/c-screen.c (meta_screen_info_redirect): Trap errors out of unredirect(). 2006-03-25 Thomas Thurman * src/window.c, src/window.h (update_net_wm_state, update_mwm_hints, update_wm_class, update_transient_for): deleted and moved into window-props.c (meta_window_new_with_attrs): added constructing field and four new initial properties (as above) (meta_window_recalc_features, meta_window_recalc_window_type): new functions * src/window-props.c (init_net_wm_state, reload_net_wm_state init_mwm_hints, reload_mwm_hints, init_wm_class, reload_mwm_class, init_transient_for, reload_transient_for): new functions, moved in from window.c (meta_display_init_window_prop_hooks): initialise new properties Closes #309567. 2006-03-25 Paolo Borelli * src/prefs.c: use g_str_has_prefix instead of a local copy of the function. 2006-03-16 Ray Strode Add patch from Elijah Newren to fix type for compositing_manager schema entry (bug 335901) * src/metacity.schemas.in: Change type from "boolean" to "bool" and default value from "FALSE" to "false" Wed Mar 22 13:16:48 2006 Søren Sandmann * src/compositor.c (meta_compositor_remove_window): Actually remove the window. * src/c-screen.c (meta_screen_info_remove_window): Only remove node if non-NULL Wed Mar 22 10:33:21 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_redirect): Put a square below the desktop stack. Mon Mar 20 11:50:44 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_redirect): Put the desktop into a magnifier. * src/c-screen.c (struct MetaScreenInfo): Add a CmMagnifier * src/c-screen.c (meta_screen_info_redirect): Move some of the gl window related stuff here. 2006-03-16 Soren Sandmann (sandmann@daimi.au.dk) * src/c-screen.c (meta_screen_info_set_target_rect): Put inside COMPOSIT_EXTENSIONS 2006-03-03 Thomas Thurman Always set _NET_WM_STATE when a window is shown or hidden, even if it wasn't mapped. Fixes #315142. * src/window.c (meta_window_hide, meta_window_show): call set_net_wm_state unconditionally 2006-03-16 Elijah Newren Add debugging information for edge resistance * src/edge-resistance.c (cache_edges): print out the edges that are being cached if in verbose mode, (meta_window_edge_resistance_for_move, meta_window_edge_resistance_for_resize): if edge resistance kicked in then print out a message about it * src/util.c: * src/util.h: Add META_DEBUG_EDGE_RESISTANCE to MetaDebugTopic enum list Thu Mar 16 14:55:18 2006 Søren Sandmann * src/c-screen.c (struct WindowInfo): Maintain the size of the window. Wed Mar 15 16:30:09 2006 Søren Sandmann * src/compositor.c (set_geometry): Use set_target_rect() instead of set_size(). * src/c-screen.c: Add set_target_rect() as a way of scaling windows. * src/window.c (meta_window_handle_mouse_grab_op_event): Turn updates on after a button release. * src/window.c (meta_window_move_resize_internal): Fix indentation. Wed Mar 15 11:34:54 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_add_window): Use unset_patch() instead of unset_geometry(). Tue Mar 14 11:57:46 2006 Søren Sandmann * src/compositor.c: Comment out wobbling * src/compositor.c (blow_up): remove this function * src/compositor.c (process_configure_notify): Uncomment set_size(). * src/c-screen.c (meta_screen_info_set_updates): When updates are true, set all the properties such as size and shape. * src/c-screen.c (meta_screen_info_add_window): Create a special WindowInfo structure for each window. * src/c-screen.c (meta_screen_info_set_size): Set size and output shape of the drawable node. 2006-03-13 Elijah Newren * README: * configure.in: Update to reflect that we're now targetting 2.15 development. 2006-03-12 Thomas Thurman * src/window-props.c (set_title_text): Mark a particular string for translation. #334332. 2006-03-06 Ryan Lortie * src/window.c (meta_window_free): Only unmaximise window before freeing if the window is actually maximised. #333563. Fri Mar 3 15:31:04 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_new): Update for libcm API change. Wed Mar 3 13:25:03 2006 Søren Sandmann * src/compositor.c, src/c-screen.[ch]: Split the ScreenInfo data structure into separate, new files c-screen.[ch]. * src/errors.c (x_error_handler): Forward foreign errors to foreign displays. * src/errors.c (meta_errors_register_foreign_display): Implement this function * src/errors.h: Add new meta_errors_register_foreign_display() Tue Feb 28 14:49:23 2006 Søren Sandmann * src/compositor.c: Put the windows in a stacker rather than do the traversing outselves. 2006-02-27 Elijah Newren Patch from Thomas Thurman to prevent setting cycle_windows to keybindings that won't work. #329676 * src/prefs.c (update_binding): Make sure that bindings which require a modifier key are set to a keybinding with one or else that the binding is reverted. * src/ui.[ch] (meta_ui_accelerator_name): New function 2006-02-27 Elijah Newren Patch from Thomas Thurman to work around buggy application grouping with transient windows. #328211 * src/group.c (meta_window_compute_group): Put transients in the same group with their parent, always. * src/window.c (update_transient_for): Update group too 2006-02-27 Elijah Newren * configure.in: Patch from Sylvain Bertrand to fix build issues with library search order. #330695. Sat Feb 25 14:50:17 2006 Søren Sandmann * src/window.c: Remove include of flash.h Sat Feb 25 11:46:14 2006 Søren Sandmann * src/display.c (meta_display_begin_grab_op): Call meta_compositor_begin_move if there is a compositor * src/compositor.c (meta_compositor_begin/update/end_move): Implement those functions. * src/spring-model.[ch]: New files Thu Feb 23 15:40:52 2006 Søren Sandmann * src/compositor.c (meta_compositor_manage_screen): Don't attempt to manage the screen if it already is managed. * src/compositor.c (meta_compositor_unmanage_screen): Synchronize the display. 2006-02-19 Thomas Thurman Removed "move to another workspace" menu when there are exactly two workspaces. Fixes #151183. * src/menu.c (meta_window_menu_new): clear META_MENU_OP_WORKSPACES bit when n_workspaces==2 Fri Feb 17 11:56:35 2006 Søren Sandmann * src/screen.c (meta_screen_free): Only uncomposite the screen if there is a compositor. * src/compositor.c (meta_compositor_new): Warn and fail if the server doesn't have composite Thu Feb 16 18:57:48 2006 Søren Sandmann * src/compositor.c: Fix the build when --enable-compositor is there. Thu Feb 16 15:54:48 2006 Søren Sandmann * src/compositor.c: Insert #ifdef's to make it build again Thu Feb 16 15:24:42 2006 Søren Sandmann * src/screen.c (meta_screen_composite_all_windows): New function. * src/prefs.[ch], src/metacity.schemas.in: Add new compositing_manager key. * src/display.c (prefs_changed_callback): Handle META_PREF_COMPOSITOR_MANAGER * src/display.c (event_callback): Only call meta_compositor_process_event() if there is in fact a compositor. * src/display.c (enable/disable_compositor): Add code to enable/disable compositor at runtime Wed Feb 15 18:42:03 2006 Søren Sandmann * src/compositor.[ch]: Add code to destroy compositor. Implement unmanage_screen() functionality. Wed Feb 15 14:47:50 2006 Søren Sandmann * src/compositor.c (meta_compositor_unminimize): Add unused wobbly unminimize animation by Kristian * src/compositor.c (meta_compositor_minimize): Add wobbly minimize animation by Kristian. * src/compositor.c: Add support for turning updates on and off. * src/window.c (meta_window_move_resize_internal): Use sync counter to make composited resizing tear free 2006-02-14 Elijah Newren Patch from Jens Granseuer to fix more build issues with gcc 2.95. #331166. * src/prefs.c (meta_prefs_init): Remove C99 style variable initiailization 2006-02-13 Elijah Newren * configure.in: post-release version bump to 2.13.144 2006-02-13 Elijah Newren * NEWS: 2.13.89 release 2006-02-13 Elijah Newren * src/keybindings.c (process_tab_grab): We had that prev_window code in multiple places and it was all identical. Let's just stick it in one place to make the function easier to read. 2006-02-13 Thomas Thurman * src/keybindings.c (process_tab_grab): Allow alt-escape to cancel alt-tabbing, and vice versa. Fixes #141425. 2006-02-11 Thomas Thurman Disable alt-f7 if a window can't be moved, and alt-f8 if it can't be resized. Fixes #328920. * src/keybindings.c (handle_begin_move, handle_begin_resize): check window->has_*_func before beginning operation 2006-02-11 Elijah Newren Add a man page for metacity. Original version taken from Debian (written by Thom May and Akira Tagoh) and updated by Luke Morton and Philip O'Brien. Necessary auto-fu supplied by Philip O'Brien. Fixes #321279. 2006-02-11 Elijah Newren * src/stack.h (enum MetaStackLayer): * src/stack.c (get_standalone_layer): actually use META_LAYER_TOP but just manually make it equal to META_LAYER_DOCK. Add a note point to the EWMH for why we do this. #330717 2006-02-11 Elijah Newren * src/window.c (enum GnomeWinLayer): remove this legacy cruft that we stopped using years ago 2006-02-10 Thomas Thurman Avoid a memory leak when checking which workspace(s) a window is on. Fixes #322059. * src/workspace.h (struct MetaWorkspace): * src/workspace.c (meta_workspace_new, meta_workspace_free): added list_containing_self member to MetaWorkspace * src/window.c (meta_window_get_workspaces): use window->workspace->list_containing_self instead of allocating (and leaking) such a list on the fly. 2006-02-09 Thomas Thurman * src/testboxes.c (test_regions_okay, test_clamping_to_region): add messages to explain that warnings are harmless Tue Feb 7 00:58:05 2006 Soeren Sandmann * src/compositor.c: Wrap fade code in #ifdef HAVE_COMPOSITE_EXTENSIONS Mon Feb 6 17:45:39 2006 Søren Sandmann * src/compositor.c: New fancy minimize animation. Fade windows in and out. 2006-02-03 Thomas Thurman * src/display.c (event_callback): produce warning when invalid events with no timestamp are received, rather than failing an assertion Thu Feb 2 17:58:22 2006 Søren Sandmann * compositor.c (process_map): update the pixmap. (update) print out framerate. (dump_stacking_order) new debug function. (meta_compositor_add_window) error trap fixes (MiniInfo): Make the minimize animation fade out. 2006-01-30 Elijah Newren * configure.in: post-release version bump to 2.13.89 2006-01-30 Elijah Newren * NEWS: 2.13.55 release 2006-01-30 Elijah Newren * src/display.[ch] (struct MetaDisplay), meta_display_open, meta_display_set_input_focus_window, meta_display_focus_the_no_focus_window): Track the active_screen, (event_callback): If the mouse enters a window on a different screen, activate the default window on the new screen. May need to be modified for click-to-focus; we'll wait for feedback. Fixes #319348. 2006-01-23 Elijah Newren * src/display.c (meta_display_check_threshold_reached): change the order of the ||'ed items in the if to avoid using an uninitialized value * src/prefs.c (meta_prefs_init): fix a couple uninitialized value problems 2006-01-21 Elijah Newren Patch from Christian Kirbach to prevent a critical warning crasher when switching themes. #327847. * src/theme.c (meta_theme_free): since themes are only constructed as needed and may be NULL, check for that before freeing theme hash tables 2006-01-21 Elijah Newren * src/common.h (enum MetaActionDoubleClickTitlebar): * src/frames.c (meta_frames_button_press_event): * src/prefs.c (action_double_click_titlebar_from_string): * src/metacity.schemas.in: Patch from Dick Marinus to add a minimize double-click-titlebar-action; slightly modified to also include a none action. #300210. 2006-01-20 Elijah Newren * configure.in: post-release version bump to 2.13.55 2006-01-20 Elijah Newren * NEWS: 2.13.34 release 2006-01-20 Elijah Newren * src/constraints.c (setup_constraint_info): fixed_directions is only meant for explicit user interactions; disable it for everything else. There are other bugs and improvements that could be made with fixed_directions that I should be filing too, but at least put a FIXME there for now--I'm so lame. Fixes #327822. 2006-01-20 Elijah Newren Avoid flashing when closing a maximized window. Fixes #317254. * src/window.c (unmaximize_window_before_freeing): new function that just fixes the net_wm_state and sends a configure_notify, (meta_window_free): use unmaximize_window_before_freeing() instead of meta_window_unmaximize() to avoid flicker 2006-01-20 Elijah Newren Fix unitialized value problem when in raise-on-click mode. Søren, #327572. * src/display.c (meta_display_check_threshold_reached): make function be a no op if raise_on_click!=FALSE * src/display.h (struct MetaDisplay): point out that grab_initial_[xy] and grab_threshold_movement_reached are only for raise_on_click==FALSE mode. 2006-01-20 Elijah Newren Patch from Søren to fix some reading-from-free'd-data errors. #327575 * src/edge-resistance.c (meta_display_cleanup_edges): store the edges in a hash table so that we can still read their values within the loop from the other array they are stored in, then free them all at the end. 2006-01-20 Elijah Newren Fix various initialization and default issues, especially for --disable-gconf. Make --disable-gconf actually work. #326661. * configure.in: Fix compilation with --disable-gconf * src/metacity.schemas.in: Add a note that if any defaults are changed in this file, src/prefs.c may need to be updated to reflect the change * src/prefs.c: set various static global vars to the right default value, (meta_prefs_init): get the titlebar_font and current_theme handled better when not using gconf, (struct MetaSimpleKeyMapping, screen_string_bindings, window_string_bindings): helper vars to allow some keybindings to work even without gconf, (init_bindings): initialize bindings for the without-gconf case too, (init_commands): make sure these are all NULL for the non-gconf case so that we don't access random memory, (init_workspace_names): just give these all a default name for the non-gconf case, (meta_prefs_change_workspace_name): actually change the name for the non-gconf case too 2006-01-20 Elijah Newren More careful error handling of values returned by GConf. Fixes #326615. * src/prefs.c (get_bool): new helper function, (meta_prefs_init): use get_bool to handle the case of a gconf key not existing, (update_cursor_size): sanity check for sane values 2006-01-20 Elijah Newren Prevent rapidly repeated visual bells from hanging metacity. Fixes #322032. * src/display.h (struct MetaDisplay): add a last_bell_time field, (XSERVER_TIME_IS_BEFORE_ASSUMING_REAL_TIMESTAMPS macro, XERVER_TIME_IS_BEFORE macro): add parentheses around usage of macro parameter * src/display.c (meta_display_open): initialize last_bell_time, (event_callback): don't allow more than one bell per second 2006-01-20 Elijah Newren * src/async-getprop.c: * src/common.h: * src/display.c: * src/eggaccelerators.c: * src/frames.c: * src/gradient.c: * src/iconcache.c: * src/keybindings.c: * src/metaaccellabel.c: * src/place.c: * src/prefs.c: * src/preview-widget.c: * src/screen.c: * src/session.c: * src/stack.c: * src/tabpopup.c: * src/theme-viewer.c: * src/theme.c: * src/window-props.c: * src/window.c: * src/workspace.c: * src/tools/metacity-window-demo.c: * src/wm-tester/test-gravity.c: * src/wm-tester/test-resizing.c: * src/wm-tester/test-size-hints.c: Patch from Kjartan Maraas to fix a lot of tiny issues (unused variable removal, making unused variables used again, correction of types passed/declared for printf arguments, removal of unneeded breaks and returns, dead code removal, dead code revival, renaming to prevent shadowed variables, declaring unexported functions as static) spotted by the intel compiler. #321439 2006-01-20 Elijah Newren Patch from Björn Lindqvist to fix #98340. * src/screen.c (meta_screen_ensure_tab_popup): Make sure an outline border is shown even if a window frame's width is 0. Also, correctly handle window outlines in showing desktop mode. Fri Jan 20 16:42:25 2006 Søren Sandmann * src/compositor.c: Make minimize animation update again. Thu Jan 19 18:05:47 2006 Søren Sandmann * src/compositor.c (meta_compositor_manage_screen): g_object_unref() rather than ws_region_unref(). Thu Jan 19 16:50:50 2006 Søren Sandmann * src/compositor.c: Port to changes in libcm Tue Jan 17 17:25:29 2006 Søren Sandmann * src/compositor.c: Port to changes in libcm. 2006-01-16 Elijah Newren * src/window-props.c: manually define HOST_NAME_MAX if not already defined to fix Solaris compilation issue. Caught by Damien Carbery, patch from Havoc. #326745 2006-01-16 Elijah Newren * configure.in: post-release version bump to 2.13.34 2006-01-16 Elijah Newren * NEWS: 2.13.21 release Mon Jan 16 11:55:20 2006 Søren Sandmann * src/compositor.c (meta_compositor_manage_screen): Really turn off draw-in-a-loop. 2006-01-15 Kyle Ambroff * src/workspace.c (focus_ancestor_or_mru_window): If no valid window is found in the MRU list, then set focus to the desktop window. (#317405) 2006-01-15 Elijah Newren Fix accidental overzealous focus holding by the terminal introduced by the original patch in bug 326159. Windows launched from panel icons, the panel menu, or global keybindings should get focus now. #326159. * src/display.c (meta_display_open, event_callback): * src/display.h (struct MetaDisplay): * src/keybindings.c (process_event): * src/window.c (meta_window_set_user_time): Add a new allow_terminal_deactivation field to MetaDisplay and use it to track whether the user's last action was interaction with the terminal or some outside action (global keybinding, clicking on a dock, etc.) likely to launch a new window. * src/window.c (window_state_on_map): Allow the focus switch from a terminal to something else if allow_terminal_deactiviation is true. * src/keybindings.c (handle_panel_keybinding): Remove some unneeded code. 2006-01-15 Elijah Newren Patch from Jens Granseuer to fix more build issues with gcc 2.95. #327050. * src/boxes.c (meta_rectangle_edge_cmp_ignore_type): * src/window.c (meta_window_show): Remove C99 style variable initiailization 2006-01-14 Elijah Newren * src/window.c (__window_is_terminal): Don't dereference a NULL string. Fixes #327013. 2006-01-14 Elijah Newren * src/compositor.[ch]: fix compilation when HAVE_COMPOSITE_EXTENSIONS is undefined. #326912 Fri Jan 13 16:37:26 2006 Søren Sandmann * src/compositor.c (update): Only update on damage events. 2006-01-13 Elijah Newren Patch from Damien Carbery. Fixes #326746. * src/util.c: explicitly #include Xlib.h to fix a compilation issue on Solaris. Fri Jan 13 14:40:19 2006 Søren Sandmann * configure.in: Add a dependency on libcm when building with compositor. * src/window.c (meta_window_hide): Make this function static. * src/window.c (implement_showing): Use meta_compositor_minimize() to do a weird minimize effect. * src/compositor.[ch]: Beginning of new GL based compositor. * src/screen.h (struct _MetaScreen): Add void pointer to compositor data. * src/screen.c (meta_screen_new): Remove obsolete compositor stuff; initialize compositor_data. Don't composite manage screen out of this function. * src/errors.c (x_error_handler): Check that display is non-NULL before using it. Add comment about how that can happen. * src/display.c (meta_display_{begin,end}_grab_op): Remove explicity damage of windows. * src/display.c (meta_display_open): Composite manage all the screens. 2006-01-11 Elijah Newren * src/textboxes.c (test_area, test_intersect, test_equal, test_overlap_funcs, test_basic_fitting, test_merge_regions, test_regions_okay, test_region_fitting, test_clamping_to_region, test_clipping_to_region, test_shoving_into_region, test_find_onscreen_edges, test_find_nonintersected_xinerama_edges, test_gravity_resize, test_find_closest_point_to_line): Replace __PRETTY_FUNCTION__ with G_STRFUNC, because lesser compilers don't support the former. Caught by Damien Carbery, fix suggested by Ray Strode. #326281. 2006-01-10 Elijah Newren * configure.in: post-release version bump to 2.13.21 2006-01-10 Elijah Newren * NEWS: 2.13.13 release 2006-01-10 Elijah Newren * src/bell.c: * src/boxes.c: * src/boxes.h: * src/constraints.c: * src/core.c: * src/display.c: * src/display.h: * src/edge-resistance.c: * src/frames.c: * src/keybindings.c: * src/main.c: * src/prefs.c: * src/prefs.h: * src/screen.c: * src/screen.h: * src/window.c: * src/window.h: Whoops, I forgot to keep my copyright info updated with my previous commits as Havoc had asked me to do. Doing that now... 2006-01-10 Elijah Newren Add a raise on click option, basically only because all the major distros are patching it in anyway. See #326156. * src/metacity.schemas.in: add the new gconf key and explanation * src/prefs.[ch] (#define KEY_RAISE_ON_CLICK, static gboolean raise_on_click, update_raise_on_click, meta_prefs_init, change_notify, meta_prefs_get_raise_on_click, meta_preference_to_string): Add all the normal preference handling stuff for this new raise-on-click option. * src/core.c (meta_core_show_window_menu): * src/display.c (event_callback, meta_display_begin_grab_op): * src/window.c (window_activate, meta_window_configure_request, ): Only raise the window if in raise_on_click mode. * src/display.c (meta_display_begin_grab_op, meta_display_end_grab_op, meta_display_check_threshold_reached): * src/display.h (struct MetaDisplay): * src/window.c (meta_window_handle_mouse_grab_op_event): if not in raise-on-click mode only raise on button release if the click didn't start a move or resize operation; needs a few extra MetaDisplay fields to handle this * src/core.c (meta_core_user_lower_and_unfocus): no need to do the MRU shuffling if not maintaining the stacking order == MRU order invariant * src/frames.c (meta_frames_button_press_event): * src/window.c (meta_window_begin_grab_op): remove an unneeded window raising that is already handled elsewhere 2006-01-10 Elijah Newren Don't "steal" focus from terminal windows for new window mappings as the difference in usage between terminals and other apps seems to suggest this difference in treatment. See #326159 for details, feedback welcome. * src/window.[ch] (__window_is_terminal): New function, currently an ugly hack and should be replaced by a new property set by applications if the behavior works to our liking, (window_state_on_map): don't transfer focus to new windows from terminals unless the new window is a transient of the focused terminal * src/keybindigns.c (handle_panel_keybinding): panel run dialog keybinding should be counted as an explicit transfer of focus to the new window, so override the don't-transfer-focus-from-terminals in this case 2006-01-09 Elijah Newren More thorough handling of source indication. Part of #326041. * src/window.c (window_activate): new function based off the old meta_window_activate but which also takes source indication into account, (meta_window_active): just call window_activate() with the necessary source indication to get the behavior wanted, (meta_window_client_message): check source indication too for _net_active_window messages * src/window.h (enum MetaClientType): convenience enum for source indication handling 2006-01-09 Elijah Newren Make the taskbar less flash happy and fix up some related stacking issues. #326035. * src/window.c (windows_overlap): new function, (meta_window_show): if a window is denied focus but doesn't overlap with the focus window there is no need to set the demands attention hint nor stack that window below the focus window, (meta_window_get_outer_rect): we're not modifying the window so declare it to be const 2006-01-09 Elijah Newren Fix window outline for minimized windows when using alt-esc. #325092. * src/display.c (meta_display_begin_grab_op): Specify the showing type of tabbing operation (Alt tab vs. alt-esc) in addition to the listing type of tabbing operation (docks vs normal windows) to meta_screen_ensure_tab_popup(). * src/display.h (enum MetaTabShowType): new convenience enum * src/screen.[ch] (meta_screen_ensure_tab_popup): require the showing type be specified in addition to the tabbing type; put the outline around the window instead of the icon when in alt-esc mode. 2006-01-09 Elijah Newren Fix reduced resources resize handling for windows with sizing or resizing constraints. #325774. * src/display.c (meta_display_end_grab_op): Provide constraints.c with the correct gravity information. 2006-01-09 Elijah Newren Be more strict about what is considered a valid region with partial struts. Fixes #322070. * src/boxes.[ch]: (meta_rectangle_expand_region_conditionally): new function behaving like meta_rectangle_expand_region() but which only does so when the width and height of the rectangles meet a certain threshold (replace_rect_with_list): Remove a compiling warning * src/constraints.c: (constrain_partially_onscreen): provide minimum thresholds in each direction for the size of the rectangles to avoid cases where only a single pixel thick layer of a window might be showing 2006-01-09 Elijah Newren * src/bell.c (meta_bell_notify_frame_destroy): Use the right function to remove the timeout so that we don't crash if removed at an inopportune time. Fixes #322031. 2006-01-09 Elijah Newren * src/edge-resistance.c (apply_edge_resistance): Remove the "pull-away" edge resistance. Fixes another of the zillions of issues covered in #321905. 2006-01-09 Elijah Newren * src/edge-resistance.c (apply_edge_resistance): Revert to the old edge resistance behavior for keyboard movement/resizing based resistance. Not only makes the code much simpler and shorter, but also fixes another of the zillions of issues covered in #321905. 2006-01-09 Elijah Newren * src/edge-resistance.c (apply_edge_resistance): Remove the timeout resistance at screen/xinerama edges for the whiners. Okay, it made sense. Fixes another of the zillions of issues covered in #321905. 2006-01-09 Elijah Newren * src/edge-resistance.c (apply_edge_resistance): Make extra timeout edge resistance apply even if one edge already offscreen. Fixes another of the zillions of issues covered in #321905. 2006-01-09 Elijah Newren Allow edge resistance at both sides of a window and also when edges don't overlap but are a single pixel away from doing so. Fixes one of the zillions of issues covered in #321905. * src/boxes.[ch]: (meta_rectangle_edges_align): new function to handle the overlap or off by one determining whether edge resistance should kick in for an edge. (meta_rectangle_edge_cmp_ignore_type): new function to sort edges but ignore the type so that e.g. left & right edges of windows can be used interchangeably. (meta_rectangle_edge_cmp): now uses meta_rectangle_edge_cmp_ignore_type() to do most the work and just adds an extra condition * src/edge-resistance.c: (find_nearest_position): use meta_rectangle_edges_align() now to determine whether the edges align, (apply_edge_resistance, apply_edge_resistance_to_each_side): have the edge resistance kick in if either the beginning or ending positions would cause overlap in the given direction -- fixes an uncommon but annoying corner case, (apply_edge_snapping, apply_edge_resistance_to_each_side, meta_display_cleanup_edges, stupid_sort_requiring_extra_pointer_dereference, cache_edges): mix edges from both sides now 2006-01-09 Elijah Newren Plug a few leaks. Fixes #309178. * src/main.c (main): remove an unneeded g_set_prgname() call, free some strings allocated by the GOptions parsing 2006-01-02 Elijah Newren Patch from Björn Lindqvist to fix a logic error. #322149. * src/window.c (update_resize): && should have been ||. 2006-01-02 Elijah Newren Patch from Jens Granseuer to fix build with gcc 2.95. #322622. * src/boxes.c (meta_rectangle_region_to_string, meta_rectangle_edge_list_to_string, fix_up_edges): * src/constraints.c (meta_window_constrain, setup_constraint_info, place_window_if_needed, constrain_maximization, constrain_fullscreen, constrain_size_increments, constrain_size_limits, constrain_aspect_ratio, do_screen_and_xinerama_relative_constrai, constrain_to_single_xinerama, constrain_fully_onscreen, constrain_partially_onscreen): * src/edge-resistance.c (find_nearest_position, apply_edge_resistance, apply_edge_resistance_to_each_side): * src/testboxes.c (test_clamping_to_region, test_clipping_to_region, test_shoving_into_region): * src/window.c (meta_window_new_with_attrs, meta_window_apply_session_info, meta_window_resize, meta_window_resize_with_gravity, meta_window_configure_request): Remove C99 style variable initiailization 2006-01-02 Elijah Newren * configure.in: post-release version bump to 2.13.13 2006-01-02 Elijah Newren * NEWS: 2.13.8 release 2005-12-27 Elijah Newren Make the workspace switcher work with dual-head (non-xinerama) setups. Fixes #319423. * src/display.c (meta_display_open, event_callback, meta_display_focus_the_no_focus_window): * src/display.h (struct MetaDisplay, meta_display_focus_the_no_focus_window): * src/keybindings.c (primary_modifier_still_pressed): * src/screen.c (meta_screen_new): * src/screen.h (struct MetaScreen): * src/window.c (meta_window_new_with_attrs, meta_window_show): * src/workspace.c (meta_workspace_focus_default_window): Replace display->no_focus_window with a no_focus_window for each screen. * src/display.[ch] (meta_display_xwindow_is_a_no_focus_window, event_callback): * src/window.c (meta_window_new_with_attrs): New utility function, meta_display_xwindow_is_a_no_focus_window(), for checking if the given xwindow is a no_focus_window for one of the screens. 2005-12-27 Elijah Newren * src/tabpopup.c (meta_ui_tab_popup_new): since the title is going to be treated as markup, escape it. Fixes #324846. 2005-12-13 Kang Jeong-Hee * src/compositor.c: replace old call to width and height of MetaScreen struct with rect.width and rect.height. Now compile ok. * src/delete.c: make an int variable into unsigned int. Now compile warning has gone. 2005-12-12 Elijah Newren * configure.in: post-release version bump to 2.13.8 2005-12-12 Elijah Newren * NEWS: 2.13.5 release 2005-12-12 Elijah Newren * src/window.c (update_net_frame_extents): make the debugging message actually correspond to the code. Patch from Björn Lindqvist. Fixes #322051. 2005-11-29 Kjartan Maraas * src/screen.h: Make the wireframe a bit slimmer. Closes bug #320051. 2005-11-24 Davyd Madeley * src/window-props.c: display hostname in titlebar for remote X clients. Closes bug #322202. 2005-11-22 Elijah Newren * configure.in: post-release version bump to 2.13.5 2005-11-22 Elijah Newren * NEWS: 2.13.3 release 2005-11-22 Elijah Newren Don't allow removing a window from maximized or fullscreened state to place the titlebar under the top panel. Fixes #322075. * src/display.c (handle_net_moveresize_window): fix up previous comments now that I know a little more, modify the code just slightly to clarify that this is NOT a manual user move/resize operation * src/window.c (meta_window_unmaximize, meta_window_unmake_fullscreen, meta_window_shove_titlebar_onscreen): don't claim that these are manual user move/resize operations 2005-11-21 Elijah Newren * src/constraints.c (constrain_partially_onscreen): Relax the partially onscreen constraint to allow the titlebar to touch the bottom panel in order to make the new constraints code function the same as the old version. Fixes #322071. 2005-11-21 Elijah Newren * src/constraints.c (place_window_if_needed): When updating the xinerama due to placement, update which maximal/spanning rect set to use as well. Fixes #322068. 2005-11-21 Elijah Newren * doc/strut-and-related-updating.txt: It took me a little while to figure out how struts & workareas are updated and to learn what all the related functions were used for so I thought I'd clean up my notes and make them available. This will probably be more useful now since regions and edges are also computed and stored at the same time as the workareas. 2005-11-20 Elijah Newren * src/constraints.c (place_window_if_needed): compute the frame geometry due to maximization only after actually maximizing. Fixes #321902. 2005-11-21 Davyd Madeley * src/edge-resistance.c (meta_display_compute_resistance_and_snap): Use GPOINTER_TO_INT() macro instead of cast to allow compilation on 64-bit architectures without warning. 2005-11-19 Elijah Newren * src/edge-resistance.c (apply_edge_resistance): differentiate between movement towards an edge and movement away from one. Pick smaller constants for movement away from an edge. 2005-11-19 Elijah Newren * configure.in: post-release version bump to 2.13.3 2005-11-19 Elijah Newren * NEWS: 2.13.2 release 2005-11-18 Elijah Newren Merge of all the changes on the constraints_experiments branch. This is just a summary, to get the full ChangeLog of those changes (approx. 2000 lines): cvs -q -z3 update -Pd -r constraints_experiments cvs -q -z3 diff -pu -r CONSTRAINTS_EXPERIMENTS_BRANCHPOINT ChangeLog Bugs fixed: unfiled - constraints.c is overly complicated[1] unfiled - constraints.c is not robust when all constraints cannot simultaneously be met (constraints need to be prioritized) unfiled - keep-titlebar-onscreen constraint is decoration unaware (since get_outermost_onscreen_positions() forgets to include decorations) unfiled - keyboard snap-moving and snap-resizing snap to hidden edges 86644 - resize should have a shift option like move does 109553 - gravity w/ simultaneous move & resize doesn't work 113601 - maximize vertical and horizontal should toggle and be constrained 122196 - windows show up under vertical panels 122670 - jerky/random resizing of window via keyboard[2] 124582 - keyboard and mouse snap-resizing and snap-moving erroneously moves the window multidimensionally 136307 - don't allow apps to resize themselves off the screen (*cough* filechooser *cough*) 142016, 143784 - windows should not span multiple xineramas unless placed there by the user 143145 - clamp new windows to screensize and force them onscreen, if they'll fit 144126 - Handle pathological strut lists sanely[3] 149867 - fixed aspect ratio windows are difficult to resize[4] 152898 - make screen edges consistent; allow easy slamming of windows into the left, right, and bottom edges of the screen too. 154706 - bouncing weirdness at screen edge with keyboard moving or resizing 156699 - avoid struts when placing windows, if possible (nasty a11y blocker) 302456 - dragging offscreen too restrictive 304857 - wireframe moving off the top of the screen is misleading 308521 - make uni-directional resizing easier with alt-middle-drag and prevent the occasional super annoying resize-the-wrong-side(s) behavior 312007 - snap-resize moves windows with a minimum size constraint 312104 - resizing the top of a window can cause the bottom to grow 319351 - don't instantly snap on mouse-move-snapping, remove braindeadedness of having order of releasing shift and releasing button press matter so much [1] fixed in my opinion, anyway. [2] Actually, it's not totally fixed--it's just annoying instead of almost completely unusable. Matthias had a suggestion that may fix the remainder of the problems (see http://tinyurl.com/bwzuu). [3] This bug was originally about not-quite-so-pathological cases but was left open for the worse cases. The code from the branch handles the remainder of the cases mentioned in this bug. [4] Actually, although it's far better there's still some minor issues left: a slight drift that's only noticeable after lots of resizing, and potential problems with partially onscreen constraints due to not clearing any fixed_directions flags (aspect ratio windows get resized in both directions and thus aren't fixed in one of them) New feature: 81704 - edge resistance for user move and resize operations; in particular 3 different kinds of resistance are implemented: Pixel-Distance: window movement is resisted when it aligns with an edge unless the movement is greater than a threshold number of pixels Timeout: window movement past an edge is prevented until a certain amount of time has elapsed during the operation since the first request to move it past that edge Keyboard-Buildup: when moving or resizing with the keyboard, once a window is aligned with a certain edge it cannot move past until the correct direction has been pressed enough times (e.g. 2 or 3 times) Major changes: - constraints.c has been rewritten; very few lines of code from the old version remain. There is a comment near the top of the function explaining the basics of how the new framework works. A more detailed explanation can be found in doc/how-constraints-works.txt - edge-resistance.[ch] are new files implementing edge-resistance. - boxes.[ch] are new files containing low-level error-prone functions used heavily in constraints.c and edge-resistance.c, among various places throughout the code. testboxes.c contains a thorough testsuite for the boxes.[ch] functions compiled into a program, testboxes. - meta_window_move_resize_internal() *must* be told the gravity of the associated operation (if it's just a move operation, the gravity will be ignored, but for resize and move+resize the correct value is needed) - the craziness of different values that meta_window_move_resize_internal() accepts has been documented in a large comment at the beginning of the function. It may be possible to clean this up some, but until then things will remain as they were before--caller beware. - screen and xinerama usable areas (i.e. places not covered by e.g. panels) are cached in the workspace now, as are the screen and xinerama edges. These get updated with the workarea in src/workspace.c:ensure_work_areas_validated() 2005-11-14 Elijah Newren * configure.in: post-release version bump to 2.13.2 2005-11-14 Elijah Newren * NEWS: 2.13.1 release 2005-11-11 Aidan Delaney * src/tabpopup.h: (struct _MetaTabEntry): * src/tabpopup.c: (meta_ui_tab_popup_new): * src/screen.c: (meta_screen_ensure_tab_popup): Changed the 'minimized' field of the MetaTabEntry struct to 'hidden'. Fixes reopened bug #168455. 2005-10-29 Kjartan Maraas * src/eventqueue.c: (meta_event_queue_new): Merge fix for bug #320050 from stable. 2005-10-27 Erdal Ronahi * configure.in: Added ku (Kurdish) to ALL_LINGUAS 2005-10-25 Philip O'Brien * src/prefs.c (meta_preference_to_string): add handling for META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE for more complete debug info 2005-10-24 Elijah Newren * configure.in: post-release version bump to 2.13.1 2005-10-24 Elijah Newren * NEWS: 2.13.0 release 2005-10-23 Elijah Newren Fix edge snapping for multi-screen (non-xinerama) setups. #319425 * src/place.c (get_windows_showing_on_same_screen, get_vertical_edges, get_horizontal_edges): rename get_windows_on_same_workspace() to get_windows_showing_on_same_screen() * src/place.c (get_windows_showing_on_same_screen): exclude windows in the list that are on a different screen 2005-10-20 Elijah Newren * HACKING: Clarify why METACITY_VERBOSE=1 is bad without META_USE_LOGFILE=1; point to bug 305091 for details. 2005-10-13 Muktha * src/themes/Simple/metacity-theme-1.xml: Make the unfocussed Simple window border visible with high contrast inverse theme. Fixes #121361. 2005-10-08 Elijah Newren Fix a crash that occurs when removing some virtual desktops and windows happen to be on those desktops. #318306. * src/workspace.c (meta_workspace_relocate_windows): Since windows cannot be on more than one workspace at a time, remove the window from the old workspace before adding it to the new one. 2005-10-08 Elijah Newren Add my copyright notice to a number of files on which it should already exist. 2005-10-03 Elijah Newren * src/metacity.schemas.in: clarify the meaning of the auto_raise preference. Fixes one of the issues in #312421. 2005-10-03 Elijah Newren Patch from Ross Cohen to make alt-esc consistent with alt-tab by leaving stacking of unselected windows unchanged. Fixes #314285. * src/keybindings.c (process_tab_grab): before raising and showing the next candidate, reset the stack positions to what they were at the beginning of the grab 2005-10-03 Elijah Newren Patch from Ross Cohen to make alt-esc (show windows instantly) actually show minimized windows too. Fixes #107072. * src/keybindings.c (process_tab_grab): initialize tab_unminimized to FALSE for the target window when starting the grab, when advancing through the list check to find the previous window and re-minimize it if it was tab-unminimized, unminimize the new window we're alt-esc'ing to if it's minimized, (do_choose_window): raise and unminimize the initial window as well in alt-esc'ing * src/window.h (struct _MetaWindow): add a tab_unminimized field * src/window.c (meta_window_new_with_attrs): initialize tab_unminimized to false 2005-10-03 Elijah Newren Branched for Gnome 2.13. :-) * configure.in: bump version to 2.13.0. Add UNSTABLE warning. * README: add 2.13.x to the list of unstable branches 2005-10-03 Elijah Newren A combination of a couple memory leaks fixes, from Kjartan, Soeren, and I. Fixes #313030. * src/bell.c (meta_bell_flash_screen): call XFreeGC() * src/frames.c (invalidate_cache): free pixels * src/window.c (meta_window_show_menu): call meta_screen_free_workspace_layout() 2005-10-03 Elijah Newren Patch from Björn Lindqvist fix the workspace switcher tabpopup to display the right windows and to fix the pick-a-new-window-to-focus algorithm in order to not select windows that aren't showing. Fixes #170475. * src/tabpopup.c (meta_convert_meta_to_wnck, meta_select_workspace_expose_event): factor out conversion code from meta_select_workspace_expose_event() into the new meta_convert_meta_to_wnck() function * src/tabpopup.c (meta_select_workspace_expose_event): * src/workspace.c (focus_ancestor_or_mru_window): replace the buggy window->minimized logic with !meta_window_showing_on_its_workspace (window) 2005-10-03 Elijah Newren Patch from Björn Lindqvist to have ancestors come along with the transient when moving the window from one workspace to another. Fixes #314977. * src/window.c (meta_window_change_workspace): have all ancestors change workspaces too 2005-10-03 Elijah Newren * configure.in: post-release version bump to 2.12.2 2005-10-03 Elijah Newren * NEWS: 2.12.1 release 2005-10-03 Elijah Newren Truncate ridiculously long titles to avoid crashing or letting the pager crash. Based on patch from Ray, incorporating suggestions from Havoc and some extensions of my own. Fixes #315070. * src/display.c (set_utf8_string_hint, meta_display_open): * src/xprops.[ch] (meta_prop_set_utf8_string_hint): Move set_utf8_string_hint() to props.[ch], namespace it ("meta_prop_"), and make it public * src/tabpopup.c (utf8_strndup, meta_ui_tab_popup_new): * src/util.[ch] (meta_g_utf8_strndup): Move utf8_strndup() to util.[ch], namespace it ("meta_g_"), and make it public * src/display.c (meta_display_open): * src/display.h (struct _MetaDisplay): add net_wm_visible_name and net_wm_visible_icon_name atoms to the list of atoms we work with * src/window-props.c (set_window_title, set_icon_title): If title length is greater than 512, truncate it and set _NET_WM_VISIBLE_NAME or _NET_WM_VISIBLE_ICON_NAME accordingly 2005-10-03 Elijah Newren Get the tabbing window outline to work with gtk+ 2.8.4 again. Fixes #317528. * src/tabpopup.c (display_entry): gtk+ 2.8.4 needs to know the mapped state of its windows (see bug 316180), and since we manually map with gdk_window_show_unraised() we need to manually set the mapped state too 2005-09-05 Elijah Newren * configure.in: post-release version bump to 2.12.1 2005-09-05 Elijah Newren * configure.in: * README: * NEWS: 2.12.0 release 2005-09-04 Danilo Šegan * configure.in: Added Armenian (hy) to ALL_LINGUAS. 2005-09-03 Elijah Newren * HACKING: Add tips on how to more easily get the ids of windows, and how to shorten xprop output. 2005-09-02 Brent Smith * src/place.c: (meta_window_place): Moved the call to meta_screen_get_natural_xinerama_list to earlier in function so that xineramas_list is allocated before find_first_fit is called. Fixes #315000 2005-08-22 Elijah Newren * configure.in: post-release version bump to 2.11.5 2005-08-22 Elijah Newren * NEWS: 2.11.3 release 2005-08-22 Elijah Newren * configure.in: Patch from Björn Lindqvist to check for the appropriate versions of glib and gtk. Fixes #314116. 2005-08-12 Elijah Newren * src/place.c (meta_window_place): Avoid obscuring centered-on-desktop windows which are denied focus. Fixes #313234. 2005-08-08 Elijah Newren * configure.in: post-release version bump to 2.11.3 2005-08-08 Elijah Newren * NEWS: 2.11.2 release 2005-08-08 Elijah Newren Patch from Brent Smith to fix a duplicate string. Fixes #309774. * src/theme-parser.c (parse_toplevel_element, parse_draw_op_element): Change "No \"%s\" attribute on element <%s>" string to "No \"%s\" attribute on <%s> element" 2005-08-03 Ray Strode Improve the behavior of keyboard move/resize and edge snapping. Still not perfect, bug 310888. * src/effects.c (draw_xor_rect): Make the outside of a wireframe rectangle line up with the outside edge of its window, instead of centering the wireframe edges on the window edges. * src/keybindings.c (process_keyboard_move_grab): allow edge snapping in wireframe mode. Adjust code to take into account changed semantics of find_next_*_edge functions. (process_keyboard_resize_grab_op_change): new function to take some orthogonal logic out of process_keyboard_resize_grab_op. Only allow keyboard resize cursor to go to flat edges, not corners. (process_keyboard_resize_grab): allow edge snapping in wireframe mode. Fix up snapping logic. * src/place.c (get_{vertical,horizontal}_edges): use GArray instead of int *, since the number of output edges isn't known until the middle of the function now. Use xor rect extents instead of window extends if in wireframe mode. (meta_window_find_next_{vertical,horizontal}_edge: add new source_edge_position parameter to specify which edge on the active window to start from when looking for next edge on the screen. Return the coordinate of the edge found and not the coordinate of where the window should be moved to snap to where the edge was found. * src/window.c (update_move): all the user to specify an edge to resize with mouse in keyboard resize mode. window 2005-08-01 Elijah Newren * src/metacity.schemas.in: Change default theme from "Simple" to "Clearlooks". 2005-07-31 Elijah Newren * src/stack.c (is_focused_foreach, get_standalone_layer): use only the expected_focus_window instead of both the focused_window and the expected_focus_window. Removes an infinite flicker loop in sloppy and mouse focus, and an ugly one time flicker in click to focus. Fixes #311400. 2005-07-30 Elijah Newren Patch from Jaap Haitsma to make sure that Metacity dialogs have icons. Fixes #309876. * src/metacity-dialog.c (kill_window_question, warn_about_no_sm_support, error_about_command): call gtk_window_set_icon_name() to set the dialog icon 2005-07-28 Elijah Newren * src/place.c (avoid_being_obscured_as_second_modal_dialog): remove some unneeded debug spew that was causing crashes. Fixes #311819. 2005-07-24 Elijah Newren * configure.in: post-release version bump to 2.11.2 2005-07-24 Elijah Newren * NEWS: 2.11.1 release 2005-07-24 Elijah Newren * src/place.c (find_most_freespace): try to place windows denied focus near the focus window and fix a xinerama bug with the placement, (avoid_being_obscured_as_a_second_modal_dialog): avoid modal dialogs being obscured in somewhat pathologically strange circumstances that Eclipse seems to be good at triggering, (meta_window_place): have dialog windows make use of avoid_being_obscured_as_a_second_modal_dialog(). Fixes one of the issues found in #307875. 2005-07-24 Elijah Newren * src/window.c (meta_window_raise): raise the window as well as its ancestor; fixes a stacking bug with an ancestor that has more than one child window. Fixes one of the issues in #307875. 2005-07-24 Elijah Newren * src/window.c (meta_window_free): restore original window size if the window was maximized, as the FIXME says. ;-) Fixes #137185. Thanks to Christian Persch for the testcase that made this easier to track down. 2005-07-23 Elijah Newren * src/window.c (meta_window_activate): revert the patch from #128380--change _NET_ACTIVE_WINDOW behavior to what it originally was. 2005-07-18 Matthias Clasen * configure.in: Add checks for Xcursor, to make the changes done on 2005-07-11 effective. 2005-07-14 Elijah Newren Patch from Ken Harris to provide a more lenient threshold for drawing rounded corners. Fixes #122065. * src/theme.c (meta_frame_layout_calc_geometry): use height + width > 5 instead of height > 3 && width > 3 as criterion 2005-07-13 Elijah Newren Fix a slight bug (causing possible miscoloring of parts of the titlebar) introduced by the patch from #169982. * src/gradient.c: (meta_gradient_create_interwoven): (meta_gradient_create_multi_vertical): bitshifting operators do not take precedence over typecasting, so make sure to use parentheses to get the right operation order. 2005-07-12 Elijah Newren * configure.in: post-release version bump to 2.11.1 2005-07-12 Elijah Newren * NEWS: 2.11.0 release 2005-07-12 Elijah Newren Patch from Andrew Johnson to speed up vertical gradients. Fixes #169982. * src/gradient.c: (meta_gradient_create_interwoven): (meta_gradient_create_vertical): (meta_gradient_create_multi_vertical): use memcpy instead of really long loops to set values in memory to a given pattern. 2005-07-12 Elijah Newren Patch from Björn Lindqvist to split up main() into more manageable chunks and make use of GOpt. Closes #305331. * src/main.c (usage): remove this function, (meta_print_compilation_info): new function taken from main(), (meta_print_self_identity): new function taken from main(), (struct MetaArguments) new struct to replace some free variables, (meta_parse_options): new funcion taken from main() but now using GOpt, (meta_select_display): new function taken from main() 2005-07-12 Aivars Kalvans * src/screen.c (meta_screen_free): free ->xinerama_infos Closes #307884 2005-07-11 Elijah Newren Stuff I forgot to do when I branched an hour or so ago before Matthias' commit... * configure.in: bump version to 2.11.0. Add UNSTABLE warning. * README: add 2.11.x to the list of unstable branches 2005-07-11 Matthias Clasen React to cursor theme changes: (#308106) * src/prefs.h: * src/prefs.c: Expose the GConf keys for cursor theme and size as preferences META_PREF_CURSOR_THEME and META_PREF_CURSOR_SIZE with getters meta_prefs_get_cursor_theme() and meta_prefs_get_cursor_size(). * src/display.c (meta_display_open): Initialize the cursor theme and size. * src/display.h: * src/display.c (meta_display_set_cursor_theme): New function to change the cursor theme and update all cursors. * src/screen.h * src/screen.c (meta_screen_update_cursor): New function to refesh the root cursor of a screen. * src/main.c (prefs_changed_callback): Update the cursor theme when the cursor preferences change. 2005-06-27 Elijah Newren * configure.in: post-release version bump to 2.10.3 2005-06-27 Elijah Newren * NEWS: 2.10.2 release Sun Jun 26 11:19:18 2005 Soeren Sandmann * src/frames.c: Add a cache of pixmaps for recently exposed frame areas. Makes metacity a bit faster when dragging windows around. See bug 141813. 2005-06-10 Ryan Lortie * src/frames.c: Prevent using the address of a local variable as a hash key. (Bug #307209) * src/xprops.c (meta_prop_get_values): Fix a small leak in the case of a SYNC_COUNTER property value and HAVE_XSYNC not defined. (Bug #307214) 2005-06-07 Ray Strode Cleanup font data when done with it (bug 306720). * src/effects.c (draw_xor_rect): free font info structure. * src/screen.c (meta_screen_new): pass a 1 not a 0 to XFreeFontInfo to free font info structure. (meta_screen_free): call XUnloadFont on GC font before freeing the GC. 2005-06-02 Elijah Newren * src/window.c (meta_window_focus): if the window has a modal transient which is being unmanaged, don't focus it. Fixes the Metacity issue reported in #305362. 2005-05-30 Ray Strode Bug 305564 again. When drawing XOR resize popup use "fixed" font instead of -misc-fixed-*-16-* xlfd. Should work on more xservers. Also take steps to fail better if the xserver isn't cooperating. * src/effects.c (draw_xor_rect): if we can't draw font box for whatever reason, at least draw grid frames. * src/screen.c (meta_screen_new): use fixed alias instead of a xfld. Don't pass GCFont to XCreateGC if font couldn't be loaded. Print a warning if font couldn't be loaded. 2005-05-26 Elijah Newren * HACKING: Add a clarification that METACITY_VERBOSE needs to be accompanied by METACITY_USE_LOGFILE 2005-05-26 Elijah Newren * src/window.c (meta_window_configure_request): Patch from Greg Hudson to make sure window position is calculated correctly for reconfigure requests when part of the XWindowChanges structure is uninitialized. Fixes #305257. 2005-05-26 Ray Strode Actually commit the stuff mentioned in the last ChangeLog entry. 2005-05-26 Ray Strode Add a resize popup when resizing constrained windows, (bug 305564). * src/display.c: (meta_display_begin_grab_op), (meta_display_end_grab_op): * src/keybindings.c (process_keyboard_move_grab), (process_keyboard_resize_grab): Call meta_window_{begin,update,end}_wireframe convenience functions instead of the meta_effects counterparts. * src/display.h: keep track of old wireframe geometry to clean up xor popup on resize * src/effects.[ch] (meta_effects_begin_wireframe), (meta_effects_update_wireframe), (meta_effects_end_wireframe), (draw_xor_rect): take optional width and height arguments to show to user in resize popup. Draw resize popup if width and height >= 0 and wireframe isn't smaller than the popup would be. * src/screen.c (meta_screen_new): load a largish font for the resize popup * src/window.[ch] (meta_window_move_resize_internal): update wireframe resize popup when the window is resized. (meta_window_get_wireframe_geometry): new function to calculate the numbers to display in resize popup (meta_window_begin_wireframe), (meta_window_update_wireframe), (meta_window_end_wireframe): new functions to reduce repetitive wireframe code. Functions handle updating wireframe and resize popup geometry. (update_move), (update_resize), (meta_window_refresh_resize_popup): remove fixme and add debug message. 2005-05-26 Elijah Newren * src/window.c (check_maximize_to_work_area): don't accidentally treat maximize vertically as maximize in both directions. Fixes #302204. 2005-05-26 Elijah Newren * src/window.c (meta_window_new_with_attrs): put all transients of the new window, if any exist, in the calc_showing queue. Fixes #303284. Thanks to Billy Biggs for the testcase that made this easy to track down. 2005-04-11 Elijah Newren * configure.in: post-release version bump to 2.10.2 2005-04-11 Elijah Newren * NEWS: 2.10.1 release 2005-04-05 Dan Winship * src/metacity-dialog.c (warn_about_no_sm_support): Make sure the "Close" button has the focus, not the table. (#172703) 2005-04-05 Pawan Chitrakar * configure.in: Added ne in ALL_LINGUAS 2005-03-31 Steve Murphy * configure.in: Added "rw" to ALL_LINGUAS. 2005-03-17 Lex Hider * doc/Makefile.am (EXTRA_DIST): add doc/code-overview.txt and doc/how-to-get-focus-right.txt 2005-03-10 Adi Attar * configure.in: Added "xh" to ALL_LINGUAS. 2005-03-07 Elijah Newren * configure.in: post-release version bump to 2.10.1 2005-03-07 Elijah Newren * configure.in: * README: * NEWS: 2.10.0 release 2005-02-28 Elijah Newren * configure.in: post-release version bump to 2.9.55 2005-02-28 Elijah Newren * NEWS: Metacity 2.9.34 unstable release 2005-02-28 Elijah Newren Patch from Aidan Delaney to make sure that icons in the alt-tab popup are dimmed for all hidden windows, not just minimized ones. Fixes #168455. * src/screen.c: (meta_screen_ensure_tab_popup): make use meta_window_showing_on_its_workspace() instead of just checking if the window is minimized. 2005-02-25 Elijah Newren Prevent the visual bell from changing the focus window. Fixes #123366. * src/bell.c: (meta_bell_flash_screen): if not in click-to-focus mode and mouse_mode is also false, increment the focus sentinel so that we can ignore spurious EnterNotify and LeaveNotify events. * src.display.c: (event_callback): make sure to also ignore LeaveNotify events when the focus sentinel isn't clear 2005-02-23 Elijah Newren * src/window.c: (meta_window_new_with_attrs): Fix crash that occurs when stupid apps claim that a window is its own parent. #168207 2005-02-21 Elijah Newren * configure.in: post-release version bump to 2.9.34 2005-02-21 Elijah Newren * NEWS: Metacity 2.9.21 unstable release 2005-02-21 Elijah Newren Handle keynav vs. mousenav in mouse and sloppy focus modes. Fixes #167545. * doc/how-to-get-focus-right.txt: Update due to this new method for handling keynav vs. mousenav, plus various other updates that I previously forgot. * src/display.h: (struct _MetaDisplay): add a mouse_mode boolean * src/display.c: (meta_display_open): initialize mouse_mode to true, (event_callback): have EnterNotify and LeaveNotify events set mouse_mode to true when focusing a window * src/keybindings.c: (process_tab_grab): set mouse_mode to false when using alt-tab/alt-esc, (do_choose_window): likewise, (do_handle_move_to_workspace): set mouse_mode to false on move-window-to-workspace- keybindings * src/window.c (idle_calc_showing): if we're in keynav mode while using sloppy or mouse focus, use metacity_sentinel to avoid EnterNotify events being generated from events other than mouse movement. * src/workspace.c (meta_workspace_activate_with_focus): add a FIXME in a potentially duplicate section of code, (meta_workspace_focus_default_window): use the same focus choice as click-to-focus if in keynav mode. 2005-02-20 Elijah Newren * src/display.c: (event_callback): Handle _NET_CURRENT_DESKTOP messages that come with timestamps. Fixes the metacity portion of #161361 other than the portion handled by #128380. 2005-02-20 Elijah Newren * src/window.c: (meta_window_activate): when receiving a _NET_ACTIVE_WINDOW message, switch to the desktop where the window is located before activating instead of moving the window to the current desktop. Thanks to Lubos Lunak for catching this issue. Fixes #128380. 2005-02-20 Elijah Newren * src/window.c (meta_window_show): Ignore all focus and focus-stealing-prevention code in meta_window_show when not showing the window for the first time. Fixes #167199. 2005-02-20 Elijah Newren Fix an obscure xinerama placement bug with windows that are too large to fit in the workarea in both dimensions. #166757 * src/place.c: (meta_window_place): use the current xinerama instead of arbitrarily resetting to 0 2005-02-20 Elijah Newren Patch from Joe Marcus Clarke to fix a possible crash on logout. #167935. Thanks for fixing my mistakes, Joe! * src/display.c: (meta_display_open): initialize display->grab_old_window_stacking to NULL. 2005-02-20 Elijah Newren Big patch to cover about 6 different issues in order to correct rare problems with timestamps (make sure window selected in tasklist actually gets focus, sanity check timestamps to avoid rogue apps hosing the system, correct the updating of net_wm_user_time, correctly handle timestamps of 0 when comparing xserver timestamps for those who have had their systems up for over 25 days or so, add some debugging information to verbose logs, some code cleanups). Fixes all issues listed in #167358. * src/display.h: (struct _MetaDisplay): clarify comment on last_focus_time, introduce a new variable--last_user_time, (XSERVER_TIME_IS_BEFORE macro): put this functionality into a separate macro and then introduce a new macro with this name that uses the old one but adds additional special-case checks for timestamps that are 0, (comment to meta_display_set_input_focus_window): add information about how last_user_time should be used in this function * src/display.c (santiy_check_timestamps): new function, (meta_display_open): intialize display->last_user_time, (meta_display_get_current_time_roundtrip): use the timestamp, which is known to be good, in order to sanity_check_timestamps, (event_callback): use the new meta_window_ste_user_time() function in order to correct problems, use the timestamp of KeyPress and ButtonPress events, which are known to be good, in order to sanity_check_timestamps, (timestamp_too_old): new function for common behavior of meta_display_focus_the_no_focus_window and meta_display_set_input_focus_window, with added checking for display->last_user_time in addition to display->last_focus_time, (meta_display_set_input_focus_window): replace some of the code with a call to timestamp_too_old(), (meta_display_focus_the_no_focus_window): replace some of th ecode with a call to timestamp_too_old() * src/window.h: (meta_window_set_user_time): new function to abstract the many things that need to be done when updating the net_wm_user_time of any window * src/window.c: (meta_window_activate): add debugging spew, make sure the comparison is made with last_user_time NOT last_focus_time, use meta_window_set_user_time() function in order to correct problems, (meta_window_client_message): add a newline to a debugging message to make them easier to read, (meta_window_set_user_time): new function * src/window-props.c (reload_net_wm_user_time): use the new meta_window_ste_user_time() function in order to correct problems 2005-02-16 Elijah Newren * src/display.c: (event_callback): trivial fix to a log message: change %d to %lu (see debugging log from bug 167358). 2005-02-12 Elijah Newren Raise the ancestor of a window instead of the window itself. Fixes #166894. * src/window.c: (find_root_ancestor): new function, (meta_window_raise): get the ancestor of the given window and raise it if possible instead of the window 2005-02-12 Elijah Newren Don't unconditionally place splashscreens (and other not-to-be-focused windows) below the focus window. Fixes #167042. * src/window.c: (intervening_user_event_occurred): new function taken from the timestamp comparison portion of the old window_takes_focus_on_map function, (window_state_on_map): new function with remainder of old window_takes_focus_on_map function that determines both whether the window will take focus and whether it should be placed on top, (meta_window_show): use place_on_top_on_map to determine window stacking instead of trying to infer it from takes_focus_on_map 2005-02-11 Elijah Newren Avoid new windows being obscured by the focus window (and thus possibly lost). Fixes #166524. * src/place.c: new MetaWindowDirection enum, (find_most_freespace): new function to find where there is the most space available around the focused window, (meta_window_place): if a window is denied focus and the window overlaps the focused window, retry the first-fit algorithm only paying attention to the focus window position and if that fails just find the location on the screen with the most space available. * src/window.h: (struct MetaWindow): new denied_focus_and_not_transient bitfield * src/window.c: (meta_window_new_with_attrs): initialize denied_focus_and_not_transient, (meta_window_show): set and unset the denied_focus_and_not_transient field appropriately 2005-02-08 Aidan Delaney Removed useless function call. #166730 * src/tabpopup.c: (outline_window_expose): Removed unused references to variables and an unnecessary function call to gdk_window_get_size(). 2005-02-08 Elijah Newren Avoid using CurrentTime when focusing, handle it better in case we miss any cases. Fixes #166732. * src/window.c: (meta_window_shade): use meta_display_get_current_time_roundtrip() to ensure we have a valid timestamp, (meta_window_unshade): same * src/display.c: (meta_display_set_input_focus_window): If CurrentTime was passed, get one from the XServer in addition to throwing a warning, (meta_display_focus_the_no_focus_window): same 2005-02-08 Elijah Newren * src/window.c: (meta_window_activate): If we're not passed a timestamp, make sure to manually get one. Fixes #166728. 2005-02-07 Elijah Newren * configure.in: post-release version bump to 2.9.21 2005-02-07 Elijah Newren * NEWS: Metacity 2.9.13 unstable release 2005-02-06 Elijah Newren Set a _METACITY_VERSION property (a utf8 string) on the WM check window. #165350. * src/display.h: (struct MetaDisplay): add a atom_metacity_version field * src/display.c: (meta_display_open): initialize the _METACITY_VERSION property on the WM check window to the current version of Metacity. 2005-02-06 Elijah Newren Ignore xconfigurerequest events for stacking when it should be safe to do so. Again, thanks to Crispin Flowerday for the test case. Thanks to KWin for the inspiration (and to Google for indexing their source code). Fixes the other half of #166395. * src/window.c: (meta_window_configure_request): if the active_window is from a separate application than the one getting the configure request and the net_wm_user_time of the active window is later than that of the window getting the configure request, then ignore the request. 2005-02-06 Elijah Newren If activation requests are too old, set the demands_attention hint instead of actually activating. Thanks to Crispin Flowerday for the test case and for testing the patch. Fixes half of #166395. * src/window.c: (meta_window_activate): if the request came before the last focus time, set the demands attention hint instead 2005-02-04 Dave Ahlswede * src/metacity.schemas.in: Add period to the end of reduced_resources' description. Fixes #165780. 2005-02-04 Elijah Newren Make sure window->border_only is initialized so we don't get random windows without decorations. Thanks to Sinisa Segvic and Owen Taylor for providing test cases. Fixes #145131. * src/window.c: (update_mwm_hints): Be sure to call recalc_window_features even if no MWM hints are set 2005-02-02 Elijah Newren Focus parents of dismissed transient windows in preference to the window that most recently had keyboard focus. Fixes #157360. * doc/how-to-get-focus-right.txt: Note the distinction between "most recently used window" and "most recent to have keyboard focus" that we are now making. * src/workspace.c: (focus_ancestor_or_mru_window): rename from meta_workspace_focus_mru_window, and first check whether we need to focus an ancestor window before looking for the mru window, (record_ancestor): helper function for focus_ancestor_or_mru_window, (meta_workspace_focus_default_window): update due to the function rename from meta_workspace_focus_mru_window to focus_ancestor_or_mru_window 2005-01-31 Elijah Newren Try 2 to correct misleading and inaccurate wording. Hopefully, really fixes #165380. * src/menu.c: Change wording of menu from "Always on Current Workspace" to "Always on Visible Workspace". "Always on Current Workspace" could sound like a synonym of "Only on This Workspace" when it was supposed to be the opposite. 2005-01-31 Elijah Newren Correct the stacking when return from fullscreen mode. Fixes #165718. * src/window.c: (meta_window_unmake_fullscreen): Update the layer after resizing the window 2005-01-31 Muktha src/themes/Atlanta/metacity-theme-1.xml: src/themes/Simple/metacity-theme-1.xml: src/themes/Bright/metacity-theme-1.xml: Make the unfocussed title bar distinguishable. Fixes #125291. 2005-01-28 Elijah Newren Patch from RHEL-3 (Havoc doesn't remember how it got there) that Havoc posted in bug 156511 to fix the problem with fullscreen windows on a different xinerama monitor not staying on top. I updated to HEAD. Should fix #156511. * src/stack.c: (windows_on_different_xinerama): new function, (get_standalone_layer): let windows on a different screen than the one with the focus window stay in the fullscreen layer 2005-01-28 Elijah Newren * src/metacity-dialog.c: (warn_about_no_sm_support): make this dialog be sticky. Fixes #164745. 2005-01-28 Elijah Newren Patch from Tim Herold to handle xcomposite pkgconfig version regression. Fixes #149368. * configure.in: Change XCOMPOSITE_VERSION from 1.0 to 0.2 2005-01-28 Elijah Newren Correct misleading and inaccurate wording. Fixes #165380. * src/menu.c: Change wording of menu to "Always on Current Workspace" from "Put on All Workspaces", remove a quick-key conflict between "On _Top" and "Only on _This Workspace" by switching the latter to "_Only on This Workspace" * src/window.c: Remove a comment that is no longer necessary (since bug 87531 has been fixed) 2005-01-28 Elijah Newren Take into account the appropriate list of windows when placing a new one. Fixes #165381. * src/place.c: (meta_window_place): use meta_window_showing_on_its_workspace(w) instead of !w->minimzed, also take into account sticky windows * src/window.[ch]: rename window_showing_on_its_workspace to meta_window_showing_on_its_workspace and export it 2005-01-27 Elijah Newren Plug a pair of leaks. Fixes #165378 * src/place.c: (meta_window_place, get_windows_on_same_workspace): free list returned by meta_display_list_windows. 2005-01-27 Elijah Newren Treat splashscreens same as other windows for stacking. Fixes #165243. * src/stack.h: (MetaStackLayer enum): remove META_LAYER_SPLASH from the list * src/stack.c: (get_standalone_layer): remove the special casing of META_WINDOW_SPLASHSCREEN 2005-01-27 Elijah Newren * src/window.c: (set_net_wm_state): shaded windows should not show up in pagers. Fixes #165377. 2005-01-26 Elijah Newren Stick and unstick transients with their parent automatically. Fixes #152283. * src/window.c: (window_stick_impl, window_unstick_impl): rename from meta_window_stick and meta_window_unstick respectively, (stick_foreach_func): a function to assist calling window_(un)stick_impl on each transient, (meta_window_stick, meta_window_unstick): new functions that call window_stick_impl or window_unstick_impl for the window and each of its transients. 2005-01-26 Elijah Newren Patch from John Paul Wallington to keep tooltip on screen horizontally for xinerama. Fixes #165261. * src/fixedtip.c: (meta_fixed_tip_show): rename screen_width and screen_height to screen_right_edge and screen_bottom_edge, set them using xinerama info instead of just screen geometry, and use them to determine where to place the tooltip window. 2005-01-26 Arvind Samptur Don't wireframe when accessibility is on, it apparently causes a desktop wide freeze. * src/prefs.[ch] (meta_prefs_init) (change_notify) (update_gnome_accessibility) (meta_preference_to_string) (meta_prefs_get_gnome_accessibility) : Add code to monitor accessibility status. * src/display.c (meta_display_begin_grab_op): Check accessibility status before going ahead with wireframe. Fixes #159538 2005-01-25 Elijah Newren * src/tabpopup.c: (meta_select_workspace_expose_event): ignore sticky windows for non-active workspaces. Fixes #165259. 2005-01-25 Elijah Newren * src/window.c: (meta_window_new_with_attrs): set the window state hints _after_ applying session information. Fixes #164677. 2005-01-25 Elijah Newren Add man pages for metacity-window-demo and metacity-theme-viewer. Man pages from Jose Moya, auto-fu from Dave Ahlswede. (#143513) * doc/man/metacity-theme-viewer.1: * doc/man/metacity-window-demo.1: New man pages * doc/man/Makefile.am: * doc/Makefile.am: * configure.in: Make sure to install the man pages * doc/man/.cvsignore: Silence cvs 2005-01-25 Benjamin Kahn New 48x48 default icon as specified in bug #160660 2005-01-25 Elijah Newren Patch from Stephane LOEUILLET in bug #151850. * src/metacity.desktop.in: specify encoding 2005-01-25 Balamurali Viswanathan * src/prefs.c (meta_prefs_init): Get gconf to load the terminal dir so that we get the notifications when the command is changed. Fixes bug #160934 2005-01-25 Elijah Newren Refuse to focus a window with a modal transient, and focus the transient instead. Fixes #164716. * src/window.c: (get_modal_transient): new function, (meta_window_focus): if the window has a modal transient, make sure it is on the current workspace and then focus it instead. 2005-01-24 Elijah Newren * configure.in: post-release version bump to 2.9.13 2005-01-24 Elijah Newren * NEWS: Metacity 2.9.8 unstable release 2005-01-24 Elijah Newren * src/display.c: (meta_display_begin_grab_op): don't forget to initialize display->grab_old_window_stacking. Thanks to Sebastien Bacher and the bleeding edge Ubuntu users for catching the occasional crash this could cause so quickly, and for verifying that the patch worked (I couldn't duplicate). Fixes #165093. 2005-01-23 Elijah Newren * configure.in: post-release version bump to 2.9.8 2005-01-23 Elijah Newren * NEWS: Metacity 2.9.5 unstable release * README: there are more stable releases beyond 2.8.6... 2005-01-23 Elijah Newren Restore original stacking when aborting an alt-esc window switch operation. Fixes #123576. * src/display.c: (GRAB_OP_IS_WINDOW_SWITCH): new macro, (meta_display_close): clear grab_old_window_stacking if non-NULL, (event_callback): restore stack positions if alt-esc op cancelled with button press, (meta_display_begin_grab_op): store the old stacking positions, (meta_display_end_grab_op): free the old stack positions * src/display.h: (struct _MetaDisplay): add a grab_old_window_stacking list * src/keybindings.c: (process_tab_grab): restore stack positions if alt-esc op cancelled with an errant key press * src/stack.c: (compare_just_window_stack_position): new GCompareFunc function, (meta_stack_get_positions): get current stack positions, (compare_pointers): new GCompareFunc function, (lists_contain_same_windows): simple utility func to see if two lists contains the same windows, (meta_stack_set_positions): new function to set the positions of all the windows in the stack * src/stack.h: (meta_stack_get_postions, meta_stack_set_positions): new functions 2005-01-23 Elijah Newren Patch from John Paul Wallington to fix #163420. * src/window.c: (check_maximize_to_work_area): fix vertical maximization for second screen 2005-01-21 Elijah Newren * rationales.txt: Add a tracker bug for modal dialog issues 2005-01-20 Elijah Newren * src/tabpopup.c (dimm_icon): use pixbuf, not dimmed_pixbuf (which isn't defined yet). Fixes crash from #136666. 2005-01-20 Vincent Noel * src/screen.c: (meta_screen_ensure_tab_popup), (meta_screen_ensure_workspace_popup): * src/tabpopup.c: (meta_ui_tab_popup_new), (display_entry): * src/tabpopup.h: Show labels in bold for windows that demand attention. Fixes #164590. 2005-01-18 Vincent Noel * src/screen.c: (meta_screen_ensure_tab_popup), (meta_screen_ensure_workspace_popup): * src/tabpopup.c: (dimm_icon), (meta_ui_tab_popup_new), (free_entry): * src/tabpopup.h: In the tab task switcher popup, dim the window icon and put its name between brackets when the window is minimized. Fixes #136666. 2005-01-11 Elijah Newren Correct highlighting of windows in workspace switcher popup. Fixes #163450. * src/tabpopup.c (meta_select_workspace_expose_event): Remove race between FocusIn/FocusOut events and the expose event by replacing window->has_focus with window==window->display->expected_focus_window. 2005-01-09 Elijah Newren * configure.in: post-release version bump to 2.9.5 2005-01-09 Elijah Newren * NEWS: Metacity 2.9.3 unstable release 2005-01-09 Elijah Newren * src/display.c (meta_display_open): * src/display.h (struct _MetaDisplay): * src/window.c (meta_window_free, meta_window_client_message, meta_window_notify_focus): Remove the hack from bug 128200; it isn't needed anymore with the fix from bug #160470. 2005-01-09 Elijah Newren Don't focus the panel on click. Fixes #160470 (and 100470 and removes the need for the hack from 128200) * doc/how-to-get-focus-right.txt: Update section on focusing non-decorated windows (specifically, DOCKS and DESKTOPS) * src/display.c (event_callback): don't focus dock windows on click 2005-01-06 Elijah Newren Make sure the save session dialog appears focused. Fixes #162983. * src/session.c (warn_about_lame_clients_and_finish_inter): Get a timestamp by explicit request from Xserver, since none is available otherwise. 2005-01-06 Leena Gunda * src/window.c (meta_window_unmaximize): Restore the wireframe rectangle co-ordinates to saved window co-ordinates. Fixes bug #161236. 2005-01-03 Thomas Fitzsimmons * src/Makefile.am (install-data-local): Install schema data from builddir not srcdir. 2005-01-02 Elijah Newren Provide more documentation to make it easier for people to contribute to Metacity. (#162646) * HACKING: Add lots of information to extend this document: more on relevant standards and X properties, lots of information on debugging and testing, and add a list of some other important things to read; also move some information to src/code-overview.txt and organize this file into sections. * doc/code-overview.txt: New file including some small parts from the old HACKING file and lots of new stuff. This file gives a brief overview of some of the bigger structures and files, with guides for a variety of task categories providing places to start looking in the code and things to look for. 2004-12-28 Elijah Newren Allow users to move the window around immediately after double-clicking to shade (#90290) * src/display.c (event_callback): only end the grab op if either there is no frame or else the frame is not mapped 2004-12-27 Elijah Newren Focus windows that manually position themselves too (fixes #107347). * src/window.h (struct _MetaWindow): add a new showing_for_first_time flag * src/window.c (meta_window_new_with_attrs): initialize showing_for_first_time flag to !mapped, (meta_window_show): replace did_placement with showing_for_first_time in the section to decided whether to focus since did_placement isn't quite what we want 2004-12-27 Elijah Newren * src/display.c (meta_display_set_input_focus_window, meta_display_focus_the_no_focus_window): Spew warning if CurrentTime is passed to the function, but don't exit prematurely. (fixes #162353) 2004-12-24 Elijah Newren * src/window.c (meta_window_show_menu): Don't show menu if all options are invalid (fixes #148915) 2004-12-24 Elijah Newren * src/window.c (window_takes_focus_on_map): Fix error in distinguishing < vs. <= introduced by the patch in #154598, restructure code so that verbose log matches code better in order ensure such mistakes are harder to make in the future (fixes #162172) 2004-12-24 Elijah Newren Thanks to mild7@users.sourceforge.net for this fix. * src/window.h: (META_WINDOW_IN_NORMAL_TAB_CHAIN): Excludes windows with skip_taskbar hint set from the alt-tab list; they'll appear in the ctrl-alt-tab list instead. (fixes #106249) 2004-12-22 Elijah Newren Wrap XSetInputFocus, making display->expected_focus_window a little more reliable (see #154598) * src/display.h: (struct _MetaDisplay): add a large comment about the expected_focus_window, add a last_focus_time field, (XSERVER_TIME_IS_BEFORE): new macro moved from window.c but fixed for 64-bit systems, (meta_display_set_input_focus_window): new function * src/display.c (meta_display_open): initialize last_focus_time, add a comment about brokenness of trying to set intial focus window, (meta_display_set_input_focus_window): new function that wraps XSetInputFocus, (meta_display_focus_the_no_focus_window): make this function closer to a wrapping of XSetInputFocus for the no_focus_window. * src/window.c (XSERVER_TIME_IS_LATER): remove this macro in favor of the improved one added to display.h * src/display.c (meta_display_open): * src/window.c (meta_window_focus): use meta_display_focus_the_no_focus_window and meta_display_set_input_focus instead of XSetInputFocus 2004-12-22 Elijah Newren * src/core.c (meta_core_user_lower_and_unfocus): * src/display.c (meta_display_get_current_tab): * src/stack.c (get_default_focus_window, meta_stack_list_windows): * src/window.c (set_net_wm_state, meta_window_should_be_showing, implement_showing, meta_window_activate, meta_window_notify_focus): * src/window.h: * src/workspace.c (meta_workspace_list_windows): Rename meta_window_visible_on_workspace to meta_window_located_on_workspace (whether or not the window was showing wasn't taken into account, which made "visible" confusing). Fixes #136314. 2004-12-22 Elijah Newren Partially resolve the conflicting requirements of windows on multiple workspaces and hidden being a global quantity for windows (fixes bug 156182; the remainder of the work is bug 87531 and is a libwnck issue) * src/display.c (event_callback): * src/window.c (meta_window_visible_on_workspace, meta_window_unstick): * src/workspace.c (meta_workspace_add_window, meta_workspace_contains_window, meta_workspace_queue_calc_showing): * src/workspace.h: Remove meta_workspace_contains_window, replace with simple comparison utilizing window->workspace * src/place.c (meta_window_place): * src/window.c (meta_window_shares_some_workspace): * src/window.h: Remove meta_window_shares_some_workspace, replace with a simple comparison utilizing window->workspace * src/session.c (save_state), * src/window.c (meta_window_new_with_attrs, meta_window_apply_session_info, meta_window_free, window_showing_on_its_workspace, meta_window_change_workspace_without_transients, meta_window_unstick, meta_window_set_current_workspace_hint, meta_window_get_workspaces): * src/window.h: * src/workspace.c (meta_workspace_free, meta_workspace_add_window, meta_workspace_remove_window): Only one workspace now 2004-12-20 Elijah Newren * configure.in: post-release version bump to 2.9.3 2004-12-20 Elijah Newren * NEWS: Metacity 2.9.2 unstable release 2004-12-20 Elijah Newren * configure.in: re-add the note about Fibonacci sequence micro version numbers that was lost with 2.8.5 2004-12-19 Elijah Newren Thanks to Baptiste Mille-Mathias for this fix. * src/metacity.schemas.in: Add a missing period at the end of a sentence. 2004-12-19 Elijah Newren When snap-moving, don't snap to transients of minimized windows since they are hidden. Fixes #157180 * src/place.c (get_windows_on_same_workspace): make the logic to determine hidden windows more thorough by calling meta_window_should_be_showing() * src/window.c (meta_window_should_be_showing): rename this function from window_should_be_showing and also export it, (implement_showing): s/window_should_be_showing/meta_window_should_be_showing/, (idle_calc_showing): s/window_should_be_showing/meta_window_should_be_showing/ * src/window.h (meta_window_should_be_showing): Add this function to the list so that it can be used in src/place.c 2004-12-19 Elijah Newren Focus the desktop when showing it. Fixes #159257. * src/display.c (event_callback): obtain a timestamp to pass to meta_screen_show_desktop * src/keybindings.c (handle_toggle_desktop): obtain a timestamp to pass to meta_screen_show_desktop * src/screen.c (meta_screen_show_desktop): add a timestamp parameter, get the most recently used window of type DESKTOP (if there is one) and focus it * src/screen.h (meta_screen_show_desktop): add a timestamp parameter 2004-12-19 Elijah Newren Thanks to ash@contact.bg for this fix. * po/POTFILES.in: Remove reference to metacity-properties.* files since Alex removed them in his 2004-12-07 commit. 2004-12-13 Elijah Newren * configure.in: post-release version bump to 2.9.2 that I forgot to do last week (oops) 2004-12-07 Alex Duggan * configure.in: * src/tools/Makefile.am: Remove deprecated capplet from GNOME 2.0 * src/tools/metacity-properties.c: * src/tools/metacity-properties.desktop.in: * src/tools/metacity-properties.glade: * src/tools/metacity-properties.png: Removed from cvs 2004-12-06 Elijah Newren * NEWS: Metacity 2.9.1 unstable release 2004-12-06 Benjamin Kahn * src/default_icon.png: Use a better default application icon. Fixes bug #160373 2004-11-16 Marco Pesenti Gritti * src/Makefile.am: Fix build out of src directory. Bug #158325 2004-11-10 James Henstridge * Makefile.am (DISTCLEANFILES): remove intltool stuff on distclean. * src/themes/Makefile.am (uninstall-local): add uninstall rule. * src/Makefile.am (libmetacity_private_la_CFLAGS): set this variable so that the files shared with metacity get compiled with different names. * configure.in: use more modern macros in some places, and make sure that $ACLOCAL_AMFLAGS is set so that rebuilds work better. * autogen.sh (conf_flags): use newer automake. 2004-11-06 Vincent Untz * src/metacity.schemas.in: gnome-panel-screenshot was renamed to gnome-screenshot 2004-11-01 Elijah Newren * configure.in: bump version to 2.9.1 2004-11-01 Elijah Newren * NEWS, README: Metacity 2.9.0 (unstable release) 2004-10-25 Elijah Newren Don't lower newly mapped windows when they're denied focus, if they are transients of the focused window. Instead, defocus the currently focused window. (fixes #151996). (Also, reenable focus stealing prevention and do a small spacing cleanup) * src/window-props.c (init_net_startup_id): fix spacing * src/window.c (window_takes_focus_on_map): re-enable focus stealing prevention, (meta_window_show): if the new window is denied focus and is a transient of the currently focused window, defocus the currently focused window but keep the transient on top; remove some old code about transients and focus; make sure that EnterNotify events won't accidentally focus the new window. 2004-10-25 Elijah Newren Fix the alt-tab order--if the most recently used window is not focused, start alt tabbing with that window instead of the one after it (fixes #156251) * src/display.c (find_tab_forward): add a skip_first parameter, (find_tab_backward): add a skip_last parameter, (meta_display_get_tab_next): if a beginning window wasn't given and the focused window isn't the tab chain, don't skip the MRU window 2004-10-22 Elijah Newren Update _NET_WM_STATE_HIDDEN so the pager on the panel will know whether to display windows as visible or hidden (#105665) * src/screen.c (queue_windows_showing): Revert the queue_windows_showing portion of the patch committed on 2004-10-16 for #142198--it was an ill-advised optimization. * src/window.c (window_showing_on_its_workspace, window_should_be_showing): split the old window_should_be_showing into these two functions, (set_net_wm_state): hidden state is more complex; use window_showing_on_its_workspace to determine the correct value 2004-10-20 Elijah Newren Patch from Soeren to fix the modifier key breakage introduced by an Xorg change. (fixes #151554) * src/keybindings.c: include X11/XKBlib.h if available, (handle_spew_mark): remove this unused function declaration, (end_keyboard_grab): new function, uses XKB if available, (process_tab_grab): use end_keyboard_grab to determine whether to end the grab, (error_on_command): make key a const char *, (process_workspace_switch_grab): use end_keyboard_grab to determine whether to end the grab 2004-10-19 Anders Carlsson * src/frame.c: (meta_window_ensure_frame): Don't try to use an ARGB visual at all if the depth isn't 32-bit. This caused major slowdowns with Composite enabled. 2004-10-16 Elijah Newren Make the "showing desktop" mode be per-workspace instead of per-screen. (fixes #142198) * src/keybindings.c (handle_toggle_desktop): access showing_desktop through the active workspace * src/screen.c (meta_screen_new): remove initialization of screen->showing_desktop, (meta_screen_update_showing_desktop_hint): rename and make not static and access showing_desktop through the active workspace, (queue_windows_showing): replace meta_display_list_windows() with screen->active_workspace->windows, (meta_screen_minimize_all_on_active_workspace_except): renamed from meta_screen_minimize_all_except since it now only works on the active workspace, (meta_screen_show_desktop, meta_screen_unshow_desktop): access showing_desktop through the active workspace * src/screen.h (struct _MetaScreen): remove showing_desktop field, (meta_screen_minimize_all_on_active_workspace_except): rename from meta_screen_minimize_all_except, (meta_screen_update)_showing_desktop_hint): export this function too * src/window.c (maybe_leave_show_desktop_mode): access showing_desktop through the active workspace and use new name for meta_screen_minimize_all_on_active_workspace_except, (window_should_be_showing): access showing_desktop through the active workspace * src/workspace.c (meta_workspace_new): initialize workspace->showing_desktop, (meta_workspace_activate_with_focus): add note that old can be NULL, update showing_desktop_hint if different on this workspace than the previous one * src/workspace.h (struct _MetaWorkspace): add showing_desktop field 2004-10-16 Elijah Newren * rationales.txt: Add new tracker bugs 2004-10-15 Elijah Newren * src/keybindings.c (reload_keymap): Fix from Rob to correct requested number of keycodes (#155247) 2004-10-13 Elijah Newren Code cleanup * src/window.c (is_in_dock_group, docks_at_end_cmp, shuffle_docks_to_end): removed functions, (meta_window_notify_focus): no need to call is_in_dock_group or shuffle_docks_to_end because of the patch from #120100 that was committed. 2004-10-13 Vincent Untz Add a keybinding to launch a terminal * src/keybindings.c: (handle_run_terminal): new function, (error_on_generic_command): new function, (error_on_command): wrapper around error_on_generic_command(), (error_on_terminal_command): new function * src/metacity.schemas.in: add run_command_terminal key * src/prefs.[ch]: (meta_prefs_init): cache the terminal command and register a gconf callback to update it, (change_notify): handle the notification of terminal command changes, (meta_preference_to_string): add the terminal command case, (update_terminal_command): new function, (meta_prefs_get_terminal_command): new function, (meta_prefs_get_gconf_key_for_terminal_command): new function 2004-10-11 Rob Adams * configure.in: bump version to 2.9.0. Add UNSTABLE warning. 2004-10-11 Rob Adams * NEWS, README: Metacity 2.8.6 (stable release) 2004-10-08 Elijah Newren Fix middle-frame-click-to-lower focus inconsistency (#154601) * src/core.c (meta_core_user_lower_and_unfocus): focus the default window in all focus modes, not just click-to-focus (EnterNotify events will not handle this case for sloppy and mouse focus) * src/display.c (event_callback): replace window->has_focus with window == display->expected_focus_window to avoid a race issue 2004-10-08 Elijah Newren Alter the meaning of expected_focus_window; doesn't affect current operation but assists in fixing some other bugs (#154598) * src/display.c (meta_display_focus_the_no_focus_window): set the expected_focus_window to NULL. * src/window.c (meta_window_notify_focus): don't NULL the expected_focus_window when that window receives a FocusIn event 2004-10-04 Elijah Newren * src/display.c (event_callback): if the root window gets focused, set the focus to the default window; this fixes the "focus-follows-mouse" behavior seen for click-to-focus mode after cancelling log out (fixes #153220) 2004-10-04 Elijah Newren Fix a variety of issues with autoraise (#134206) * src/display.h: (struct _MetaDisplay): add an autoraise_window parameter * src/display.[hc] (meta_display_focus_the_no_focus_window): new function, (meta_display_queue_autoraise_callback): new function, (meta_display_remove_autoraise_callback): new function * src/display.c (meta_display_open): intialize display->autoraise_window too, (meta_display_close): remove any pending autoraise callback, (window_raise_with_delay_callback): clear out auto_raise->display->autoraise_window too, (event_callback): call meta_display_queue_autoraise_callback instead of having the code inline, call meta_display_focus_the_no_focus_window to handle focusing that window * src/window.c (meta_window_focus): If there's a window with an autoraise timeout that isn't the window being focused, remove the autoraise timeout * src/workspace.c (meta_workspace_focus_default_window): If no autoraise timeout is queued for the given window then queue one now, call meta_display_focus_the_no_focus_window to handle focusing that window, (meta_workspace_focus_mru_window): call meta_display_focus_the_no_focus_window to handle focusing that window 2004-10-04 Elijah Newren * src/display.c (event_callback): When no window becomes focused, focus the default window instead of punting to the no_focus_window. Also, change the warning to a verbose message--this will happen frequently due to brain-damage in the X protocol. (see #125492) 2004-10-04 Elijah Newren Fix a variety of focus race conditions in all focus modes, or at least make them harder to trigger (fixes #152000) * src/core.[ch] (meta_core_user_lower_and_unfocus): add a timestamp parameter; pass it along to meta_workspace_focus_default_window * src/display.[ch] (meta_display_get_current_time_roundtrip): new function * src/display.c (event_callback): pass a timestamp to the meta_workspace_activate and meta_workspace_focus_default_window function calls * src/frames.c (meta_frames_button_press_event): pass a timestamp to meta_core_user_lower_and_unfocus * src/keybindings.c (handle_activate_workspace): pass a timestamp to meta_workspace_activate, (process_workspace_switch_grab): pass a timestamp to meta_workspace_focus_default_window and meta_workspace_activate, (handle_toggle_desktop): pass a timestamp to meta_workspace_focus_default_window, (do_handle_move_to_workspace): pass a timestamp to meta_workspace_activate_with_focus, (handle_workspace_switch): meta_workspace_activate * src/screen.c (meta_screen_new): pass a timestamp to meta_workspace_activate * src/window.c (meta_window_free): pass a timestamp to meta_workspace_focus_default_window, (idle_calc_showing): don't increment the focus sentinel here, (meta_window_minimize): pass a timestamp to meta_workspace_focus_default_window, (meta_window_client_message), pass a timestamp to meta_workspace_focus_default_window * src/workspace.h (meta_workspace_activate): add timestamp parameter, (meta_workspace_activate_with_focus): add timestamp parameter, (meta_workspace_focus_default_window): add timestamp parameter * src/workspace.c (meta_workspace_focus_mru_window): make this function take a timestamp and use it for meta_window_focus or XSetInputFocus, (meta_workspace_activate_with_focus): make this function take a timestamp and pass it along to meta_window_focus and meta_workspace_focus_default_window, (meta_workspace_activate): make this function take a timestamp and pass it to meta_workspace_activate_with_focus), (meta_workspace_focus_default_window): make this function take a timestamp, warn if its 0 but try to handle that case sanely, and pass the timestamp on to meta_window_focus or meta_workspace_focus_mru_window or XSetInputFocus 2004-09-22 Elijah Newren * src/keybindings.c (process_workspace_switch_grab): Focus the default window after the user dismisses the workspace switcher popup (fixes #123803; note that an alternate fix was made independently by David Baron for sloppy and mouse focus users) 2004-09-22 Elijah Newren Fix some uninitialized variable errors reported by valgrind (see #153338) * src/display.c (meta_display_open): initialize display->grab_resize_timeout_id, and display->grab_have_keyboard * src/ui.c (meta_ui_create_frame_window): initialize attrs.width and attrs.height 2004-09-17 Elijah Newren * src/workspace.c (meta_workspace_focus_mru_window): Don't focus a window that is minimized (fixes #147947) 2004-09-17 Kjartan Maraas * src/bell.c: (meta_bell_flash_screen): * src/compositor.c: * src/effects.c: (meta_effects_draw_box_animation): * src/fixedtip.c: (meta_fixed_tip_show): * src/frame.c: (find_argb_visual): * src/frames.c: (unsigned_long_hash), (meta_frames_manage_window), (meta_frames_apply_shapes): * src/iconcache.c: (find_largest_sizes), (find_best_size): * src/keybindings.c: (meta_spawn_command_line_async_on_screen): * src/main.c: (main): * src/menu.c: (meta_window_menu_new): * src/prefs.c: (meta_prefs_get_visual_bell), (meta_prefs_bell_is_audible), (meta_prefs_get_visual_bell_type), (meta_prefs_get_action_double_click_titlebar), (meta_prefs_get_auto_raise), (meta_prefs_get_auto_raise_delay), (meta_prefs_get_reduced_resources): * src/screen.c: (meta_create_offscreen_window): * src/tabpopup.c: (meta_ui_tab_popup_get_selected): * src/theme-parser.c: (meta_theme_load): * src/theme.c: (meta_gtk_widget_get_font_desc): * src/tools/metacity-mag.c: (mouse_press), (begin_area_grab): * src/util.c: (meta_unsigned_long_hash): A load of fixes of issues reported by sparse. Closes bug #152849 2004-09-15 Elijah Newren * src/display.c (event_callback): Remove some redundant code regarding focusing the default window (#152117) 2004-09-15 Elijah Newren Patch from Ken Harris in #135786 to focus a new default window when lowering via middle-click on the frame. * src/core.[hc], src/frames.c: rename meta_core_user_lower to meta_core_user_lower_and_unfocus * src/core.c (meta_core_user_lower_and_unfocus): if in click-to-focus mode then also move the window to the back of the mru list and focus the new default window for the active workspace 2004-09-15 Elijah Newren Focus the no_focus_window if no suitable window is in the mru list (should fix the almost contrived extra issue found in #147475) * doc/how-to-get-focus-right.txt: We no longer need to lie about only focusing panels upon explicit request. * src/workspace.c: (meta_workspace_focus_top_window): removed this function--it was more code than needed and was unreliable anyway, (meta_workspace_focus_mru_window): if a suitable window isn't in the mru list, focus the no_focus_window instead of calling focus_top_window. 2004-09-15 Elijah Newren Prevent focus inconsistencies by only providing one focus method (fixes #151990) * src/screen.c (meta_screen_show_desktop): remove call to meta_workspace_focus_top_window (it was merely focusing a window that was going to be hidden anyway, and likely the one that already had focus) * src/workspace.[hc]: remove meta_workspace_focus_mru_window and meta_workspace_focus_top_window from workspace.h, make them static functions in workspace.c 2004-09-15 Elijah Newren Remove race condition for focus window choice on window close followed by rapid mouse movement in sloppy and mouse focus modes (partially fixes #152000) * src/window.c (meta_window_free): Don't increment the focus sentinel for windows being freed, (idle_calc_showing): don't increment the focus sentinel for windows being minimized 2004-09-15 Elijah Newren Fix unwanted loss of focus to the mouse window when using keynav (fixes #101190) * src/display.c (event_callback): Ignore EnterNotify events with xcrossing.mode of either NotifyGrab or NotifyUngrab 2004-09-15 Elijah Newren Focus correct window after minimizing via the tasklist (fixes #128200; see also #107681) * src/display.h (struct _MetaDisplay): track the previously_focused_window * src/display.c (meta_display_open): initialize previously_focused_window * src/window.c (meta_window_free): clear the previously_focused_window if it's being freed, (meta_window_client_message): if we get a request to minimize the previously_focused_window and the focus_window is a dock or the desktop, focus the default window, (meta_window_notify_focus): update the previously_focused_window 2004-09-13 Rob Adams * configure.in: post-release increment 2004-09-13 Rob Adams * configure.in: bump version number * NEWS: 2.8.5 release * README: 2.8.5 release 2004-09-14 Gora Mohanty * configure.in: Added 'or' to ALL_LINGUAS. 2004-09-07 Elijah Newren Add a new write-up on making window focus consistent (see #152004) * doc/how-to-get-focus-right.txt: New document * rationales.txt: Remove references to focus bugs, instead point to doc/how-to-get-focus-right.txt 2004-09-06 Elijah Newren * rationales.txt: Add bugs regarding window focus 2004-08-29 Elijah Newren * NEWS: 2.8.4 release 2004-08-29 Elijah Newren * src/window.c (window_takes_focus_on_map): Disable focus-stealing-prevention for now; there are still some issues and hard code freeze is tomorrow...so this will have to wait until Gnome 2.10. 2004-08-27 Havoc Pennington * src/compositor.c (meta_compositor_new): disable NameWindowPixmap stuff always for now, it seemed kind of busted (paint_screen): don't grab the server during repaint, adds to the speed, though only slightly. * src/frames.c (meta_frames_set_window_background): factor out all the set_background stuff to one function; disable setting background to transparent, because it breaks existing themes. We need to add a flag in the theme XML file to say "start me with a transparent background" 2004-08-27 Elijah Newren Prevent an assertion failure that can occur after increasing the number of workspaces; also fix a warning and stacking order when a window is denied focus (fixes #150615) * src/window.c (meta_window_stack_just_below): the position of the window should be set equal to that of the one we want to be below, not 1 lower than that number * src/workspace.c (maybe_add_to_list): new function to add on_all_workspace windows to an mru_list, (meta_workspace_new): call maybe_add_to_list for all windows on the screen in order to initialize the mru_list 2004-08-26 Havoc Pennington * src/frame.c: delete extra copy of find_argb_visual so things compile * src/compositor.c (HAS_NAME_WINDOW_PIXMAP): copy the XCompositeNameWindowPixmap() stuff from xcompmgr, though I can't say I really know what it's supposed to help with (painting the window border?) 2004-08-26 Havoc Pennington * src/frame.c, src/theme.c: couple of cosmetic tweaks from resolving my local patch with the bugzilla patch from the 8-19 entry below 2004-08-26 Havoc Pennington * configure.in: move the have_xrender variable initialization up in the file since it can be set as part of composite check 2004-08-19 Havoc Pennington Fixes from Rich Wareham * src/display.h (struct _MetaDisplay): add render extension check to the display * src/display.c: check for render * configure.in: don't build compositing manager by default, don't want any nasty surprises; check for render separately from compositing manager * src/frame.c: use an ARGB visual when available for the window frame, so we can be all cool-ass 2004-08-25 Elijah Newren Make dialogs that Metacity shows follow focus-stealing-prevention conventions. (fixes one issue in #149028; see comments 47-54) * src/delete.c (delete_ping_reply_func, delete_ping_timeout_func): Make callback functions take a timestamp arg, (delete_ping_timeout_func): pass the timestamp to metacity-dialog * src/display.c (meta_display_ping_timeout): add a timestamp to the call to the ping_timeout_func, (meta_display_ping_window, process_pong_message): add a timestamp to the call to the ping_reply_func * src/display.h (MetaWindowPingFunc typedef): add a timestamp to this function typedef * src/keybindings.c (error_on_command): require a timestamp and pass the timestamp on to metacity-dialog, (handle_run_command): pass a timestamp to error_on_command * src/metacity-dialog.c (copy_of_gdk_x11_window_set_user_time): new function (temporary; only for use while using gtk+-2.4), (kill_window_question, warn_about_no_sm_support, error_about_command): make these functions take a timestamp and call copy_of_gdk_x11_window_set_user_time, (main): require the first two args to the program to be "--timestamp " * src/session.c (warn_about_lame_clients_and_finish_inter): pass a timestamp of 0 to metacity-dialog to prevent focus (it's a popup not generated by and kind of user request). Fri Aug 20 12:54:12 2004 Soeren Sandmann * src/display.c (meta_display_end_grab_op): Move wireframe code before grab is released to prevent endless loops with fullscreen windows. 2004-08-18 Havoc Pennington * src/display.h (struct _MetaDisplay): track the last_xor_rect separately from the current window size, and then use that to paint the wireframe including the frame, and taking into account shaded windows. * src/window.c (meta_window_get_xor_rect): new function to compute the xor rect; it is not really 100% right, because it uses the frame dimensions from the window at the start of the move/resize. But probably won't break in practice. 2004-08-17 Christian Rose * configure.in: Added "bs" to ALL_LINGUAS. 2004-08-16 Kjartan Maraas * configure.in: Added nb to ALL_LINGUAS. 2004-08-15 Rob Adams * configure.in: Bump version to 2.8.4 2004-08-15 Rob Adams * NEWS: 2.8.3 release 2004-08-15 Rob Adams * src/windows.c (meta_window_update_struts): use height and top/bottom struts to compute gap (copy/paste bug). 2004-08-15 Rob Adams * src/window.c (meta_window_update_struts): Allow struts larger than 1/2 the screen width/height, as long as there's a minimum sized gap between them. Patch from Bill Haneman for bug #144126. 2004-08-13 Gurban M. Tewekgeli * po/tk.po: Added Turkmen translation. * configure.in: Added "tk" to ALL_LINGUAS. Mon Aug 9 05:38:33 2004 Soeren Sandmann * src/effects.c (graphics_sync): New function. * src/effects.c (effects_draw_box_animation_timeout): Use it here to synchronize with the hardware between each frame. 2004-08-08 Rob Adams * src/window.c (meta_window_move_resize_internal): Add #ifdef around XSYNC code; fixes compile problem if XSYNC is disabled. Path for #149314 from Peter O'Shea and independently Mike Castle. Sun Aug 8 14:20:00 2004 Soeren Sandmann * src/frame.c (meta_frame_set_screen_cursor): Flush after setting cursor. (Rest of #149413). 2004-08-07 Elijah Newren * src/display.c (event_callback): activating the current workspace should be a no-op. This prevents a race condition in focus window choice when activating a window via the taskbar. Fix for #149589. 2004-08-07 Elijah Newren * src/window.c, src/window.h: Revert Rob's 2004-07-31 patch that ignored net_wm_user_time when unminimizing a window * src/window.c (meta_window_activate): If a nonzero timestamp is passed, update the window's net_wm_user_time accordingly. (see comments 102-108 of bug 118372) 2004-08-07 Rob Adams Remove some extraneous items that could sometimes appear in the window menu. Fix for #144493. * src/menu.c (menuitems): Change the second separator to key on whether there are any workspaces. (meta_window_menu_new): use NULL label instead of 0 op to identify separator * src/window.c (meta_window_show_menu): Change the conditions on the directions to take into account "holes" in the workspace layout and also only set META_MENU_OP_WORKSPACES when there's more than one workspace. 2004-08-07 Havoc Pennington * src/screen.c (meta_screen_set_cursor): add XFlush() after setting cursor, #149413 2004-08-06 Elijah Newren * src/display.c (event_callback): Focusing a window upon unshowing the desktop in various ways (panel applet or keybinding) was inconsistent for sloppy and click focus modes. Fix this by calling meta_workspace_focus_default_window after unshowing the desktop via a _NET_SHOWING_DESKTOP message. (resolves #149543) 2004-08-06 Elijah Newren * src/workspace.c (meta_workspace_focus_default_window): prevent keyboard from "getting locked" upon workspace switch, by making sure that the no_focus_window has focus if no other window does. (fixes #147475) 2004-08-05 Elijah Newren Have newly mapped windows that are denied focus appear after the focused window in the alt-tab list. This allows one to switch to such a window with a single alt-tab press. (fixes #149366) * src/window.c (ensure_mru_position_after): new function, (meta_window_show): If newly mapped window is denied focus, call ensure_mru_position_after to make the window appear after the focus window in the mru list. 2004-08-05 Elijah Newren * src/window.c (meta_window_stick): prepend window to mru list instead of appending, since making the window sticky should imply that it is the most recently used, not the least recently. (fixes #149369) 2004-08-04 Elijah Newren * configure.in: post-release version bump (2.8.3) that I forgot to do yesterday. 2004-08-03 Elijah Newren Released 2.8.2 * NEWS, README: update 2004-08-02 Elijah Newren Fix some bugs (reported in #120100) regarding the focus window when using the workspace switcher. * src/display.c (event_callback): When switching workspaces due to a _NET_CURRENT_DESKTOP message, make sure to focus the default window as well. * src/workspace.c (meta_workspace_focus_default_window, meta_workspace_focus_mru_window): Make DOCK or DESKTOP windows have lower priority than others when choosing a window to focus. (For the former function, this means don't focus them at all; for the latter, this means only focus them (via the meta_workspace_focus_top_window call) if no other mru window can be found.) 2004-07-31 Rob Adams Fix bug that caused windows to not be focused on unminimizing because of user time support. * src/window.c (meta_window_new_with_attrs): initialize focus_despite_user_time bit (window_takes_focus_on_map): focus if focus_despite_user_time despite user time, interestingly enough (meta_window_show): reset focus_despite_user_time after showing * src/window.h (_MetaWindow): add focus_despite_user_time bit 2004-07-31 Rob Adams Fix some support for EWMH hints, and fix USER_TIME support to include the DEMANDS_ATTENTION hint. Also includes some code for implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but this is disabled pending feature thaw. * COMPLIANCE: update with new information * src/display.c (meta_display_open): add new hints to list * src/display.h (_MetaDisplay): Add new atoms to struct * src/screen.c (set_supported_hint): update the list of support hints. (set_desktop_viewport_hint): new function sets the viewport hint to (0,0) as required by the spec for WMs with no viewport support. (set_desktop_geometry_hint): new function to set the desktop size hint to the size of the display, since we don't implement large desktop support, as required by the spec. (meta_screen_resize): update the geometry hint on screen resize * src/window.c (meta_window_new_with_attrs): Initialize demands_attention state (set_net_wm_state): Set demands_attention hint in the window state (meta_window_show): If we don't pop up a window because of USER_TIME, set DEMANDS_ATTENTION on the window. (meta_window_focus): When a window receives focus, remove DEMANDS_ATTENTION hint (meta_window_client_message): Allow other apps to set DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW hint includes a timestamp, use it. (update_net_wm_state): Read DEMANDS_ATTENTION state also * src/window.h (_MetaWindow): add wm_state_demands_attention bit. 2004-07-22 Rob Adams * src/metacity.schemas.in: Add trailing quotes to keybinding explanation text. Patch from Emil Soleyman-Zomalan. Fri Jun 25 17:41:53 2004 Soeren Sandmann * configure.in: Require startup-notification 0.7 2004-06-25 Rob Adams * COMPLIANCE: indicate that _NET_WM_USER_TIME is now supported 2004-06-24 Elijah Newren * src/keybindings.c: (handle_toggle_desktop): Choose correct window to focus when "un-showing" the desktop. Fixes #144900. 2004-06-24 Elijah Newren Make choice of focus window be consistent for each focus mode. Fixes #135810. * src/delete.c: (meta_window_delete): In some #if 0'ed code, replace meta_workspace_focus_mru_window with meta_workspace_focus_default_window (just in case the code becomes un-#if 0'ed out). * src/screen.c, src/screen.h: Change meta_screen_focus_mouse_window to meta_screen_get_mouse_window, and don't focus the window when found but rather return it. * src/window.c: (meta_window_free, meta_window_minimize): replace meta_workspace_focus_mru_window with meta_workspace_focus_default_window. * src/workspace.c: (meta_workspace_focus_default_window): Focus appropriately for the given focus method: click-to-focus: focus MRU window (== toplevel window) sloppy focus: focus the window under the pointer if there is such a window, otherwise focus the mru window mouse focus: focus the window under the pointer if there is such a window, otherwise don't focus anything 2004-06-24 Elijah Newren * src/window.c: Avoid a race condition on the choice of window to focus after the previously focused window gets closed or minimized. Fixes #131582. 2004-06-24 Elijah Newren * src/metacity.schemas.in: make naming for "move a window"/"move the window"/"move window" more consistent. Patch from Michael Terry for #142235. 2004-06-24 Elijah Newren * src/session.c: Change meta_warning to meta_topic on failure to connect to a session manager. Fixes #136218. 2004-06-17 Elijah Newren Add support for _NET_WM_USER_TIME * src/display.c: (meta_display_open): Add _NET_WM_USER_TIME to atom_names[], (event_callback): Manually set _NET_WM_USER_TIME upon KeyPress (doesn't work since keyboard isn't grabbed) and ButtonPress (does work), this is just a fallback for applications that don't update this themselves. * src/display.h: (struct _MetaDisplay): Add atom_net_wm_user_time field * src/screen.c: (meta_screen_apply_startup_properties): Check for TIMESTAMP provided from startup sequence as well. * src/stack.c: s/meta_window_set_stack_position/meta_window_set_stack_position_no_sync/, (meta_window_set_stack_position): New function which calls the meta_window_set_stack_position_no_sync function followed immediately by calling meta_stack_sync_to_server. * src/window-props.c: (init_net_wm_user_time), (reload_net_wm_user_time): new functions, (reload_wm_hints): also load atom_net_wm_user_time * src/window.c: new XSERVER_TIME_IS_LATER macro (accounts for timestamp wraparound), (meta_window_new_with_attrs): add timestamp attributes, (window_takes_focus_on_map): use TIMESTAMP from startup notification and _NET_WM_USER_TIME to decide whether to focus new windows, (meta_window_show): if app doesn't take focus on map, place it just below the focused window in the stack (process_property_notify): check for changes to _NET_WM_USRE_TIME, (meta_window_stack_just_below): new function * src/window.h: (_MetaWindow struct): new fields for initial_timestamp, initial_timestamp_set, net_wm_user_time_set, and net_wm_user_time, (meta_window_stack_just_below): new function 2004-06-21 Anders Carlsson * src/common.h: * src/menu.c: (menu_closed), (activate_cb): * src/window.c: (menu_callback): Add a timestamp argument to menu functions and use it in meta_window_delete. 2004-06-21 Anders Carlsson * src/window.c: (meta_window_client_message): Get the timestamp from the client message. Sat Jun 19 02:21:08 2004 Soeren Sandmann Fix bug 143333, support for update counter spec, and 109362, schedule compensation events when events are ignored. * src/display.c (meta_display_open): Add _NET_WM_SYNC_REQUEST and _NET_WM_SYNC_REQUEST_COUNTER atoms. Remove the old METACITY_SYNC_COUNTER stuff. (meta_display_begin_op): Setup the sync counter * src/xprops.c, src/xprops.h, src/window-props.c, src/display.h: Add new atoms. * src/window.c (send_sync_request): new function. (meta_window_move_resize_internal): send a sync request before resizing. (check_move_resize_frequence): Rework logic to also check the SYNC case. If an event is ignored return the remaining time. (update_resize_timeout): Timeout that gets called when a compensation event is scheduled. (uddate_resize): schedule compensation events when an event is ignored. (meta_window_handle_mouse_grap_op_event): When an alarm is received and sync was turned off, turn it back on. * src/window.h (struct MetaWindow) Add some variables 2004-06-16 Havoc Pennington * configure.in: bump version, add the UNSTABLE note * Branch off GNOME 2.6, we are now officially unstable 2004-06-04 Jeff Waugh * src/metacity.schemas.in: Set titlebar_uses_system_font = false. The previous default was almost violent in its lack of appreciation for human beings. In fact, this entire setting should probably be removed, but for now, let's just fix the default. Permission granted by Havoc. 2004-05-04 Elijah Newren * configure.in: 2.8.1 * NEWS: update 2004-05-02 Rob Adams * src/metacity-dialog.c (warn_about_no_sm_support): make the no sm support warning dialog resizable, since the default GTK warning dialog not has default not resizable. Fix for #141672 from Olivier Crete. 2004-04-29 Rob Adams * src/prefs.c (change_notify): Add a value type check for the visual bell/audible bell gconf settings. Patch from Jarrod Johnson for #141409. 2004-04-19 Mark McLoughlin Syncing across this change from libwnck. Patch from Neil Muller in bug #133979. * src/iconcache.c: (find_largest_sizes), (find_best_size): Don't down-size nitems from a gulong to an int. Fixes a crash with enlightenment, apparently. 2004-04-16 Iñaki Larrañaga * configure.in: Added "eu" (Basque) to ALL_LINGUAS. 2004-04-15 Elijah Newren * src/display.c: Prevent unwanted grab op from occurring. Previously, for some people under certain conditions, clicking and releasing the mouse button rapidly enough would result in Metacity starting a move operation due to ignoring the button release. This should fix that problem (it does for me). See bug 136587. 2004-04-11 Rob Adams * configure.in: Make the --enable-xinerama switch work properly. Fix for #138562 from foser@gentoo.org. 2004-04-09 Guntupalli Karunakar * configure.in: Added "gu" (Gujarati) to ALL_LINGUAS. 2004-03-27 Tõivo Leedjärv * configure.in: Added et to ALL_LINGUAS. 2004-03-24 Guntupalli Karunakar * configure.in: Added "pa" (Punjabi) to ALL_LINGUAS. 2004-03-21 Havoc Pennington * configure.in: 2.8.0 * NEWS: update 2004-03-07 Elijah Newren * rationales.txt: Bring up to date (see bug 136252). 2004-03-07 Havoc Pennington * configure.in: 2.7.1 2004-03-04 Paisa Seeluangsawat * configure.in: Added "th" (Thai) to ALL_LINGUAS. 2004-03-01 Rob Adams * src/stack.c (compute_layer): don't promote due to transiency; we handle that elsewhere now. (ensure_above): perform layer promotion here as well as stack position promotion. Note that this means that we need to do stack constraints now on layer change now. (get_maximum_layer_of_ancestor): remove function (max_layer_func): remove function (MaxLayerData): remove struct 2004-02-28 Rob Adams Revert 2/27 patch for layer promotion. 2004-02-27 Rob Adams * src/window.c (meta_window_notify_focus): only move on MRU list if the window belongs on the workspace, since the FocusIn event could be for a window whose workspace we've since switched away from. Possible fix for #122016. * src/workspace.c (meta_workspace_contains_window): search for the workspace in window->workspaces rather than the window in workspace->windows. Since the number of workspaces is at most 36, this is a O(1) lookup rather than a O(n) lookup. Sorry; couldn't resist. 2004-02-27 Rob Adams * src/metacity.schemas.in: Change move_to_workspace_left/right/up/down keybindings to arrow to avoid conflicting with new keybindings in spacial nautilus. 2004-02-27 Rob Adams Handle layer promotion of transient descendants of layer-promoted windows to also be layer promoted, using a simple iterative algorithm. * src/stack.c (compute_layer): change name to promote_layer, and convert to simply perform any necessary layer promotion without computing the standalone layer. (max_layer_func): use window->layer instead of get_standalone_layer (get_maximum_layer_of_ancestor): use window->layer instead of get_standalone_layer (meta_stack_ensure_sorted): implement iterative algorithm, explained in a long comment. * src/window.h: add a tmp_layer field used by stack.c for determining if the stack is dirty or not, since maintaining this information in meta_stack_ensure_sorted is no longer practical. 2004-02-23 Rob Adams Add my copyright notice to a number of files on which it should already exist. * src/window.c (meta_window_notify_focus): modify code to move to front of MRU list so that we can have an assert that it was there in the first place. This code may be causing some crashes. See #131196. 2004-02-22 Christian Rose * configure.in: Added "en_CA" to ALL_LINGUAS. 2004-02-19 Rob Adams * src/prefs.h: remove trailing comma in MetaKeyBindingAction enum. Fix for #134868 thanks to bugzilla-gnome@thewrittenword.com. 2004-02-16 Rob Adams * src/window.c (update_move): reset drag state after shaking loose or reattaching. Fix for #132625. 2004-02-15 Anders Carlsson * src/menu.c (meta_window_menu_new): Actually translate a message, don't just mark it for translation. 2004-02-14 Elijah Newren * src/workspace.c: When moving a window to a different workspace, prepend it to the mru list insted of appending it. Fixes #134368. 2004-02-14 Rob Adams If we're moving a window and receive a _NET_CURRENT_DESKTOP message indicating a workspace switch, bring along the drag window to the new workspace, solving a potentially weird bug where the window would be lost on the old workspace. This also makes it possible to implement edge flipping in an external program with just a few lines of code. Patch for #131630 from ed@catmur.co.uk. * src/keybindings.c (switch_to_workspace): remove function -- no longer needed. (handle_activate_workspace): call meta_workspace_activate instead of switch_to_workspace * src/workspace.c (meta_workspace_activate_with_focus): if we're in a move grab op, bring along the drag window. 2004-02-14 Rob Adams * configure.in: Add configure option to not even try using xinerama, to make metacity buildable on systems with no shared library version of the xinerama libraries. Patch for #134203 from Julio M. Merino Vidal. 2004-02-01 Rob Adams * COMPLIANCE: Bring up to date with current draft EWHM. 2004-01-27 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Use the 'utility' frame for dialogs too. 2004-01-24 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Updated this theme. 2004-01-21 Elijah Newren * src/screen.c (set_supported_hint): Removed some duplicate entries. 2004-01-17 Rob Adams * src/metacity.schemas.in: Default binding removed for toggle_shaded, since we don't have anything in the graphical UI for it any more. 2004-01-17 Rob Adams * src/window.c (meta_window_show_menu): Don't show left/right/up/down if a window is sticky. Make "On Top" insensitive for docks, splash screens, and desktops since it has no effect anyway. 2004-01-10 Rob Adams * src/metacity.schemas.in: update default action_double_click_titlebar to be toggle_maximize instead of toggle_shade. See #131126. 2004-01-10 Rob Adams * src/constraints.c (meta_window_constrain): if we maximize after placement, and the window is too big to fix in the work area, define a sane saved_rect approximately with dimensions three-quarters approximately three quarters the size of the work area. This avoids the problem where large windows would unmaximize and actually get bigger. See #93590. 2004-01-09 Thomas Fitzsimmons Add _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS. * src/display.c: include xprops.h (process_request_frame_extents): new function (meta_display_open): add _NET_FRAME_EXTENTS and _NET_REQUEST_FRAME_EXTENTS atoms (event_callback): handle frame extents message * src/display.h (struct _MetaDisplay): add atom_net_frame_extents and atom_net_request_frame_extents * src/theme.c (meta_pango_font_desc_get_text_height): make font_desc parameter const * src/ui.c: include prefs.h (meta_ui_theme_get_frame_borders): new function * src/window.c (update_net_frame_extents): new function (meta_window_move_resize_internal): update frame extents property when frame geometry changes * src/screen.c (set_supported_hint): add atom_net_frame_extents and atom_net_request_frame_extents 2004-01-09 Calum Benson * src/themes/Atlanta/metacity-theme-1.xml: Ensure Atlanta window buttons get larger when using large print themes. Fixes #123469. 2003-01-04 Rob Adams Maintain the button grab for sloppy and mouse focus all the time. This fixes a number of problem introduced by trying to drop the grab; we now do this only for click to focus mode. This has the unfortunate effect that #102209 reappears for sloppy and mouse focus, but this seems unavoidable, because of limitations in the X protocol. See #115072. * src/display.c (meta_display_grab_focus_window_button): #if 0 the section on not grabbing unless in click-to-focus mode. * src/window.c (meta_window_notify_focus): drop focus button grab on FocusIn and acquire it on FocusOut only when in click-to-focus mode. 2004-01-03 Robert Sedak * configure.in: Added "hr" in ALL_LINGUAS. 2003-01-02 Rob Adams * README: Update reference to EWMH. * HACKING: Add a reference to COMPLIANCE and to the ICCCM and EWHM. 2003-12-25 Havoc Pennington * src/compositor.c (process_reparent): handle ReparentNotify, and add a lot of debug output. 2003-12-25 Havoc Pennington * src/compositor.c (meta_compositor_process_event): change to track all children of the root window, not only mapped children; this keeps us from losing track of the stacking order * src/display.c (event_callback): don't do any of the compositor event handling inline, do it all in compositor.c 2003-12-21 Rob Adams Reorganize the window menu according to discussion on #110904. The workspace name mnemonic chunk of the patch is thanks to Jonathan Blandford. * src/common.h: add MENU_OP_ABOVE, MENU_OP_UNABOVE, MENU_UP_MOVE_TO_* menu ops. * src/core.c (meta_core_get_menu_accelerator): add accelerator for the new menu ops. * src/menu.c: add checked attribute in _MenuItem struct to display a checkmark next to a menu item. Add the new menu items to menuitems. (get_workspace_name_with_accel): Add mnemonics even to renamed workspaces. (menu_item_new): provide support for the checked attribute (meta_window_menu_new): construct new submenu for workspace switching. * src/window.c (menu_callback): implement support for the new menu ops. (meta_window_show_menu): don't use the OP_*SHAPE operations, and compute which of the OP_MOVE_TO_* ops should be used for the current workspace and workspace layout. Add the OP_*ABOVE operations. 2003-12-20 Arafat Medini * configure.in: Added Arabic locale "ar" to ALL_LINGUAS 2003-12-17 Rob Adams * src/display.c (meta_display_open): initialize grab_wireframe_active to FALSE. Fix for #128090. 2003-12-17 Rob Adams * src/tabpopup.c (meta_ui_tab_popup_new): Don't try to call utf8_strndup on a null title for an entry. Fix for #128566. * src/workspace.c (meta_workspace_free): Call g_list_free on the mru_list, since with sticky windows that MRU list could well not be emtpy. See #122016. 2003-12-13 Rob Adams * src/window.c (meta_window_new_with_attrs): set on_all_workspaces in all cases _before_ adding to the workspaces, so that windows initially on all workspaces are added correctly to the MRU lists. Fix for #120907. * src/workspace.c (meta_workspace_add_window): handle sticky windows so that we add to add mru lists if needed (meta_workspace_remove_window): handle sticky windows so that they are removed from all mru lists if needed. 2003-12-12 Havoc Pennington * src/window.c (meta_window_free): unstick window to get it out of mru_list it should not be in; assert that window has been removed from all mru_list. Perhaps fixes #122016 crash. 2003-11-29 Havoc Pennington * fix up compositing manager to somewhat work 2003-11-26 Rob Adams * COMPLIANCE: fix a couple of minor typos. 2003-11-24 Havoc Pennington * src/compositor.c (meta_compositor_new): fix the extension checks 2003-11-24 Havoc Pennington * src/iconcache.c (meta_icon_cache_init): init prev_mask field * src/window.c (meta_window_new_with_attrs): init xgroup_leader prior to use 2003-11-24 Havoc Pennington * src/display.c (meta_display_begin_grab_op): add an event_serial argument and use it when the pointer is already grabbed automatically on the button press. May fix bug #126871 2003-11-24 Havoc Pennington * Apply patch from Gregory Merchan to avoid using CurrentTime when setting input focus. Bug #108881 2003-11-23 Havoc Pennington * src/compositor.c: move xcompmgr code in here (minus drop shadows), untested since Keith's server just crashes at the moment. "It compiles" 2003-11-20 Havoc Pennington * src/window.c (meta_window_new_with_attrs): new function * src/display.c, src/screen.c: create the compositor and feed windows and events to it 2003-11-20 Havoc Pennington * src/window.c (meta_window_notify_focus): revert the change here 2003-11-17 Rob Adams Create COMPLIANCE document describing metacity specification compliance. Right now gives detailed EWMH compliance; still need to add ICCCM compliance information. Also some minor fixes to bring metacity into compliance on some points. * COMPLIANCE: new file * src/display.h, src/display.c (meta_display_open), src/screen.c (set_supported_hint): add atom_net_wm_action_fullscreen and atom_net_wm_action_minimize * src/window.c (set_allowed_actions_hint): some fixes to which hints to set and add fullscreen and minimize. 2003-11-16 Rob Adams * src/window.c (meta_window_notify_focus): add paranoia check to make sure a window is really on a workspace before inserting it at the beginning of the MRU list. Maybe there's a race condition with focusing and workspace switching. Hopefully a fix for #122016. 2003-11-15 Havoc Pennington * src/main.c (main): fix warning * src/compositor.c: add a new file to contain compositing manager functionality; not yet implemented at all. 2003-11-15 Rob Adams Inherit visual from frame window so that metacity will work with the new compositing manager extension work by Keith on freedesktop.org, so that ARGB windows can be full alpha-transparent without a metacity frame getting drawn in the background. In the long term, we need to actually set alpha values when drawing the frame so that it will really work; this is a stopgap solution. Patch from Keith Packard; see Bug 126875. * src/frame.c (meta_window_ensure_frame): pass client visual to frame. * src/ui.[ch] (meta_ui_create_frame_window): add new xvisual parameter and use it to create new window. 2003-11-15 Rob Adams * src/window.c (update_net_wm_type): don't set window->type_atom here so that the type-inference code will actually be called. Fix for #126873 from Keith Packard. 2003-11-08 Rob Adams * src/window.c (meta_window_move_resize_internal): configure frame first if we grow more than we shrink combined in both dimensions. Patch from Soren Sandmann for #108925. 2003-11-07 Rob Adams * src/place.c (meta_window_place): use maximize_after_placement to automaximize in meta_window_place; avoids a problem with not recalculating the frame geometry after auto-maximizing. 2003-11-07 Rob Adams * src/window.c (window_should_be_showing): show the window if it's a transient of a dock or desktop, since otherwise such windows are invisible in show desktop mode. Fix for #124648. 2003-11-07 Rob Adams * src/main.c (main): Try harder to find a theme in the event that the theme in the preference cannot be found. Patch from Marcin Krzyzanowski. See #125815. * src/place.c (meta_window_place): use "visual" centering for dialog placement and clip new dialogs to an xinerama workspace. Fix for #118336. 2003-10-30 Havoc Pennington * src/menu.c (meta_window_menu_new): patch to avoid creating stick/unstick menu items when only one workspace, bug #116563 from Michael Terry 2003-10-25 Havoc Pennington * src/window.c (meta_window_notify_focus): if a window is focused which is not either a dock or a transient in the same group as a dock, shuffle all dock/desktop windows to the end of the MRU list so they won't annoyingly get focus all the time. #123816 2003-10-15 Yukihiro Nakai Gettextize metacity-theme-viewer. #121747 * src/theme-viewer.c: gettextize. * po/POTFILES.in: Add src/theme-viewer.c 2003-10-13 Havoc Pennington In the "prefs cause code complexity" department, here's a "sloppy focus die die die" kind of moment. * src/display.c (meta_display_grab_focus_window_button): don't grab in sloppy focus mode, since we were dropping the grab on window enter anyway this just removes races from the current behavior. * src/display.c (prefs_changed_callback): ungrab/grab on focus mode changes, since we treat sloppy and click differently. 2003-10-12 Havoc Pennington Merge reduced_resources mode patch from the branch. Offers wireframe and no-animations. * src/window.c (implement_showing): no animation if we are in reduced resources mode * src/prefs.c: add REDUCED_RESOURCES pref * src/window.c (meta_window_update_keyboard_resize): fix to modify grab_anchor_window_pos to grab_wireframe_rect if appropriate instead of window->rect * src/display.h (struct _MetaDisplay): add grab_start_serial used to avoid responding to events that occurred prior to the grab initialization. Still broken in various ways, specifically EnterNotify that occurred prior to XGrabPointer is processed as if it occurred after. * src/window.c (meta_window_update_keyboard_move): add this instead of meta_window_warp_pointer() crack * src/effects.c (meta_effects_update_wireframe): draw a kind of grid for the wireframe, instead of just a rectangle, like twm * src/screen.c (meta_screen_new): line width of 3 for the XOR gc "Reduced resources" mode based on wireframe patch from Erwann Chenede. Still pretty buggy. * src/keybindings.c (process_keyboard_move_grab) (process_keyboard_resize_grab): add gruesome wireframe hacks * src/display.c (meta_display_end_grab_op): end wireframe (meta_display_begin_grab_op): begin wireframe * src/effects.c (meta_effects_end_wireframe) (meta_effects_update_wireframe, meta_effects_begin_wireframe): routines to draw the wireframe stuff * src/window.c (window_should_be_showing): hide window when doing wireframe, commented out as it breaks grab * src/window.c (meta_window_refresh_resize_popup): handle wireframe * src/screen.c (meta_screen_new): create a screen->root_xor_gc for use in drawing wireframes * src/frames.c (meta_frames_push_delay_exposes): repaint everything before we delay 2003-10-11 Havoc Pennington * src/display.c (meta_display_begin_grab_op): initialize display->grab_have_pointer to FALSE, previously I think you could get a case where we didn't have the grab and thought we did. Bugs were reported with this happening. Of course we still have the "why did the grab fail" problem, but it should be less noticeable with this fixed. 2003-10-06 Rob Adams * src/constraints.c (constraint_onscreen_*_func): disable onscreen resize constraints for right, left, and bottom, since there is no way to violate onscreen constraints by resizing in these directions and the code to implement the constraints made some incorrect assumptions. Fix for #120701, #120756, #123165, #123631, #123838. 2003-10-06 Žygimantas Beručka * configure.in: Added "lt" to ALL_LINGUAS 2003-10-01 Havoc Pennington * NEWS: update * configure.in: 2.6.2 2003-09-30 Havoc Pennington * src/window.c (meta_window_queue_move_resize): add the moveresize idle at META_PRIORITY_RESIZE so it runs before GTK does any drawing, may fix bug #109211 (seems to for me) * src/ui.h (META_PRIORITY_RESIZE): add this between GTK resize/redraw priorities * src/display.c (meta_display_queue_retheme_all_windows): remove some debug spew from meta_warning 2003-09-30 Havoc Pennington * src/testasyncgetprop.c: remove nonstandard header include, #121870 2003-09-30 Havoc Pennington * src/tools/metacity-message.c (main): call bind_textdomain_codeset(), fix from Yukihiro Nakai bug #121743 2003-07-28 Rached Ben Mustapha Fix bug #118428 * src/window.c (redraw_icon): Also redraw window icon if the window is not mapped but its frame is. (idle_update_icon): Unset the window->update_icon_queued flag. 2003-09-29 Havoc Pennington * src/tabpopup.c (meta_ui_tab_popup_new): put a random cap on number of characters in the title of each window, bug #109301 2003-09-29 Havoc Pennington * configure.in: put -lXext in Xrandr check, bug #115996 2003-09-29 Havoc Pennington * src/wm-tester/test-size-hints.c: a little program to test size hints, for now just a 0x0 min size to verify bug #113320 2003-09-29 Havoc Pennington * src/async-getprop.c (async_get_property_handler): attempt to fix this to return the data as an array of long even on 64-bit as with XGetWindowProperty() breakage, bug #114035, credit to Gwenole Beauchesne for tracking down. 2003-09-29 Havoc Pennington * src/xprops.c (cvtINT16toInt): fix the 64-bit check not to use macros from the X tree that don't get set * configure.in: check for sizes of various types 2003-09-29 Havoc Pennington * src/delete.c (meta_window_delete): don't move the focus after you click the close button on a window. bug #108706 2003-09-29 Havoc Pennington * src/main.c (find_accessibility_module): fix warnings (one was a real bug) * src/ui.c (meta_gdk_pixbuf_get_from_pixmap): fix warning that probably explains remaining crash on bug #116923. Jeez, need to use -Werror here or something. Fix #103575, spawn child processes on proper screen. * src/keybindings.c (error_on_command): pass --screen to metacity-dialog (handle_run_command): launch user command with DISPLAY reflecting the screen you launch it from * src/delete.c (delete_ping_timeout_func): pass --screen to metacity-dialog 2003-09-26 Havoc Pennington * src/display.c (event_callback): when focus on root window becomes None, set it to something other than None so keybindings keep working and print a warning about how some application sucks. #84564 (event_callback): Fix debug spew to print focus event details properly (meta_display_open): when setting initial focus, always use RevertToPointerRoot and fix the focus if it's None or PointerRoot 2003-09-26 Padraig O'Briain * src/Makefile.am: Add -DMETACITY_LIBDIR to support loading of modules * src/main.c: Add functions find_accessibility_module, accessibility_invoke_module and accessibility_invoke (main); Check whether GConf accessibility key is true and if so load accessibility modules. This code is based on the libgnome code. src/tabpopup.c (meta_ui_tab_popup_new): Set accessible role of accessible for label containing window name to STATUSBAR so AT can be aware of window name. This fixes bug #120025 2003-09-24 Havoc Pennington * src/session.c (io_from_warning_dialog): fix hang when we get EOF, #121376 from Laurent Vivier 2003-09-22 Taneem Ahmed * configure.in: Added "bn" to ALL_LINGUAS. 2003-09-20 Åsmund Skjæveland * configure.in: Added Norwegian (nynorsk) translation code to ALL_LINGUAS 2003-09-20 Rob Adams Fix bug where multiple entries could appear in MRU lists, or no entry when sticking/unsticking windows. Fix for #122016 * src/window.c (meta_window_stick): use window->screen->workspaces instead of window->workspaces. (meta_window_unstick): use window->screen->workspaces instead of window->workspaces. 2003-09-19 Rob Adams Fix a bug with partial-width panel struts caused by incorrect computation of rectangle widths, and another when using different screen resolutions on xineramas. See #122404. Also fix a crash bug with the MRU list when sticking and unsticking windows. See #120809. * src/constraints.c (get_outermost_onscreen_positions): Fix off-by-one error with partial-width struts. * src/window.c (meta_window_update_struts): Fix off-by-one error with partial-width struts. (meta_window_stick): assign back to GList after g_list_append (meta_window_unstick): assign back to GList after g_list_append * src/workspace.c (ensure_work_areas_validated): For right and bottom struts, compute strut relative to root window and not to xinerama edge in compliance with EWMH recommendations. 2003-09-17 Fatih Demir * configure.in: Added "ta" (Tamil) to the languages' list. Wed Sep 10 15:38:09 2003 Jonathan Blandford * configure.in: Rerelease 2.4.0.1 to fix glib-gettext problem. 2003-09-08 Havoc Pennington * configure.in: remove "this is the unstable branch" warning 2003-09-08 Havoc Pennington * configure.in: 2.6.0 2003-09-04 Havoc Pennington * configure.in: 2.5.5 * HACKING: add instructions on how to make a release 2003-08-29 Rob Adams * src/ui.c (meta_gdk_pixbuf_get_from_pixmap): harden against null return from gdk_pixmap_foreign_new. Fix for #116923. 2003-08-26 Guntupalli Karunakar * configure.in: Added "hi" (Hindi) to ALL_LINGUAS. 2003-08-20 Rob Adams Complete the transition to using the MRU window as the default focus window instead of the topmost window; fixes a number of problems with sloppy focus and utility windows. See #112031. * src/window.c (meta_window_free): call meta_workspace_focus_mru_window (meta_window_minimize): call meta_workspace_focus_mru_window 2003-08-20 Rob Adams * src/constraints.c (meta_window_constrain): do northwest resize when maximizing and fullscreening to avoid potential "off-by-one" problems. 2003-08-19 Rob Adams * src/stack.c (get_standalone_layer): put windows with wm_state_below at the bottom. Make this higher priority than full screen layer; see #120238. 2003-08-18 Rob Adams * src/constraints.c (meta_window_constrain): recalculate frame geometry if the window gets maximized after placement, since it's likely to change. Fix for #120117. 2003-08-17 Ray Strode * src/delete.c (meta_window_delete): Use MRU list to find focusing window after a window is deleted instead of using top window. Fix for #108643. 2003-08-16 Havoc Pennington Patch from Soeren Sandmann #108926 to improve opaque resize * src/frame.c (meta_window_ensure_frame): new function * src/ui.c (meta_ui_create_frame_window): new function to create a frame with GDK, so that GDK's invalidation etc. work properly 2003-08-16 Havoc Pennington * src/display.c (xcursor_for_op): fix cursor for META_GRAB_OP_MOVING, #111943 from John Paul Wallington 2003-08-15 Rob Adams * src/constraints.c (meta_window_constrain): move to upper left corner since we're resizing/moving instead of moving/resizing. Fix for #119988. 2003-08-15 Ray Strode Changed MRU list to be per workspace instead of per display, so sticky windows don't hijack the window focus after workspace switching (Bug #97635). * src/delete.c (meta_window_delete): Use meta_workspace_focus_top_window instead of meta_screen_focus_top_window. * src/display.c (meta_display_open): Stop using display->mru_list. (find_tab_forward): (find_tab_backward): (meta_display_get_tab_list): Use workspace->mru_list instead of display->mru_list and remove unneeded calls to meta_window_visible_on_workspace * src/display.h: Remove mru_list from MetaDisplay * src/keybindings.c (handle_toggle_desktop): Use meta_workspace_focus_top_window instead of meta_screen_focus_top_window. * src/screen.c (meta_screen_focus_top_window): (meta_screen_focus_default_window): Remove functions. (meta_screen_show_desktop): Use meta_workspace_focus_top_window instead of meta_screen_focus_top_window. * src/screen.h: Remove meta_screen_focus_top_window and meta_screen_focus_default_window declarations. * src/window.c (meta_window_new): Stop using display->mru_list. (meta_window_free): Use meta_workspace_focus_top_window instead of meta_screen_focus_top_window and stop using display->mru_list. (meta_window_stick): Add sticky window to all workspace MRU lists. (meta_window_unstick): Remove non-sticky window from the workspace MRU lists it doesn't belong in. (meta_window_notify_focus): Move newly focused window to the front of active workspace's MRU list. * src/workspace.c (meta_workspace_new): Initialize workspace->mru_list to NULL. (meta_workspace_add_window): Add window to workspace's MRU list. (meta_workspace_remove_window): Remove window from workspace's MRU list. (meta_workspace_activate_with_focus): Use meta_workspace_focus_default_window instead of meta_screen_focus_default_window. (meta_workspace_focus_default_window): (meta_workspace_focus_mru_window): (meta_workspace_focus_top_window): Add functions. * src/workspace.h: Add mru_list to MetaWorkspace and add function declarations for meta_workspace_focus_default_window, meta_workspace_focus_mru_window, meta_workspace_focus_top_window. 2003-08-14 Rob Adams Allow windows that are too tall for the workarea to break the onscreen constraints just enough so that their bottom edges can be made visible. Fix for #106740. Also, changes constraints to constrain the resize and then the move to avoid complexities in the code for the above fix. * src/constraints.c (get_outermost_onscreen_positions) Compute the "effective" height of the work area and the minimum size for the window to compute a value by which a window is allowed to violate the top constraint. (meta_window_constrain): convert to a resize then a move instead of a move then resize. 2003-08-13 Rob Adams * configure.in: remove metacity.spec from AC_OUTPUT 2003-08-13 Havoc Pennington * metacity.spec.in: remove, nobody is maintaining it. 2003-08-13 Laurent Dhima * configure.in: Added "sq" to ALL_LINGUAS. 2003-08-10 Havoc Pennington * src/screen.c (meta_screen_new): don't select for button press/release events, as that keeps other clients from doing so, and it doesn't seem that metacity has any reason to do it. Patch from Andreas Volz. 2003-08-08 Bastien Nocera * src/metacity-dialog.c: (kill_window_question), (warn_about_no_sm_support): fix markup being ignored when a window title has a forbidden character in it (eg. "Send & Receive") * src/tools/metacity-window-demo.c: fix warning 2003-07-29 Arvind Samptur * src/xprops.c (utf8_list_from_results): Number of strings we are processing is one more than required. Also get the string count right even without a null byte at the end. Pointed out by Havoc. 2003-07-27 Rob Adams * src/window.c (update_move): Update window shaking loose so that the window is moved to the pointer and certain drag state is properly restored once windows "reattach". Fix for #115000 based on the patch by Jurg Billeter. * src/screen.c (meta_screen_resize): Invalidate work areas after an xrandr screen size update. Fix for #117230. * src/stack.c (window_is_fullscreen_size): Check the bottom corner of the window in addition to the top corner. Fix for #118194. * src/constraints.c (meta_window_constrain): Support aspect ratio hints in the new constraints code. Fix for #113798. * src/tools/metacity-window-demo.c (toggle_aspect_ratio): toggle the aspect ratio hints to force a 16:9 aspect ratio. (do_appwindow): add a button to toggle aspect ratio. 2003-07-27 Havoc Pennington * src/theme-viewer.c (run_theme_benchmark): also measure wall clock time, and run over a number of window sizes. 2003-07-15 Havoc Pennington * NEWS: update * configure.in: 2.5.3 2003-07-12 Pablo Saratxaga * configure.in: Added Walloon (wa) to ALL_LINGUAS 2003-07-04 Havoc Pennington * Makefile.am (EXTRA_DIST): add rationales.txt 2003-07-02 Jordi Mallach * src/metacity.desktop.in: Add X-GNOME-Bugzilla entries. 2003-07-01 Padraig O'Briain * src/keybindings.c (process_tab_grab): Activate window before ending grab. This fixes bug #114037. 2003-06-20 Rob Adams * src/window.c (meta_window_unmaximize): Update grab state when we unmaximize so double-clicking doesn't cause weird window-jumping problems. See #116292. 2003-06-29 Rob Adams * src/constraints.c (meta_window_constrain): Actually maximize after placement. See #116285. 2003-06-26 Havoc Pennington * src/workspace.c (meta_workspace_invalidate_work_area): nuke the lists of struts here, to improve confidence that we never try to use them after a window with rects in the list gets freed. (it wasn't broken before I don't think, just making the code more robust against future mods) * src/window.c (meta_window_update_struts): replace magic "75" with a macro * src/constraints.c (constraint_hints_applies_func): don't apply hints to maximized or fullscreen, rather than only fullscreen (constrain_move): add paranoia max number of iterations to the heuristic loop 2003-06-26 Rob Adams Add keybinding to allow the user to toggle _NET_WM_STATE_ABOVE on windows. Disabled by default. See #98387. * src/keybindings.c (handle_toggle_above): new function implements the keybinding * src/metacity.schemas.in: add toggle_above keybinding * src/prefs.[ch]: add toggle_above keybinding * src/window.[ch] (meta_window_make_above): new function to put a window into the above state (meta_window_unmake_above): new function takes a window out of the above state 2003-06-26 Mohammad DAMT * po/id.po: Added Indonesian translation * configure.in: Added "id" to ALL_LINGUAS 2003-06-25 Rob Adams Update constraints code to support the new _NET_WM_STRUT_PARTIAL EWMH draft specification. See #86682. Also, fix a bug involving work area invalidation on metacity startup. Fix for #108497. Finally, some minor fixes for full screen windows. * src/window.h: Add new MetaStruts structure to store strut rects for a window. Remove has_struts and do_not_cover flag, and support new MetaStruts instead of the four ints. * src/window.c (meta_window_new): change initialization to work with new struts. Also, move meta_window_update_struts call to after the workspaces are initialized to fix #108497. Remove do_not_cover and related code. (process_property_notify): add strut_partial (update_struts): change function name to meta_window_update_struts and expose in external MetaWindow API. Support partial width struts and the new strut rects. * src/workspace.h: add new GSLists containing pointers to all relevant struts for this workspace. * src/workspace.c (meta_workspace_new): initialize the list of strut rects for this workspace. (meta_workspace_free): free the strut rect lists (ensure_work_areas_validated): support new struts and new strut rect lists. Unleash the per-xinerama work areas. * src/constraints.c (get_outermost_onscreen_positions): Use the current window position along with the new per-workspace strut rects to compute the constraints that apply to a particular window. (constraint_hint_applies_func): don't do hints constraints on fullscreen windows (update_position_limits): for maximized windows use the work areas to set the position limits; for other windows rely on the struts constraints to be computed later in get_outermost_onscreen_positions (meta_window_constrain): don't apply aspect ratio hints to full screen windows * src/display.c (meta_display_open): add _NET_WM_STRUT_PARTIAL atom (meta_rectangle_equal): new helper function for MetaRectangles (event_queue_callback): #ifndef out if USE_GDK_DISPLAY not set to avoid compiler warning * src/display.h: add atom_net_wm_strut_partial, and add meta_rectangle_equal. * src/screen.c (meta_screen_rect_intersects_xinerama): change _window_intersects_ to _rect_intersects_ which is more useful now. (meta_screen_resize_func): update struts on windows with struts since struts are relative to the screen size, and this function is called when the screen size updates. * src/screen.h (meta_screen_rect_intersects_xinerama): change _window_intersects_ to _rect_intersects_ which is more useful now. * src/window-props.c (meta_display_init_window_prop_hooks): add hook for strut_partial * src/tools/metacity-window-demo.c: Support partial-width struts on the dock window tests for metacity testing purposes. 2003-06-22 Samúel Jón Gunnarsson * configure.in: Added "is" to ALL_LINGUAS 2003-06-12 Rob Adams * src/display.c (event_callback): Focus on mouse click in sloppy/mouse to fix keynav. Fix for #115072. 2003-06-12 Rob Adams * src/Makefile.am: honor --disable-schemas-install. Fix for #106123 from Julio Merino 2003-06-12 Rob Adams Remove legacy support for Gnome 1 hints, since we deem it unlikely that anyone is running a current metacity with Gnome 1. The removed hints are _WIN_WORKSPACE, _WIN_LAYER, _WIN_PROTOCOLS, _WIN_SUPPORTING_WM_CHECK, and _WIN_HINTS. Thanks to Ben Jansens for much of this patch. * display.c (meta_display_open): remove hints * display.h: remove atoms for hints * screen.c (set_wm_check_hint): don't set legacy hint (set_supported_hint): don't set legacy hint * window-props.c (init_win_workspace): removed (reload_win_workspace): removed (meta_display_init_window_prop_hooks): remove hints * window.h: remove do_not_cover flag * window.c: remove GnomeWinHints enum (recalc_do_not_cover_struts): removed (meta_window_new): don't initialize removed flags or compute legacy struts (move_resize_cmp): removed (idle_move_resize): Don't bother sorting the idle queue (meta_window_client_message): don't set legacy hint (process_property_notify): remove hints (update_net_wm_type): don't fall back to WIN_LAYER hint (update_struts): remove legacy struts 2003-06-12 Havoc Pennington * src/display.c (event_callback): make raise-on-click explicitly only happen in click to focus mode. * src/window.c (update_move): apply patch from Jurg Billeter to allow you to "shake loose" maximized windows and move them between Xinerama heads. #93586 * src/display.c: delete event_queue_callback * src/display.h (struct _MetaDisplay): get rid of grab_current_window_pos and grab_current_root_[xy] as I could find absolutely no code using them for anything. They were just sort of randomly assigned to for no apparent reason. * src/display.c (event_callback): double-click timeout is per screen, so get the screen and pass screen->ui to meta_ui_get_double_click_timeout() * src/ui.c (meta_ui_get_double_click_timeout): take a MetaUI argument so we get the right settings for each screen (meta_ui_get_drag_threshold): new function 2003-06-09 Rob Adams Revamp placement policy for windows that are maximized when they are mapped, including windows that set a hint to be maximized or windows that are auto-maximized using our heuristic. See #111902. * src/window.h: add new flag maximize_after_placement and new function meta_window_maximize_internal. * src/window.c (meta_window_new): initialize maximize_after_placement to FALSE and remove the automaximize heuristic. (meta_window_maximize_internal): new function accepts a saved_rect argument to be used as the new saved_rect for the window, and does not queue a move_resize. (meta_window_maximize): re-implement using meta_window_maximize_internal. (update_net_wm_state): If a window has a maximize hint set on startup set maximize_after_placement to TRUE * src/constraints.c (meta_window_constrain): Update the xinerama information in the ConstraintInfo after placing the window, and maximize the window after placement if window->maximize_after_placement * src/place.c (find_first_fit): take a natural xinerama list as an argument instead of generating it here (constrain_placement): remove function, since it is no longer needed (meta_window_place): generate the natural xinerama list here and pass it into find_first_fit. If find_first_fit fails, use the list to find empty xineramas where we can place windows that may be maximized later. This makes maximized windows follow the correct placement policy. Move the automaximize heuristic here. 2003-06-09 Rob Adams * src/metacity-dialog.c (warn_about_no_sm_support): install an alarm to timeout the no-sm-dialog after 4 minutes of inactivity. Patch from Ximian. See #114789. 2003-06-07 Rob Adams * src/window.c (meta_window_new): call meta_group_compute_group after setting window->desc to avoid SIGSEGV when verbose mode is enabled. 2003-06-07 Havoc Pennington * src/window.c (meta_window_notify_focus): drop the mouse button grabs for the focused window; we'll see if this breaks anything. It should fix #102209 Fri Jun 6 19:27:53 2003 Jonathan Blandford * src/metacity.schemas.in: fix the location of the schemas file. 2003-06-04 Rob Adams * src/window.c (meta_window_new): don't be stupid and set window->group = NULL after calling meta_window_compute_group. * src/group.c (meta_window_get_group): assert that window->group != NULL in here instead of computing the group to ensure robustness. 2003-06-04 Rob Adams Precompute groups to guarantee that meta_group_list_windows always returns the correct list of windows. See Bug #96973 * src/window.h: change cached_group variable to group * src/window.c (meta_window_new): change cached_group to group and call meta_window_compute_group * src/groups.c (meta_window_get_group): simply return window->group rather than computing it and returning window->cached_group (meta_window_compute_group): new function computes window->group. Designed to be called once from meta_window_new (remove_window_from_group): change cached_group to group (meta_window_group_leader_changed): call meta_window_compute_group instead of meta_window_get_group 2003-05-29 Rob Adams Use a new property _METACITY_SENTINEL to eliminate a race condition that causes focus to behave badly with sloppy/mouse focus when lots of windows are mapped/unmapped, such as with a workspace switch. The EnterNotify events on a display are ignored until the PropertyNotify sent after all the window maps is received. This is a fix for #110970. * src/display.[ch]: New _METACITY_SENTINEL atom. (event_callback): ignore EnterNotify if the sentinel isn't clear, and decrement the sentinel counter when the PropertyNotify is received. (meta_display_increment_focus_sentinel): new function. Increments the sentinel counter and updates the property on a root window on this display. (meta_display_decrement_focus_sentinel): Decrement the sentinel counter. (meta_display_focus_sentinel_clear): returns whether the sentinel counter is zero. * src/window.c (idle_calc_showing): after showing windows, call meta_display_increment_focus_sentinel on each display for windows to be shown. * src/workspace.[ch] (meta_workspace_activate_with_focus): new function activates a workspace and focuses a particular window after the workspace is activated. (meta_workspace_activate): now just a wrapper for meta_workspace_activate_with_focus * src/keybindings.c: use new meta_workspace_activate_with_focus function to ensure that focus will follow the focused window through the workspace switch. 2003-05-29 Havoc Pennington * src/theme-parser.c (meta_theme_load): s/int/gsize/ for g_file_get_contents() (found independently by marcus@freebsd.org on SPARC and James Laska on s390x; #113661 * src/main.c (main): fix theme location mentioned in error message 2003-05-29 Ray Strode Get and use double-click speed from GtkSettings (Bug #103218). * src/ui.c, src/ui.h: add function meta_ui_get_double_click_timeout for looking up the global double-click speed. * src/display.c, src/display.h: remove double_click_time field from MetaDisplay and use meta_ui_get_double_click_timeout instead. 2003-05-29 Rob Adams * src/main.c (main): chdir to the user's home directory on startup. See #113755. * src/stack.c (get_standalone_layer): a window should be in the fullscreen layer if it or any of its transient descendants are focused or expecting the focus and it is either fullscreen or fullscreen sized. Fix for #104369. * src/stack.c (is_focused_foreach): foreach used by get_standalone_layer to find focused transient descendants. 2003-05-20 Havoc Pennington * src/keybindings.c (meta_change_keygrab): the mask display->ignored_modifier_mask wasn't being bound, due to "<" instead of "<=" (most people didn't notice as display->ignored_modifier_mask included Scroll_Lock). Red Hat bugzilla #91301 reported by Youssef Makki * src/display.c (meta_change_button_grab): make corresponding change for button grabs. 2003-05-20 Havoc Pennington * NEWS: update * configure.in: 2.5.2 2003-05-20 Anders Carlsson * src/metacity-dialog.c: (kill_window_question): Split up the strings to make life easier for translators. 2003-05-20 Anders Carlsson * src/metacity-dialog.c: (kill_window_question): Fix the wording and HIGify the dialog. 2003-05-18 Havoc Pennington * src/window.c (unminimize_window_and_all_transient_parents): revert broken change that assumed foreach_ancestor iterated over the window itself. Andrew Sobala, Rob Adams, #113232 2003-05-16 Rob Adams Flip the workspace when using up/down/left/right for move window to, but not when specifying a workspace explicitly as in move to workspace 4. Possible fix for #105492. * src/keybindings.c (do_handle_move_to_workspace): new function moves a window to a workspace with the option to flip to that workspace. (handle_move_to_workspace): Use new do_handle_move_to_workspace function without flipping (a keybinding) (handle_move_to_workspace_flip): Use new do_handle_move_to_workspace function with flipping (a keybinding) 2003-05-16 Havoc Pennington * src/frames.c (meta_frames_paint_to_drawable): fix for bug #104018 from David Santiago, change button state to normal while it's being pressed if you move the mouse outside it. Do this by tracking prelit_control for whether to draw a button as active, not just for whether to draw it as prelit. (meta_frames_motion_notify_event): also update prelit_control while clicking a button 2003-05-16 Havoc Pennington * src/window.c (meta_window_new): fill in window->desc sooner since we use it sooner now. * src/display.c (meta_display_open): init display->grab_update_alarm * src/window.c (meta_window_new): initialize the always_sticky field (meta_window_new): initialize the update_icon_queued field Patch from Julien Olivier bug #92335 for converting "show desktop mode" to "all windows are minimized" when you open a new window, instead of just mapping all the windows again. * src/window.c (meta_window_activate): minimize all windows before coming out of show desktop mode. (meta_window_unminimize): don't toggle show desktop mode here * src/screen.c (meta_screen_minimize_all_except): new function 2003-05-01 Havoc Pennington * src/theme-parser.c (meta_theme_load): fix memleak on error 2003-05-16 Telsa Gwynne * configure.in: Added "cy" (Welsh) to ALL_LINGUAS. 2003-05-06 Danilo Å egan * configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS. 2003-05-03 Havoc Pennington * src/keybindings.c (handle_move_to_workspace): when moving window to another workspace, don't switch to that workspace. * src/window.c (menu_callback): when moving window to another workspace, don't switch to that workspace. 2003-05-03 Havoc Pennington * configure.in: 2.5.1 * NEWS: update 2003-05-01 Rob Adams * src/constraints.c (constraint_onscreen_applies_func): Don't apply onscreen constraints to full screen windows. Fix for #110048 2003-04-29 Havoc Pennington * src/bell.h: include Xlib.h before XKBlib.h which is required on Solaris. #111877 from Peter O'Shea 2003-04-23 Havoc Pennington * src/keybindings.c (process_keyboard_move_grab): support diagonal keypad keybindings, from Dafydd Harries 2003-04-21 Havoc Pennington * purge HAVE_GTK_MULTIHEAD from the source code, not just from configure.in. Yes I am a loser. 2003-04-19 Masahiro Sakai * configure.in: call AC_LIBTOOL_WIN32_DLL. * src/Makefile.am: add -no-undefined to libmetacity_private_la_LDFLAGS and write dependency libraries in libmetacity_private_la_LIBADD. 2003-04-06 Rob Adams * src/place.c (find_next_cascade): cascade on xinerama with pointer instead of on first xinerama. 2003-04-05 Rob Adams Update placement policy for screen with multiple xineramas. Windows will be placed preferentially on the xinerama with the pointer, and progressively further away as needed to find a place where the window does not overlap other windows. * src/place.c (rect_fits_in_work_area): function fit_rect_in_xinerama greatly simplified to work with new placement policy. (find_first_fit): implement new first fit placement scheme * src/screen.c (meta_screen_get_xinerama_neighbor): look for an xinerama in the xinerama list that is adjacent to the specified xinerama. (meta_screen_get_natural_xinerama_list): return a list of xineramas in the order to be preferred by the placement algorithm as determined by the current location of the pointer. * src/screen.h: add function prototypes and an enum used by meta_screen_get_xinerama_neighbor. 2003-04-05 Rob Adams * src/place.c (center_tile_rect_in_area): Fix a minor off-by-one error. See #110079. 2003-03-30 Rob Adams * src/window.c (meta_window_move_resize_internal): When passing frame geometry to meta_window_constrain, send null if no frame. Possible fix for #109039. 2003-03-29 Havoc Pennington * src/wm-tester/test-gravity.c (main): add --noframes option for testing, showing how broken we currently are. Fri Mar 28 14:13:37 2003 Soeren Sandmann * src/window.c (update_resize): Only cap refresh rate when not using SYNC. Remove bogus update-if-we-moved-more-than-a-delta. * src/window.c (update_move): Don't cap refresh rate during moves. Remove bogus update-if-we-moved-more-than-a-delta. 2003-03-26 Havoc Pennington * NEWS: update * configure.in: release 2.5.0 Sun Mar 23 23:04:06 2003 Soeren Sandmann * src/display.c (meta_spew_event): just return if we are not verbose. 2003-03-11 Havoc Pennington Should fix #108108, #106217, tracked down by Owen Taylor and Frederic Crozat * src/window.c (meta_window_foreach_transient): change MetaWindowForeachFunc to return a boolean for whether to continue (meta_window_foreach_ancestor): new function (window_should_be_showing): use meta_window_foreach_ancestor (unminimize_window_and_all_transient_parents): ditto (update_sm_hints): ditto (meta_window_is_ancestor_of_transient): ditto * src/stack.c (get_maximum_layer_of_ancestor): use meta_window_foreach_ancestor 2003-03-16 Rob Adams * window.c (meta_window_show_menu): Free old window menu if it already exists so we don't end up with more than one. Fix for #108392. 2003-03-14 Rob Adams * contraints.c (get_outermost_screen_positions): Don't try to force a window onscreen by more than its width. Fix for #94815. 2003-03-13 Rob Adams Make it so that the alt-tabbing won't try to go to a minimized window by default. Fix for #107071. * display.c (meta_display_get_tab_list): use a GList instead of a GSList (meta_display_get_tab_next): use meta_display_get_tab_list to decide what the next/previous tab window should be. * display.h (meta_display_get_tab_list): update function prototype to return GList instead of GSList. * screen.c (meta_screen_ensure_tab_popup): update function to deal with GList returned by meta_display_get_tab_list instead of GSList. 2003-03-13 Christian Rose * configure.in: Added "ml" to ALL_LINGUAS. 2003-03-11 Paul Duffy * configure.in: Added "ga" to ALL_LINGUAS 2003-03-11 Rob Adams * src/constraints.c (meta_window_constrain): include left frame geometry when maximizing or fullscreening windows. Fix for #108127. 2003-03-10 Roozbeh Pournader * configure.in: Added "fa" to ALL_LINGUAS. 2003-02-27 Havoc Pennington Switch over to new constraints code, unquestionably introduces some bugs, but should get us on the right path. * src/window.c (meta_window_get_work_area_all_xineramas): create this function again as it turned out to be legitimate for window position constraint (adjust_for_gravity): use the width/height from the configure request to compute the requested move (meta_window_move_resize_internal): use meta_window_constrain (update_size_hints): clamp max size to MAXSHORT to avoid worrying about overflow stuff * src/constraints.c (meta_window_constrain): don't base placement on uninitialized variables, general hacking * src/Makefile.am (metacity_SOURCES): add constraints.c, constraints.h * src/constraints.c (meta_window_constrain): update the cut-and-paste aspect ratio code to have latest bugfixes 2003-03-08 Rob Adams * src/window-props.c (reload_normal_hints): Check that window min and max size hints are at least 1. Fix for #107110. 2003-02-27 Havoc Pennington Changes made on plane from FOSDEM, syncing from laptop. * src/main.c (main): add more debug spew about conditional build stuff (main): panic to "Simple" theme * src/window.c, src/window-props.c: move WM_NORMAL_HINTS and WM_PROTOCOLS to new property system; don't queue move resize on updating WM_PROTOCOLS; move WM_HINTS to new property system; reload icon in an idle handler. 2003-02-28 Mark McLoughlin Give me back my keys. * src/keybindings.c: (meta_window_grab_keys): don't grab keys on DOCK windows. * src/window.c: (recalc_window_type): re-grab the keys. 2003-02-26 Dmitry G. Mastrukov * configure.in: Added Belarusian to ALL_LINGUAS. 2003-02-26 Mark McLoughlin * src/keybindings.c: (handle_panel_keybinding): release the keyboard grab before sending the action message to the panel. 2003-02-24 Mark McLoughlin Take control of the panel's global keybindings. The screenshot utility is hooked up using a special case run_command and the menu and run dialog bindings are done using the _GNOME_PANEL_ACTION ClientMessage protocol. * src/display.[ch]: (meta_display_open): add some atoms. * src/keybindings.c: (handle_panel_keybinding): impl to handle a keybinding by sending an action message to the panel. * src/metacity.schemas.in: add schemas for the panel and screenshot keybindings and the screenshot commands. * src/prefs.[ch]: (update_command), (meta_prefs_get_gconf_key_for_command): impl special case handling for the screenshot commands. They are stored at the the end of the commands array but have named keys. 2003-02-23 Havoc Pennington Patch from Rob Adams addresses #95014 (placement issues), makes first fit algorithm "center tile", adds most code for per-xinerama workspaces (#86682) but disables it for now. * src/workspace.c (meta_workspace_get_work_area_for_xinerama) (meta_workspace_get_work_area_all_xineramas): new xinerama functions, maintain workspace->work_areas with a different work area for each xinerama. However for now all the work areas are the same, because haven't quite figured out how _NET_WM_STRUT is supposed to work * src/window.c: adapt to new meta_window_* xinerama APIs (meta_window_get_work_area_current_xinerama): new xinerama API (meta_window_get_work_area_for_xinerama): new xinerama API (constrain_position): be a bit more clever about which xinerama's work area we choose to use. * src/stack.c: adapt to new Xinerama API * src/screen.c (reload_xinerama_infos): invalidate all work areas (meta_screen_get_xinerama_for_rect): new function (meta_screen_window_intersects_xinerama): new function * src/place.c (find_first_fit): change to use "center tiling" (center a screen full of tiled windows, rather than aligning them top left). Adapt to new xinerama functions. 2003-02-22 Rob Adams * src/metacity.schemas.in: change toggle_maximized to toggle_maximize and toggle_shaded to toggle_shade in action_double_click_titlebar long description to match the values used by metacity * po/*.po: change toggle_maximized to toggle_maximize and toggle_shaded to toggle_shade in action_double_click_titlebar long description to match the values used by metacity 2003-02-22 Rob Adams * window.c (set_wm_state): modify comment to explain why the icon window element is set to None. Fix for #97357 thanks to Gregory Merchan. 2003-02-22 Havoc Pennington * README: fix a typo, pointed out by Steve Kemp 2003-02-22 Havoc Pennington * src/prefs.c (MAX_REASONABLE_WORKSPACES): change max workspaces to 36 #81855 2003-02-22 Havoc Pennington * src/display.c (event_callback): fix to unfocus window only when you leave the window frame, not when you leave the window itself, unless window has no frame. #100248 fix from Orien Vandenbergh 2003-02-22 Havoc Pennington * src/display.c (meta_display_get_tab_next): when tabbing backward, we are still tabbing *from* the most recently used window, not from the least recently used window. * src/keybindings.c (struct _MetaKeyBinding): make keycode unsigned to match XEvent Patch for #84999 based on patch from Mark McLoughlin * src/prefs.c: add an add_shift field to MetaKeyPref to add shift when grabbing the given keybinding. * src/keybindings.c (rebuild_screen_binding_table) (rebuild_window_binding_table): refactor to share code, and honor add_shift field in MetaKeyPref 2003-02-20 Havoc Pennington * src/stack.c (create_constraints): don't create constraints between windows on different screens, #106086 tracked down by Arvind 2003-02-14 Arvind Samptur * src/screen.c: (meta_screen_new) : Update the workspace names from gconf and set the NET_DESKTOP_NAMES atom. Renamed update_workspace_names() to set_workspace_names(). Fixes #105498 2003-02-13 Havoc Pennington * configure.in: require GTK+ 2.2.0 * src/ui.c (meta_ui_init): remove hackaround for Pango X core fonts backend 2003-02-05 Abel Cheung * configure.in: Added "en_GB" and "nl" to ALL_LINGUAS. 2003-02-05 Akira TAGOH * src/main.c (usage): fix a typo and missing option. (#105186) 2003-02-04 Havoc Pennington * src/themes/Simple/ChangeLog: nuke subdir ChangeLog, there can be only one true ChangeLog. 2003-01-30 Havoc Pennington * src/keybindings.c (process_event): match handlers to key events using key codes, not key syms Thu Jan 30 22:55:16 2003 Jonathan Blandford * src/themes/Makefile.am (THEMES): add Simple to the list of themes. * src/metacity.schemas.in: change default theme to Simple. 2003-01-29 Havoc Pennington * src/menu.c (meta_window_menu_new): don't create workspaces menu items if only 1 workspace. Fix for #101952 from Orien Vandenbergh 2003-01-28 Bill Haneman * Re-instated visual-bell patch (please see ChangeLog entry for 2002-12-16 for details). * src/prefs.c: (visual_bell_type_from_string): Accept a NULL string for 'visual-bell-type'. 2003-01-25 Havoc Pennington * src/stack.c (window_is_fullscreen_size): When checking if a window is fullscreen size, only require it to be at the origin of the work area, not at the origin of the screen/xinerama. Still require it to be full screen in width x height. May fix xine in the case where the user has a top panel. * src/window.c (constrain_position): restore the ability for undecorated windows to position themselves overlapping the top panel, but don't let decorated windows do so. Oh the hacks... 2003-01-08 Havoc Pennington * src/screen.c (meta_screen_apply_startup_properties): small code snippet to fix startup sequences that set legacy class/name 2003-01-22 Havoc Pennington * src/async-getprop.c (async_get_property_handler): do not read sizeof(long) off the X connection. The X protocol does not vary by architecture. Fixes longstanding hang on all 64-bit platforms. 2003-01-22 Havoc Pennington * src/tools/Makefile.am: fix conditional so we get metacity-properties.c in the distribution #103071 2003-01-22 Havoc Pennington * src/window.c (update_struts): be robust against the panel's lame "set a negative number for struts" thing, even though we'll also fix the panel. 2003-01-21 Havoc Pennington Fix for the "mangles focus window when switching workspaces and using mouse focus" bug * src/stack.c (meta_stack_get_default_focus_window_at_point): new function * src/screen.c (meta_screen_focus_mouse_window): new function (meta_screen_focus_default_window): new function * src/workspace.c (meta_workspace_activate): use the new meta_screen_focus_default_window() 2003-01-17 Havoc Pennington * src/window.c (meta_window_handle_mouse_grab_op_event): fix event compression code to use GDK algorithm suggested by Owen, should be more efficient. 2003-01-22 Christian Rose * configure.in: Added "mn" to ALL_LINGUAS. 2003-01-21 Havoc Pennington * src/display.c (event_callback): only hop window to the current workspace if the window was previously minimized. Should keep mozilla from popping windows over to your current workspace. 2003-01-20 Havoc Pennington Attempt to fix #85916 * src/keybindings.c (primary_modifier_still_pressed): new function (handle_workspace_switch): handle modifier release prior to getting the grab (do_choose_window): handle modifier release prior to getting the grab * src/keybindings.c (grab_keyboard): properly return failure if the GrabKeyboard doesn't work 2003-01-19 Havoc Pennington * configure.in: add note about how this is the unstable branch, set version to 2.5.0 2003-01-14 Havoc Pennington * src/window.c (meta_window_maximize, meta_window_unmaximize) (meta_window_make_fullscreen, meta_window_unmake_fullscreen): recalc_window_features() after making these changes, should fix #103317 2003-01-14 Rob Adams * src/prefs.c: Increase the number of run_command bindings in screen_bindings from 12 to 32. * src/prefs.h: Increase the number of META_KEYBINDING_COMMAND_N macros from 12 to 32. * src/keybindings.c: Increase the number of run_command handlers from 12 to 32. 2003-01-11 Havoc Pennington * src/window.c (meta_window_handle_mouse_grab_op_event): implement compression of motion events (drop all but the most recently received), guessing at fixes for #103009 2003-01-11 Havoc Pennington * configure.in: add ability to --disable-shape 2003-01-11 Akira TAGOH * configure.in: fix the behavior of --enable-*. 2003-01-10 Havoc Pennington * src/Makefile.am (desktopfiles_in_files): revert that change, I got the wrong .desktop file. doh. 2003-01-10 Havoc Pennington * src/Makefile.am (desktopfiles_DATA): don't install .desktop file for properties dialog if we aren't building/installing the properties dialog. 2003-01-10 Havoc Pennington * NEWS: update * configure.in: bump to 2.4.13, require 2.2.0 for multihead 2003-01-09 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Use a line for the titlebar text bg. 2003-01-09 Havoc Pennington * src/window.c (recalc_window_features): argh, we were making all dialogs skip taskbar; when did that get added. Fix to match libwnck, only skip taskbar when the dialog is transient for some other app window. 2003-01-09 Havoc Pennington * src/metacity.schemas.in: change Windows+click back to Alt+click, Windows+click just surprised everybody and didn't work half the time. Maya users can configure it, and GTK DND can change its default. 2003-01-08 Havoc Pennington * src/metacity.schemas.in: assign Alt+F12 to shade window, per #102658 2003-01-07 Havoc Pennington * src/screen.c (update_num_workspaces): fix off-by-one, patch from readams@hmc.edu, #102806 2003-01-06 Arvind Samptur * src/window.c: (constrain_position) don't apply offscreen height difference. This would get the window under the panel on a resize or a move. Fixes #102418 2003-01-05 Havoc Pennington * src/screen.c (meta_screen_calc_workspace_layout): invert vertical_workspaces cases (we want to go down each column if it's vertical, and across each row if horizontal). Patch from readams@hmc.edu 2003-01-05 Pablo Saratxaga * configure.in: Added Macedonian (mk) to ALL_LINGUAS 2003-01-05 Havoc Pennington * src/frames.c (meta_frames_apply_shapes): put in the HAVE_GTK_MULTIHEAD conditionals so we build with GTK 2.0 2003-01-05 Havoc Pennington * src/window.c (meta_window_show): focus new windows even in mouse focus mode, #89981, patch from readams@hmc.edu 2003-01-05 Havoc Pennington * src/workspace.c (meta_workspace_get_neighbor): redo using new calc_workspace_layout to fix #98302 * src/util.c (topic_name): shorten default prefix * src/screen.c (meta_screen_calc_workspace_layout): enhance this to handle all the funky layouts and calculate more information than before 2003-01-05 Pauli Virtanen * configure.in (ALL_LINGUAS): Added "fi" (Finnish). 2003-01-05 Havoc Pennington * src/frames.c (meta_frames_apply_shapes): handle the client having a shape mask, fixes #101806 * src/core.c (meta_core_get_client_xwindow): new function * src/frame.c, src/frame.h: keep a flag for whether we need to update the frame shape * src/window.c (meta_window_new): select for ShapeNotify * src/display.h, src/display.c: actually query the shape extension, instead of just using it all over the place. * src/prefs.c (update_application_based): don't let people turn on application_based, as it just causes funky bugs. We can reenable the pref when/if it ever does something useful. 2003-01-03 Havoc Pennington * src/display.c: include the Xrandr header file * src/window.c (meta_window_fill_horizontal) (meta_window_fill_vertical): maximize to work area, not entire screen. doh. 2002-12-19 Ross Burton * doc/metacity-theme.dtd: Fix a typo and loosen the requirements for the resize element. 2002-12-19 Havoc Pennington * Reverted visual bell patch, #99886 2002-12-19 Yanko Kaneti * configure.in: (ALL_LINGUAS) Added Bulgarian (bg). 2002-12-18 Havoc Pennington * src/window.c (meta_window_new): select ColormapChangeMask on toplevel windows, maybe a partial fix for #101478 Tue Dec 17 17:50:19 2002 HideToshi Tajima * src/themes/AgingGorilla/metacity-theme-1.xml: added support for border only windows. #100984. 2002-12-17 Havoc Pennington * src/display.c (meta_display_begin_grab_op): don't use "(null)" for null pointers, use "none", so I can distinguish glibc-generated (null) which is a bug. (key_event_description): ditto (meta_display_begin_grab_op): ditto * src/window.c (update_sm_hints): ditto * src/keybindings.c (reload_modmap): ditto (meta_display_process_key_event): ditto 2002-12-17 Havoc Pennington * src/metacity.schemas.in: s/focussed/focused/ 2002-12-17 Havoc Pennington * src/xprops.c (validate_or_free_results): add a comma to message #101401 2002-12-16 Bill Haneman * configure.in: Check for XKB extension. * src/Makefile.am: Added bell.c and bell.h to metacity sources. * src/common.h: (MetaFrameFlags): Added META_FRAME_IS_FLASHING flag. * src/frame.h: (MetaFrame): Added is_flashing field. * src/frame.c: (meta_window_ensure_frame): Initialize the is_flashing flag to FALSE. (meta_frame_get_flags): Handle the FRAME_IS_FLASHING flag. (meta_window_destroy_frame): Call meta_bell_notify_frame_destroy. * src/prefs.h: (MetaPreference): Added META_PREF_VISUAL_BELL, META_PREF_AUDIBLE_BELL, META_PREF_VISUAL_BELL_TYPE. (MetaVisualBellType): New enum. (meta_prefs_get_visual_bell, meta_prefs_bell_is_audible): (meta_prefs_get_visual_bell_type): New accessor declarations. * src/prefs.c: (#includes): Include "display.h", since we now call meta_displays_list() in our update func. (#defines): Define KEY_VISUAL_BELL, KEY_AUDIBLE_BELL, and KEY_VISUAL_BELL_TYPE. (provide_visual_bell, bell_is_audible, visual_bell_type): New static state variables. (update_visual_bell): New method to update visual-bell boolean settings from keys "visual_bell" and "audible_bell". (update_visual_bell_type): New method to update visual-bell type setting. (visual_bell_type_from_string) : New method to convert from gconf string to visual-bell type enum. Only currently recognized values are "fullscreen" and "frame_flash". (change_notify): Handle changes to visual and audible bell properties. (meta_prefs_get_visual_bell, meta_prefs_bell_is_audible): (meta_prefs_get_visual_bell_type): New accessor definitions. (meta_prefs_init): Added a second call to notify_add, listens to "/desktop/gnome/interface" as well as "apps/metacity". Also call the update funcs for the new visual-bell gconf keys. (meta_preference_to_string): Handle the visual/audible bell cases. * src/bell.h: (meta_bell_notify); New method, calls a visual notifucation method based on the visual-bell-type, or none if the type is unrecognized or invalid. (meta_bell_set_audible): New public method for setting the audible bell setting, used in updater for new gconf key "audible_bell". (meta_bell_init): Initialize the bell notification for a display. (meta_bell_shutdown): Shutdown the bell notification for a display. (meta_bell_notify_frame_destroy): Remove pending idle handlers on notification. * src/bell.c: Include "bell.h", and conditionally include . (meta_bell_set_audible): If XKB is present, enable/disable the audible system bell based on the gconf key /desktop/gnome/interface/audible_bell. (meta_bell_init): Query and initialize XKB if present, register for notification on the bell, and set audible bell according to gconf settings. (meta_bell_flash_screen): Maps and unmaps a fullscreen X window (painted white, then black), which causes a fullscreen 'flash' transient. (meta_bell_flash_window_frame): Flashes the titlebar of a specified window. (meta_bell_flash_frame): Calls meta_bell_flash_window_frame on the window which was the source of the current bell event, or the currently focussed window if the event source cannot be determined. (meta_bell_unflash_frame): Restore the frame's appearance to normal. (meta_bell_flash_fullscreen): Call meta_bell_flash_fullscreen for all screens. (meta_bell_shutdown): New method. (meta_bell_notify_frame_destroy): Remove pending idle handlers on notification, testing for frame->is_flashing first. * src/display.h: (MetaDisplay): Added xkb_base_event_type field. * src/display.c: Check for XKB and include "X11/XKBlib.h" if present. (meta_display_open): Call meta_bell_init. (event_callback): Call meta_bell_notify when event comes from XKB and is XkbBellNotify (prefs_changed_callback): Handle META_PREF_AUDIBLE_BELL notification. * src/screen.h: (MetaScreen): Add flash_window field. * src/screen.c: (meta_screen_new): Initialize flash_window field. * src/theme.c: (theme_get_style): New heuristic for focus-style, to invert sense of focus flag when META_FRAME_IS_FLASHING flag is set. * src/metacity.schemas.in: Added scheme information for /apps/metacity/general/visual_bell, /apps/metacity/general/audible_bell, and /apps/metacity/general/visual_bell_type. 2002-12-16 Havoc Pennington * src/window-props.c (init_wm_name): argh, screwed that up. get WM_NAME as VALUE_TEXT_PROPERTY #101383 2002-12-16 Bill Haneman * configure.in: Check for XKB extension. * src/Makefile.am: Added bell.c and bell.h to metacity sources. * src/common.h: (MetaFrameFlags): Added META_FRAME_IS_FLASHING flag. * src/frame.h: (MetaFrame): Added is_flashing field. * src/frame.c: (meta_window_ensure_frame): Initialize the is_flashing flag to FALSE. (meta_frame_get_flags): Handle the FRAME_IS_FLASHING flag. (meta_window_destroy_frame): Call meta_bell_notify_frame_destroy. * src/prefs.h: (MetaPreference): Added META_PREF_VISUAL_BELL, META_PREF_AUDIBLE_BELL, META_PREF_VISUAL_BELL_TYPE. (MetaVisualBellType): New enum. (meta_prefs_get_visual_bell, meta_prefs_bell_is_audible): (meta_prefs_get_visual_bell_type): New accessor declarations. * src/prefs.c: (#includes): Include "display.h", since we now call meta_displays_list() in our update func. (#defines): Define KEY_VISUAL_BELL, KEY_AUDIBLE_BELL, and KEY_VISUAL_BELL_TYPE. (provide_visual_bell, bell_is_audible, visual_bell_type): New static state variables. (update_visual_bell): New method to update visual-bell boolean settings from keys "visual_bell" and "audible_bell". (update_visual_bell_type): New method to update visual-bell type setting. (visual_bell_type_from_string) : New method to convert from gconf string to visual-bell type enum. Only currently recognized values are "fullscreen" and "frame_flash". (change_notify): Handle changes to visual and audible bell properties. (meta_prefs_get_visual_bell, meta_prefs_bell_is_audible): (meta_prefs_get_visual_bell_type): New accessor definitions. (meta_prefs_init): Added a second call to notify_add, listens to "/desktop/gnome/interface" as well as "apps/metacity". Also call the update funcs for the new visual-bell gconf keys. (meta_preference_to_string): Handle the visual/audible bell cases. * src/bell.h: (meta_bell_notify); New method, calls a visual notifucation method based on the visual-bell-type, or none if the type is unrecognized or invalid. (meta_bell_set_audible): New public method for setting the audible bell setting, used in updater for new gconf key "audible_bell". (meta_bell_init): Initialize the bell notification for a display. (meta_bell_shutdown): Shutdown the bell notification for a display. (meta_bell_notify_frame_destroy): Remove pending idle handlers on notification. * src/bell.c: Include "bell.h", and conditionally include . (meta_bell_set_audible): If XKB is present, enable/disable the audible system bell based on the gconf key /desktop/gnome/interface/audible_bell. (meta_bell_init): Query and initialize XKB if present, register for notification on the bell, and set audible bell according to gconf settings. (meta_bell_flash_screen): Maps and unmaps a fullscreen X window (painted white, then black), which causes a fullscreen 'flash' transient. (meta_bell_flash_window_frame): Flashes the titlebar of a specified window. (meta_bell_flash_frame): Calls meta_bell_flash_window_frame on the window which was the source of the current bell event, or the currently focussed window if the event source cannot be determined. (meta_bell_unflash_frame): Restore the frame's appearance to normal. (meta_bell_flash_fullscreen): Call meta_bell_flash_fullscreen for all screens. (meta_bell_shutdown): New method. (meta_bell_notify_frame_destroy): Remove pending idle handlers on notification, testing for frame->is_flashing first. * src/display.h: (MetaDisplay): Added xkb_base_event_type field. * src/display.c: Check for XKB and include "X11/XKBlib.h" if present. (meta_display_open): Call meta_bell_init. (event_callback): Call meta_bell_notify when event comes from XKB and is XkbBellNotify (prefs_changed_callback): Handle META_PREF_AUDIBLE_BELL notification. * src/screen.h: (MetaScreen): Add flash_window field. * src/screen.c: (meta_screen_new): Initialize flash_window field. * src/theme.c: (theme_get_style): New heuristic for focus-style, to invert sense of focus flag when META_FRAME_IS_FLASHING flag is set. * src/metacity.schemas.in: Added scheme information for /apps/metacity/general/visual_bell, /apps/metacity/general/audible_bell, and /apps/metacity/general/visual_bell_type. 2002-12-16 Havoc Pennington * src/window-props.c: use META_PROP_VALUE_STRING_AS_UTF8 so we convert old Latin-1 WM_NAME to UTF-8 * src/xprops.h (enum): add META_PROP_VALUE_STRING_AS_UTF8 to get a latin1 string then convert. 2002-12-15 Havoc Pennington * src/window.c (meta_window_new): get window name before anything else. * src/xprops.c (validate_or_free_results): instead of suggesting how to get window title etc. with xprop, just print out the window title. much better. 2002-12-15 Havoc Pennington * src/xprops.c (validate_or_free_results): make the warning about strange property contents blame the application and explain how to use xprop to diagnose which app is causing the problem. 2002-12-15 Havoc Pennington * src/prefs.c (meta_prefs_change_workspace_name): don't pass NULL string to gconf_client_set_string #101237 2002-12-13 Havoc Pennington * src/tools/Makefile.am (Desktop_in_files): only install .desktop file for metacity-properties if we actually install metacity-properties * src/display.c (event_callback): not focusing on button 2 click was crack, revert that change. 2002-12-09 Havoc Pennington * AUTHORS: add myself here, bug #100789 * src/display.c (meta_display_set_grab_op_cursor): drop PointerMotionHintMask * src/window.c (meta_window_handle_mouse_grab_op_event): don't use XQueryPointer, as we aren't using PointerMotionHint now * src/display.c (event_callback): rearrange a bit of code for slight speedup and clarity * src/window.c (update_resize) (meta_window_handle_mouse_grab_op_event): implement usage of the _METACITY_UPDATE_COUNTER (meta_window_handle_mouse_grab_op_event): fix code that used event->xbutton with a motion event * src/display.c (meta_display_open): add new atoms, and initialize Xsync if we have it (grab_op_is_resizing): new function (meta_display_begin_grab_op): create an alarm monitoring window's _METACITY_UPDATE_COUNTER (meta_spew_event): conditionalize this on WITH_VERBOSE_MODE and print alarm events. * src/window.c (meta_window_new): fetch _METACITY_UPDATE_COUNTER * configure.in (HAVE_XSYNC): check for Xsync extension Mon Dec 9 22:09:56 2002 Soeren Sandmann * src/display.c, src/window.c: Handle crossing events during resizing. (#93384). 2002-12-09 Havoc Pennington * configure.in: 2.4.8 2002-12-08 Havoc Pennington * README: updates * src/window.c (MAX_RESIZES_PER_SECOND): change to 20 instead of 30, just as an experiment. (MOVE_THRESHOLD): change 15 to 20 (RESIZE_THRESHOLD): change 15 to 20 * src/util.c (ensure_logfile): kill this function when verbose mode is disabled. 2002-12-08 Havoc Pennington * src/window.c (meta_window_fill_vertical) (meta_window_fill_horizontal): new functions to resize to fill screen * src/keybindings.c: add vert, horiz maximize * src/prefs.c: had vert, horiz maximize * src/metacity.schemas.in: shorten some overlong short descriptions that make the keybindings capplet look ugly. Add maximize_vertically, maximize_horizontally keys. 2002-12-08 Havoc Pennington * src/prefs.c (meta_prefs_get_application_based): make this always return FALSE for now, to avoid bug reports. * src/util.c (ensure_logfile): put "opened log file" message on stderr so it will normally land in ~/.xsession-errors * configure.in: remove extra AC_ARG_PROGRAM * src/display.c (event_callback): handle the toggle-verbose message * src/tools/metacity-message.c: add a toggle-verbose message, been meaning to do this for a while. * src/util.c (meta_set_verbose): if verbose mode is enabled and we don't support it, then exit. * src/prefs.c: allow building without gconf (currently means some prefs are no-ops) * src/util.c, src/util.h: support defining macros to kill all verbose output entirely. (Removes the code and strings associated with it) * configure.in: don't get METACITY_PROPS_LIBS if not building the config dialog. (HAVE_GCONF): allow building sans gconf, if you are size-sensitive and not using gnome. (WITH_VERBOSE_MODE): add ability to disable all the verbose debug spew strings, to shrink the binary. (--disable-sm): allow SM support to be forced on or off (--disable-startup-notification): allow forcing this on or off 2002-12-08 Havoc Pennington * src/prefs.c (update_workspace_name): also treat empty string as "unset" in this function. Thu Dec 5 18:41:02 2002 HideToshi Tajima * src/window.h (META_WINDOW_IN_NORMAL_TAB_CHAIN, META_WINDOW_IN_DOCK_TAB_CHAIN) : never use a window with input = FALSE take_focus = FALSE in the normal and dock tab chains. #90409 Thu Dec 5 13:56:52 2002 HideToshi Tajima * src/display.c (event_callback): move a window to the current space on the MapRequest when it's not on the space yet. #100390 2002-12-01 Havoc Pennington * src/frames.c (get_control): rearrange this function a bit, so that we return CONTROL_TITLE for anything above the bottom of the titlebar, in the fallback case where no other control was found. Also, don't return RESIZE_N for title rect above the top resize size, unless the window is resizable. (meta_frames_button_press_event): only start a move when clicking control TITLE, not control NONE. This way you don't start moving a nonresizable window if you click its edges. 2002-12-01 Havoc Pennington * src/tools/Makefile.am: conditionalize building the config dialog * configure.in (BUILD_CONFIG_DIALOG): add --enable-config-dialog option to turn on the "window focus" dialog. This is part of deprecating this dialog. 2002-11-30 Havoc Pennington * src/screen.c (STARTUP_TIMEOUT): lengthen to 15 seconds * src/util.c (utf8_fputs): hmm, return a value * src/screen.c (meta_screen_apply_startup_properties): new function to apply initial workspace based on startup sequence. * src/window.c (meta_window_new): load _NET_STARTUP_ID (meta_window_get_startup_id): new function * src/window-props.c (meta_display_init_window_prop_hooks): add hooks for _NET_STARTUP_ID * src/display.c (event_callback): send property events to groups. * src/xprops.c (meta_prop_get_values): make a type of INVALID mean to ignore that property (don't fetch its value). * src/group.c (meta_group_property_notify): new function * src/screen.c (set_supported_hint): support _NET_STARTUP_ID * src/display.c (meta_display_open): add _NET_STARTUP_ID to atoms we initialize * src/group-private.h: private header shared between group-props.c, group.c * src/group-props.h, src/group-props.c: new files to contain functions for retrieving group properties * src/window.c (meta_window_same_application): change this a bit to work with new definition of group * src/group.c (meta_window_get_group): always create a group for every window, using the window's own ID as group leader if required. * src/window.c (update_wm_hints): handle changes to group leader * src/group.c (meta_window_group_leader_changed): new function * src/display.h (struct _MetaDisplay): _NET_WM_WINDOW_TYPE_SPLASH, not SPLASHSCREEN. Reported by Gregory Merchan and Matthias Clasen. * src/screen.c (startup_sequence_timeout): when timing out a startup sequence, send a remove message, don't just time it out locally. 2002-11-26 Calum Benson * src/themes/Crux : Removed alpha layers from the pixmaps that don't need them. Fixes #98389, results in 10-15% speedup on most machines. 2002-11-26 Glynn Foster * configure.in: 2.4.5 2002-11-23 Dan Mills * Makefile.am: remove theme-format.txt, it's now in doc/. 2002-11-22 Havoc Pennington * src/window.c (meta_window_change_workspace): patch from Hidetoshi Tajima to move a window's transients when moving the window between workspaces. #98900 2002-11-21 Havoc Pennington * src/display.c (meta_display_open): init ret_to to RevertToPointerRoot out of sheer paranoia; don't want no RevertToNone in my code! 2002-11-21 Havoc Pennington * src/window.c (update_initial_workspace): delete (meta_window_new): add getting initial workspace to the batch property get call * src/window-props.c (meta_display_init_window_prop_hooks): add net_wm_desktop and win_workspace support 2002-11-20 Havoc Pennington * src/window-props.c (set_icon_title): remove unused variable * src/screen.c (meta_screen_new): read an existing _NET_CURRENT_DESKTOP and restore it if set. Makes a restart even less visible. * src/workspace.c (set_active_space_hint): don't set the hint during the process of unmanaging a screen 2002-11-20 Havoc Pennington * configure.in: add doc/Makefile * doc/metacity-theme.dtd: add DTD for themes from Ross Burton * doc/Makefile.am: doc subdir * doc/theme-format.txt: move to doc subdir 2002-11-19 Havoc Pennington Should really fix #98303 * src/prefs.c (meta_prefs_change_workspace_name): add bad hack to treat empty string the same as null * src/menu.c (get_workspace_name_with_accel): allocate one more than the length of "name" so we have room for a nul byte (and don't malloc(0) on empty strings). Also some formatting cleanups. 2002-11-19 Havoc Pennington * src/window.c (meta_window_client_message): do a recalc_window_features after setting new wm_state in order to update skip_pager in addition to wm_state_skip_pager (set_net_wm_state): base _NET_WM_STATE on skip_pager not wm_state_skip_pager, ditto for skip_taskbar 2002-11-19 Havoc Pennington Fix #98303 and assorted cleanup * src/prefs.c (meta_preference_to_string): handle META_PREF_WORKSPACE_NAMES * src/menu.c (get_workspace_name_with_accel): assert that the workspace has a name * src/screen.c (meta_screen_ensure_workspace_popup): assert that we got a workspace name (meta_screen_ensure_workspace_popup): assert that we got a workspace name * src/prefs.c (update_workspace_name): fix screwiness (strcmp with a freed string, assorted bad logic) (init_workspace_names): assert that we filled in a default workspace name (meta_prefs_get_workspace_name): assert non-NULL workspace name 2002-11-16 Bill Haneman * src/themes/Atlanta/metacity-theme-1.xml: Changed outer bevel and focus line color to work better with inverse themes (no effect on Default or other existing gtk+ themes). 2002-11-13 Havoc Pennington * src/ui.c (get_cmap): fix a multihead safety thing (use proper system colormap for the drawable's screen) Thu Nov 14 17:30:10 2002 Jonathan Blandford * src/Makefile.am (libmetacityinclude_HEADERS): include common.h. 2002-11-12 Havoc Pennington * src/theme.c (draw_op_as_pixbuf): don't read from op->data.image when the op is an icon 2002-11-12 Havoc Pennington * src/stack.c (meta_stack_get_default_focus_window): never use a window with input = FALSE take_focus = FALSE as the default focus window #95454 fix from Hidetoshi Tajima 2002-11-10 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Major changes to look of theme. I'd also recommend "minimize,maximize:close" for the button_layout, it looks really slick :-). 2002-11-08 Mark McLoughlin * src/workspace.c: (meta_motion_direction_to_string), (meta_screen_corner_to_string): impl for nice debugging. (meta_workspace_get_neighbor): fix broken logic and cleanup debugging. Thu Nov 7 17:07:21 2002 Jonathan Blandford * src/libmetacity-private.pc.in: add a pc file for libmetacity-private * src/Makefile.am: Install a few files as a shared library so that others can draw metacity themes. 2002-11-06 Havoc Pennington * src/keybindings.c (grab_keys): push an error trap around the whole window-key-grab loop (ungrab_all_keys): avoid requiring return value from the error trap, unless in debugging mode (regrab_window_bindings, regrab_screen_bindings): push traps around the loops, for efficiency * src/display.c (event_callback): fix from Padraig O'Briain to compress extra MappingNotify events to avoid extra work. 2002-11-05 Calum Benson * src/themes/Crux/active-restore-button.png: * src/themes/Crux/inactive-restore-button.png: * src/themes/Crux/metacity-theme-1.xml: add a restore button for maximized windows, and un-hard-code titlebar text colors. Fixes #97759. 2002-11-05 Havoc Pennington * src/workspace.c (meta_workspace_get_neighbor): apply patch from Nikos Mouat to fix this function 2002-11-04 Havoc Pennington * src/theme.c (scale_and_alpha_pixbuf): fix bug I introduced in case where scaling was done in both directions. 2002-11-04 Havoc Pennington Patch from Brian Cameron to implement the vertical/horizontal striped image accelerated scaling from the gtk pixbuf engine. * src/theme.c (scale_and_alpha_pixbuf): if an image is vertical/horizontal stripes, use special extra-fast scaling routines. * src/theme-parser.c (parse_draw_op_element): when loading an image, mark it as vertically/horizontally striped when appropriate 2002-11-04 Erwann Chenede - * src/xprops.c (meta_prop_get_values): changed __FUNCTION__ to G_GNUC_FUNCTION as __FUNCTION__ is not portable. 2002-11-03 Havoc Pennington * src/display.c (meta_display_grab): remove XSync calls from here (meta_display_ungrab): remove XSync from here, but put in an XFlush to be sure we get the ungrab sent. * src/util.c (meta_topic): track sync count here * src/errors.c: move sync count out of here Throughout: error spew on all XSync() calls * src/run-metacity.sh: don't set METACITY_DEBUG 2002-11-03 Havoc Pennington * src/window-props.c (meta_display_init_window_prop_hooks): add _NET_WM_NAME, WM_NAME, _NET_WM_ICON_NAME, WM_ICON_NAME support * src/window.c (meta_window_new): use window-props.h for _NET_WM_NAME, WM_NAME, _NET_WM_ICON_NAME, WM_ICON_NAME 2002-11-03 Havoc Pennington * src/window.c (meta_window_new): use window-props.h stuff for a couple of properties (implement_showing): fix printf string * src/xprops.c (meta_prop_free_values): new function * src/window-props.h, src/window-props.c: start moving code that handles loading window properties into this file. 2002-11-03 Havoc Pennington * src/stack.c (create_constraints): filter out windows that aren't in the stack for whatever reason, avoids a crash 2002-11-03 Havoc Pennington * src/window.c (meta_window_calc_showing): split into "see if we should be showing" and "actually show/hide" functions (idle_calc_showing): rework to first unmap all newly-hidden windows from bottom to top then map all newly-showing windows from top to bottom resulting in fewer exposes, #95220 2002-11-03 Havoc Pennington * src/theme.c (meta_frame_layout_calc_geometry): fix from Garrett LeSage for which button backgrounds we draw when 2002-11-03 Havoc Pennington * src/workspace.c (meta_workspace_get_name): new function, and remove workspace->name field, instead just get the name from prefs each time * src/screen.c (meta_screen_update_workspace_names): update the gconf key to persist workspace names here, instead of changing the names we use * src/util.c (topic_name): add META_DEBUG_PREFS * src/prefs.c: change NUM_COMMANDS to 32 to allow more custom commands, implement workspace names * src/metacity.schemas.in: add workspace_names/name_NN gconf keys. 2002-11-01 Christian Neumair * configure.in: We want at least autoconf 2.5. 2002-10-29 Havoc Pennington * configure.in: 2.4.3, why not 2002-10-28 Havoc Pennington * src/window.c (update_size_hints): use meta_prop_get_size_hints * src/xprops.c: add support for getting XSizeHints 2002-10-28 Havoc Pennington * src/window.c, src/display.c: store the window menu on the display and blow it away when a window closes, so we don't get funny stuck menus. Patch from Martin Garton #87514 2002-10-27 Anders Carlsson * configure.in: Make XRandr detection work better. 2002-10-27 Havoc Pennington * src/window.c (meta_window_free): move meta_window_shutdown_group() much earlier in the destroy process. May fix #96928 tracked down by Kjartan Maraas and Martin Garton. * src/group.c (meta_window_get_group): never add window to a group after we've started unmanaging the window 2002-10-26 Havoc Pennington * src/iconcache.c: include config.h * src/group.c: include config.h * src/frame.c: include config.h * src/core.c: include config.h so it doesn't crash all over the place due to #ifdef HAVE_STARTUP_NOTIFICATION * src/util.c (meta_print_backtrace): export from this file * src/main.c (log_handler): print backtrace here 2002-10-26 Havoc Pennington * src/wm-tester/main.c (evil_timeout): make windows randomly transient for each other http://bugzilla.gnome.org/show_bug.cgi?id=96928 2002-10-26 Havoc Pennington * src/xprops.c (meta_prop_get_text_property): new function (meta_prop_get_wm_hints): new function (meta_prop_get_class_hint): new function 2002-10-26 Havoc Pennington * src/window.c (meta_window_new): use multi-value-get on a couple of properties for testing * src/xprops.c (meta_prop_get_values): implement multi-value-get * src/window.c (update_mwm_hints): XFree motif hints as we changed it to use Xmalloc * src/xprops.c: massively rework this to set up a get-multiple-properties-at-once API. * src/async-getprop.c (ag_Xmalloc): new function 2002-10-25 Havoc Pennington Add "busy cursor on app startup" support, conditionally - works only if libstartup-notification is found, and in practice requires a GTK patch that's not in yet. * src/screen.c: monitor startup events and set busy cursor if appropriate * src/display.c (meta_display_open): create SnDisplay * configure.in: check for startup notification, and add the cute "configure summary" at the end 2002-10-24 Havoc Pennington * src/theme.c (meta_frame_layout_calc_geometry): if only one right-corner button, use right_right_background not right_left_background 2002-10-24 Havoc Pennington * src/window.c (meta_window_get_icon_geometry): make public * src/screen.c (meta_screen_ensure_tab_popup): put the alt+tab highlight-window indicator on the icon, not the window itself, if the window is minimized. 2002-10-24 Havoc Pennington * src/display.c (meta_display_get_tab_list): put minimized windows at the end of Alt+Tab, #89416 2002-10-23 Havoc Pennington * src/theme.c (meta_frame_layout_calc_geometry): initialize the left button background rectangles. 2002-10-21 Havoc Pennington Optimizations for managing new windows (do not all take effect if METACITY_DEBUG=1). Bug #96404 * src/keybindings.c (meta_change_keygrab): use error trap nesting and conditionalize on meta_is_verbose() to avoid a ton of XSync * src/display.c (meta_change_button_grab): ditto Throughout: move to new error trap setup to save on XSync calls, new setup is: * src/errors.c (meta_error_trap_push_with_return): new function, an error trap that needs to care about return value and thus sync even if an outer trap still exists (meta_error_trap_pop_with_return): new function (meta_error_trap_pop): add "last_request_was_roundtrip" argument allowing us to avoid XSync() if we just did a GetProperty or whatever. * src/util.c (meta_warning): flush the warning file descriptor * src/Makefile.am (INCLUDES): define G_LOG_DOMAIN 2002-10-20 Havoc Pennington * src/ui.c (meta_image_window_new): put multihead stuff in HAVE_GTK_MULTIHEAD, reported by John Palmieri 2002-10-20 Havoc Pennington * src/keybindings.c (handle_raise_or_lower): check above->mapped before deciding if it overlaps the window being raiselowered, fix from Stephane Chauveau 2002-10-19 Jeremy Katz * configure.in: make Xrandr check less noisy 2002-10-18 Havoc Pennington * src/effects.c (meta_effects_draw_box_animation): call meta_image_window_new in multihead-safe way * src/ui.c (meta_image_window_new): multihead safety 2002-10-18 Havoc Pennington * src/window.c (meta_window_refresh_resize_popup): only create the resize popup if width_inc or height_inc are > 1 * src/resizepopup.c: Clear out all the weird tickmark cruft, saves us about 2.5K of binary size, whee (meta_ui_resize_popup_new): take display/screen arguments and make multihead-safe #94349 2002-10-18 Havoc Pennington * src/keybindings.c (do_choose_window): don't start the cycle process if the binding for switching windows has no modifier bits, just focus the window immediately. * src/prefs.c, src/keybindings.c: add a keybinding to move between windows that goes in the opposite direction. This is mostly useful if you want to bind unmodified keys to the switch windows functions, e.g. if you have "Forward" and "Back" keys on your keyboard. Patch from Shilad Sen 2002-10-18 Havoc Pennington * src/prefs.c, src/frames.c: add "what happens when you double click the titlebar" setting, patch from Sean Middleditch bug #95625. This is basically an "add Windows emulation mode" patch. 2002-10-18 Havoc Pennington * src/metacity.schemas.in: move window-click to Super+click not Alt+click by default. Super should be the Windows key on keyboards that have one and are so configured. Prepare for the FAQ on this. 2002-10-18 Havoc Pennington * src/window.c (constrain_size): fix min aspect handling, patch from Martin Garton #94943 2002-10-18 Andras Timar * configure.in: Added hu to ALL_LINGUAS. 2002-10-18 Havoc Pennington * src/stack.c (constrain_stacking): replace the old apply_constraints with wacky new approach involving graphing all the constraints then walking the graph. Fixes #94876 and probably other stacking bugs as well, thanks to Arvind for tracking down the issue. (compute_layer): add FIXME and reference to bug #96140 2002-10-17 Havoc Pennington * src/stack.c (apply_constraints): don't place transient-for-whole-group windows above _each other_, only above other windows in the group that aren't themselves transient-for-whole-group. Should help with part of #94876 2002-10-17 Havoc Pennington * src/stack.c (apply_constraints): fix memory leak of group_windows, and don't use the variable name "tmp" twice. Shadow variables bad. 2002-10-17 Havoc Pennington * src/tools/metacity-window-demo.c (dialog_cb): add code to create big stacks of dialogs transient for each other, for testing. 2002-10-16 Havoc Pennington * src/workspace.c: workspaces are all per-screen now, fix accordingly * src/core.c: fix multihead workspace stuff * src/keybindings.c: multihead-rama * src/screen.c (meta_screen_show_desktop): new functions to replace display equivalents * src/display.c (meta_display_get_workspace_by_screen_index): get rid of this (meta_display_get_workspace_by_index): get rid of this (event_callback): handle _NET_SHOWING_DESKTOP message per-screen * src/screen.c (meta_screen_get_workspace_by_index): new function * src/screen.h (struct _MetaScreen): move workspace list, and showing_desktop flag, to be per-screen * src/window.c (window_query_root_pointer): return whether pointer is on window's screen (meta_window_handle_mouse_grab_op_event): don't use coordinates from other screens when updating a window operation on the current screen. I can't believe no one has reported this... 2002-10-16 Havoc Pennington * src/window.c (meta_window_client_message): update window layer when above/below state is changed. Fixed by Ross Burton. 2002-10-14 Federico Mena Quintero * src/display.c (event_callback): Ignore EnterNotify events when the detail field is set to NotifyInferior. Fixes #95747. 2002-10-12 Havoc Pennington * src/metacity.schemas.in: button layout key * src/prefs.c: Add button layout gconf key (change_notify): use some "else if" instead of "if" where we should have been 2002-10-11 Havoc Pennington * src/display.c (event_callback): don't raise window on button 2 click, only on button 1 and button 3. * src/frames.c (meta_frames_button_press_event): lower on button 2 press on frame * src/core.c (meta_core_user_lower): new function 2002-10-11 Havoc Pennington * src/stack.c (window_is_fullscreen_size): make the checks here allow windows larger than the screen in addition to exactly-screen-size * src/window.c (meta_window_configure_request): delete the "try to auto-enter-fullscreen-state" hack here, because it was broken, and the changes to the stacking code to move screen-size focused windows to the fullscreen layer should work better. (meta_window_new): remove auto-fullscreen hack from here too 2002-10-09 Havoc Pennington * src/stack.c (apply_constraints): also keep utility/menu/toolbar windows above their whole group. (get_standalone_layer): don't use META_LAYER_FOCUSED_WINDOW, but only use META_LAYER_FULLSCREEN while the fullscreen window has focus. Also, put screen-sized windows in the fullscreen layer, even if we didn't dare to actually put them in the fullscreen state. 2002-10-07 Havoc Pennington Add a modifier key preference for the Alt+click stuff. Can be set to "disabled" as well. * src/run-metacity.sh: load .Xmodmap in the Xnest if it exists * src/display.c (meta_display_ungrab_window_buttons): ungrab AnyModifier in case the modifier changed since we grabbed (meta_display_open): rearrange code to use meta_display_close() to mop up when we can't find any screens, avoiding the need to keep the bail-out code in sync with meta_display_close. * src/keybindings.c (devirtualize_modifiers): move this function to a public place in display.c * src/metacity.schemas.in: add setting for the modifier key to use for Alt+left/middle/right click. * src/prefs.c (update_binding): add a missing newline to a warning (meta_prefs_get_mouse_button_mods): new function * src/ui.c (meta_ui_parse_modifier): new function 2002-10-07 Havoc Pennington * src/async-getprop.c: don't include unportable Xproto.h, fix from Glynn Foster. 2002-10-06 Havoc Pennington * src/async-getprop.c: change to add only one _XAsyncHandler per display, speeding things up a bit. 2002-10-06 Havoc Pennington * src/async-getprop.c: Add wacky hack suggested by Keith Packard to get X properties asynchronously. Not actually used by metacity yet, but thinking about it. 2002-10-04 Havoc Pennington * configure.in: actually link to RANDR_LIBS 2002-10-04 Havoc Pennington * src/display.c (event_callback): do XRRUpdateConfiguration() if we have RandR extension, else poke in Xlib's screen struct to update the screen size. * configure.in: fix a bogus overwrite of cppflags, add a check for RandR extension 2002-10-04 Arvind Samptur * src/window.c (meta_window_change_workspace): call meta_window_unstick before adding window to workspace. (menu_callback): call meta_workspace_activate before meta_window_change_workspace. This would avoid us running an extra loop for determining the window workspace list. Patches from Jeyasudha and Arvind. Fixes #92575 2002-10-03 Havoc Pennington * src/themes/Esco/metacity-theme-1.xml: only specify the middle backgrounds, let left/right fall back to middle * src/theme.c (get_button): fall back to middle_background draw routines when missing the left/right button backgrounds. (button_rect): fix to handle drawing middle button backgrounds (meta_frame_style_draw): draw middle background once per middle button 2002-10-03 Havoc Pennington Button-reordering patch. Has all the code except actually installing a gconf schema and reading the gconf key in prefs.c. metacity-theme-viewer displays the button layouts for testing themes. * src/preview-widget.c (meta_preview_size_request): make up a width/height if no child widget * src/prefs.c (meta_prefs_get_button_layout): new function * src/frames.c: get the button layout from prefs and use it when drawing * src/theme.c (meta_frame_layout_calc_geometry): enhance to be able to lay out buttons in different arrangements (button_rect): draw the new button background rectangles (meta_theme_draw_frame): require a button layout argument (meta_theme_calc_geometry): pass in the button layout * src/preview-widget.h: mod to handle button layouts * src/theme-viewer.c: mod to handle button layouts 2002-10-03 Havoc Pennington * configure.in: 2.4.2 2002-10-03 Havoc Pennington * src/window.c (check_moveresize_frequency): handle the case where the clock is set backward 2002-10-01 Havoc Pennington * src/place.c (find_next_cascade): try extra cascades alongside the first, if the first fails; patch from readams@hmc.edu 2002-10-01 Havoc Pennington * src/stack.c (get_standalone_layer): put ABOVE windows in same layer as docks. 2002-10-01 Havoc Pennington * src/screen.c (meta_screen_resize_func): make it static * src/stack.c (get_standalone_layer): put above/below windows in an appropriate layer. * src/screen.c (set_supported_hint): say we support above/below * src/display.h (struct _MetaDisplay): add _NET_WM_STATE_ABOVE, _NET_WM_STATE_BELOW atoms * src/window.c (meta_window_client_message): handle above/below state messages (set_net_wm_state): handler above/below state (update_net_wm_state): handle above/below states 2002-10-01 Mark McLoughlin * src/screen.c: (meta_screen_new): default to topleft starting corner. (meta_screen_update_workspace_layout): handle new property format : orient,x,y,starting corner. Fixes #89373. * src/screen.h: add MetaScreenCorner enum. 2002-10-01 Havoc Pennington * src/window.c (constrain_position): always align fullscreen windows to top, as we do with maximized windows. 2002-10-01 Stanislav Brabec * configure.in: Added cs to ALL_LINGUAS. 2002-09-30 Havoc Pennington * src/screen.c (reload_xinerama_infos): fix compilation on Solaris, patch from Satyajit Kanungo 2002-09-29 Havoc Pennington * src/eggaccelerators.c: update from libegg to get fix from Ralph Loader for parsing, #93005 2002-09-29 Havoc Pennington * src/effects.h (META_MINIMIZE_ANIMATION_LENGTH): shorten minimize animation a bit 2002-09-28 Havoc Pennington Patch from Keith Packard to handle root window resizes. * src/screen.c (reload_xinerama_infos): factor out Xinerama code (meta_screen_resize): implement this, to be called from display.c on screen resize * src/display.c (event_callback): handle ConfigureNotify on root windows 2002-09-28 Havoc Pennington * src/stack.c (get_standalone_layer): re-enable the FOCUSED_WINDOW layer, should now work correctly. 2002-09-28 Havoc Pennington * src/window.c, src/stack.c: Rewrite stack code to work a lot differently. Should be better now, and not lose relative positions of windows when moving among layers. Also should now be possible to get session management to restore the stacking order. Probably breaks some stuff, and makes all the stack.c changes I made yesterday sort of irrelevant. 2002-09-27 Havoc Pennington * src/stack.c (get_standalone_layer): Temporarily disable use of the FOCUSED_WINDOW layer, because given the fact that moving multiple windows into the same layer changes the Z-order of those windows, it was breaking click-to-focus. 2002-09-27 Havoc Pennington * src/screen.c (meta_screen_focus_top_window): raise the focused window, since it may not be the window on top, given the below change. * src/stack.c (meta_stack_get_default_focus_window): make this more complex to prefer to focus the transient parent, followed by other windows in group, followed by topmost non-dock, followed by dock. Previously was just topmost non-dock followed by dock ignoring groups and transiency. 2002-09-27 Havoc Pennington * src/place.c (constrain_placement): constrain placement to try to keep windows from going offscreen to the right/bottom * src/stack.c (compute_layer): rearrange the logic here to say that a window must always be in at least as high a layer as any of its transient parents or group members, rather than special-casing fullscreen. Also, group_member_is_fullscreen was leaking the list of group members every time, a fairly major memory leak. 2002-09-27 Havoc Pennington * src/themes/Makefile.am (THEMES): use AgingGorilla not Gorilla (renamed on the CVS server) 2002-09-27 Havoc Pennington Try to handle Solaris Xinerama, all coded blind, someone on Solaris will need to debug the typos. * src/display.c: updates for Solaris Xinerama * src/screen.c: updates for Solaris Xinerama * configure.in: make Xinerama check more complicated to catch Solaris Xinerama 2002-09-27 Havoc Pennington * src/window.c (update_transient_for): keep a flag transient_parent_is_root_window for whether the root-window-as-parent convention was used. 2002-09-25 Arvind Samptur * src/stack.c (sort_window_list): Keep dialogs without transient parent above entire app. Fixes #88926 2002-09-26 Havoc Pennington * src/menu.c (meta_window_menu_new): use MetaAccelLabel to display accelerators for the menu items * src/metaaccellabel.c: cut-and-paste GtkAccelLabel and port to use virtual modifiers * src/Makefile.am (metacity_SOURCES): add metaaccellabel.[hc] * src/prefs.c (meta_prefs_get_window_binding): new function * src/core.c (meta_core_get_menu_accelerator): new function 2002-09-25 Havoc Pennington * src/metacity.schemas.in: Change short desc of switch_windows and cycle_windows to be different 2002-09-24 Havoc Pennington * src/place.c (fit_rect_in_xinerama): update best_overlap as we go through the loop - doh. Fix from readams@hmc.edu for #90799. (find_first_fit): try the origin of each xinerama screen after the first. Also from readams@hmc.edu 2002-09-24 Havoc Pennington * src/window.c (meta_window_save_rect): new function, only saves rect after checking current state, #93795 (meta_window_make_fullscreen): use new function (meta_window_maximize): use new function 2002-09-24 Havoc Pennington * src/window.c (meta_window_update_layer): new function * src/stack.c (compute_layer): put focused window in a layer above all other windows, in click-to-focus mode. #93022 * src/window.c (meta_window_notify_focus): update window layer on focus change. 2002-09-24 Havoc Pennington * src/main.c (main): support --version, #92796 patch from Christian Neumair * autogen.sh: change gettext test to be happy with glib-gettextize, #81425 * src/menu.c: change mnemonics to match bug #78999 * src/theme.c (meta_theme_validate): consolidate some nearly-identical themes for ease of translation, #70962 2002-09-24 Arvind Samptur * src/menu.c: Replace strings Shade with Roll Up and Unshade with Unroll. 2002-09-23 Havoc Pennington * src/main.c (main): re-enable the log handler, maybe it will break something, I don't remember why I turned it off. * src/display.c: s/_NET_SHOW_DESKTOP/_NET_SHOWING_DESKTOP/ which is what's in the spec 2002-09-22 Havoc Pennington * src/window.c (recalc_window_features): small reordering of code * src/display.c (meta_spew_event): more spew for MapNotify, UnmapNotify * src/window.c (recalc_window_features): spew more stuff * src/display.c (meta_spew_event): spew override_redirect field of ConfigureNotify 2002-09-20 Arvind Samptur * src/metacity.schemas.in: added keybindings for moving windows between workspaces. Patch from Jeyasudha. Fixes #91944. 2002-09-19 Arvind Samptur * src/tools/metacity-properties.desktop.in : change in the tooltip suggested in ui-review. 2002-09-18 Havoc Pennington * src/window.c (update_net_wm_state): handle fullscreen state here. 2002-09-15 Havoc Pennington * src/session.c (save_state): escape the window title before saving in the session file, reported by Jos Vos 2002-09-12 Havoc Pennington * src/workspace.c (meta_workspace_screen_index) (meta_workspace_index): fix compiler warnings * src/tools/metacity-window-demo.c (menu_items): add a test for dialogs with no transient parent * src/place.c (find_first_fit): Try placing window at origin of first Xinerama, even if there are no windows to place next to; makes placement work when no other windows are open on the screen. 2002-09-09 Havoc Pennington * configure.in: 2.4.1 2002-09-09 Christian Neumair * src/keybindings.c: Make virtual desktops apply instantly and still show the pager popup by Benjamin Kahn , fixes #86590. 2002-09-06 Frederic Crozat * src/themes/Crux/metacity-theme-1.xml: Fix titlebar glitch on small dialogs. 2002-09-06 Arvind Samptur * theme-format.txt : corrected some of the attributes which were not in sync with theme-parser.c Patch from Jim Bowen. #92057. 2002-09-05 Havoc Pennington * configure.in: put ro back in ALL_LINGUAS 2002-09-05 Havoc Pennington * configure.in (ALL_LINGUAS): remove 'ro' from ALL_LINGUAS, it contained invalid XML and broke the build. No <> in the translations of gconf keys! 2002-09-04 Marius Andreiana * configure.in: added 'ro' to ALL_LINGUAS 2002-09-03 Havoc Pennington * src/display.c (meta_display_get_tab_current): new function * src/keybindings.c (do_choose_window): apply modified patch from JeyaSudha to still display tab popup if only one window is on the desktop. 2002-06-25 JeyaSudha * src/session.c, src/window.c: Session saves the unmaximized postion, size of a maximized window. #86059 2002-09-03 Havoc Pennington * src/frames.c (meta_frames_update_prelit_control): don't filter out prelight for unmaximize button. #83860 (meta_frames_paint_to_drawable): handle unmaximize here as well 2002-08-27 Havoc Pennington * src/theme.c (meta_frame_layout_calc_geometry): always apply rounding for shaded windows, fixes Bluecurve theme when shaded 2002-08-25 Havoc Pennington * src/window.c (meta_window_free): when freeing a fullscreen window, update layers of the window's group. 2002-08-25 Havoc Pennington * src/display.c (meta_display_open): _NET_SUPPORTING_WM_CHECK is supposed to have type WINDOW not CARDINAL. reported by Ben Jansens 2002-08-24 Havoc Pennington * src/window.c (process_property_notify): recalculate mapped-ness of frame after toggling decorations on/off, so that windows don't disappear when decorations are toggled on. * src/tools/metacity-window-demo.c (toggle_decorated_cb): add a test for toggling decoration state on the fly 2002-08-24 Havoc Pennington * src/window.c (update_sm_hints): hack around bug in kmail etc. where SM_CLIENT_ID was set on the window, not the client leader. * src/theme.c (meta_frame_layout_calc_geometry): don't round corners unless we have enough frame to chop off. 2002-08-24 Havoc Pennington * src/util.c: translate some strings that should have been, and convert to locale encoding before printing stuff. * src/stack.c (group_member_is_fullscreen): if window itself is fullscreen, return TRUE immediately. * src/window.c (meta_window_configure_request): add hack to fullscreenize large undecorated windows. 2002-08-21 Deepa Natarajan * src/keybindings.c, src/metacity.schemas.in, src/prefs.[ch]: add maximize and unmaximize keybinding setting. Partly fixes bug# 78999. 2002-08-20 Steve Fox * metacity.spec.in: Add so that the spec file gets auto-updated whenever configure.in gets bumped. Include some missing directories. * Makefile.am * configure.in: Necessary changes for spec file magic 2002-08-20 Havoc Pennington * src/frames.c (get_control): if in the title rect check for y <= TOP_RESIZE_HEIGHT * src/display.c (meta_spew_event): put x/y coordinates in spew for enter/leave notify * src/frames.c (meta_frames_motion_notify_event): move cursor changing from here to update_prelit_control so it happens on enter notify as well (get_control): change test "y < TOP_RESIZE_HEIGHT" to "y <= TOP_RESIZE_HEIGHT" * src/Makefile.am (EXTRA_DIST): include .in files in EXTRA_DIST 2002-08-17 Simos Xenitellis * configure.in (ALL_LINGUAS): Added Greek (el). 2002-08-17 Evandro Fernandes Giovanini * configure.in (ALL_LINGUAS): Added Brazilian Portuguese (pt_BR). 2002-08-15 Havoc Pennington * src/metacity.schemas.in: default to "Sans Bold 10" for the titlebar font. 2002-08-15 Havoc Pennington * src/window.c (recalc_window_features): leave has_fullscreen_func set to TRUE if the window is screen sized and undecorated, even if the window isn't resizable. idea from Christian - Manny Calavera - Neumair * src/keybindings.c (handle_toggle_fullscreen) (handle_toggle_maximize): these disabled fullscreen/maximize if the window wasn't resizable, should have used has_fullscreen_func has_maximize_func instead. 2002-08-15 Havoc Pennington * src/keybindings.c: implement raise/lower * src/metacity.schemas.in: add raise/lower * src/prefs.c: add "raise" and "lower" prefs to keybindings * src/display.c (meta_display_set_grab_op_cursor): assert that the screen arg is non-NULL in appropriate cases 2002-08-14 Jayaraj Rajappan * src/display.c (meta_display_set_grab_op_cursor): In XGrabPointer, set the confine_to argument to the root window of the screen the window is on. * src/display.h: add screen argument. * src/window.c (meta_window_update_resize_grab_op): pass screen argument as NULL. 2002-08-14 James M. Cape * src/themes/Esco/metacity-theme-1.xml: use button positioning theme stuff. 2002-08-14 Mark McLoughlin * src/screen.c: (set_number_of_spaces_hint), move from workspace.c. (update_num_workspaces): set the hint here. Fixes #90123. * src/workspace.c: (meta_workspace_new), (meta_workspace_free): don't set the hint here. (update_num_workspaces): move to screen.c 2002-08-12 Havoc Pennington * src/stack.c (compute_layer): window is in fullscreen layer if any member of its group is fullscreen * src/window.c (meta_window_unmake_fullscreen): update layer for whole window group (meta_window_make_fullscreen): ditto * src/util.c (meta_unsigned_long_hash): move hash/equal funcs for Window in here. * src/group.c: track window groups so we can do stuff with them. 2002-08-11 Havoc Pennington * src/menu.c: don't include nonexistent stock-icons.h file 2002-08-10 Havoc Pennington * src/metacity.schemas.in: default keybindings for move, resize, maximize, etc. from Deepa #78999 2002-08-10 Havoc Pennington * src/window.c (meta_window_maximize): unshade window if shaded, from JeyaSudha (meta_window_make_fullscreen): ditto 2002-08-10 Havoc Pennington * src/menu.c: reorder the menu items so that Close is at the bottom * src/theme-viewer.c (main): set debugging mode if METACITY_DEBUG enabled 2002-08-10 Havoc Pennington * src/xprops.c (meta_prop_get_motif_hints): allow Motif hints to be smaller than expected; GLUT for example seems to set a smaller struct. #89841 * src/window.c (update_mwm_hints): use g_free on motif hints as we don't use the XGetWindowProperty return directly anymore 2002-08-10 Havoc Pennington * src/window.c (meta_window_free): be sure window is mapped if we unmanage it and it's not withdrawn; bug #90369 * src/screen.c (meta_screen_new): change string s/override/replace/ bug #89077 * src/theme.c (scale_and_alpha_pixbuf): dump the sometimes-use-NEAREST-instead-of-BILINEAR optimization, bug #87489 2002-08-10 Havoc Pennington * src/window.c (menu_callback): raise window when moving to another workspace bug #88896 * src/keybindings.c (switch_to_workspace): raise window when moving between spaces 2002-08-10 Jorn Baayen Register window menu icons with the Gtk stock system, instead of using the ones from the Metacity theme (which looked very bad with some themes). * src/Makefile.am: * src/main.c: * src/menu.c: * src/stock_delete.png: added these files * src/stock_minimize.png: * src/stock_maximize.png: * src/ui.c 2002-08-10 Havoc Pennington * src/keybindings.c (meta_display_process_key_event): filter out key events that happen on popup menus etc. * src/ui.c (meta_ui_window_is_widget): new function to check whether a window belongs to a GtkWidget such as the popup menu * src/prefs.c (change_notify): put in a no-op line for AIX compiler, #84252 2002-08-10 Havoc Pennington * src/window.c (update_resize): track time to avoid sending a deluge of move/resize requests, suggestion from xavier.bestel@free.fr bug #86830. Not really sure if this will make a difference or not. We'll see I guess. (update_move): do same on move though it seems less important here. * src/display.h (struct _MetaDisplay): store the last time we sent a move/resize event. 2002-08-10 Havoc Pennington * src/window.c (meta_window_notify_focus): add a FIXME comment with a link to bug #90382 2002-08-09 Havoc Pennington * src/keybindings.c (handle_toggle_maximize): disable maximize, fullscreen, shade via keybindings on windows that don't support it. 2002-08-08 Craig Black Patch to provide extra cues when using the window menu move and resize items, #85724. * src/common.h: add new cursors * src/display.c: (grab_op_is_mouse) (meta_display_create_x_cursor), (xcursor_for_op), (meta_display_set_grab_op_cursor), (meta_display_begin_grab_op): The keyboard move and resize grab ops now also use the mouse. Allow the grab cursor to be changed during the grab op. Hold onto the initial grab position in case of reset. * src/display.h: save the initial grab position * src/keybindings.c: (process_keyboard_move_grab), (process_keyboard_resize_grab), (handle_begin_move), (handle_begin_resize): The keyboard move and resize grab ops now also use the mouse. * src/window.c: (meta_window_client_message), (menu_callback), (update_move), (update_resize), (meta_window_handle_mouse_grab_op_event), (warp_pointer), (meta_window_warp_pointer), (meta_window_begin_grab_op), (meta_window_update_resize_grab_op): When moving or resizing a window use the last grab position in computing change increment. Provide support for warping the mouse pointer. * src/window.h: new warp pointer and grab op helper functions 2002-08-08 Craig Black * src/display.h: update comment * src/window.c: (meta_window_focus): also set expected focus window when setting input focus. 2002-08-07 Craig Black * src/display.c: (meta_display_unshow_desktop): focus top window after showing desktop, fixes #88080. 2002-08-07 Craig Black * src/core.c: (meta_core_show_window_menu): focus window on right click for menu, #87299. 2002-08-07 Craig Black * src/display.c: (meta_display_open): clear expected focus window on open * src/display.h: add expected_focus_window field * src/window.c: (meta_window_make_fullscreen), (meta_window_unmake_fullscreen): change meta_window_update_layer() to meta_stack_update_layer() so build works again. (meta_window_free), (meta_window_make_fullscreen), (meta_window_focus), (meta_window_notify_focus): keep track of expected focus window after sending WM_TAKE_FOCUS event, previously if a UnmapNotify event arrived before the FocusIn event we would lose focus, fixes #84564. 2002-08-07 Havoc Pennington * src/window.c (meta_window_unmake_fullscreen): update layer (meta_window_make_fullscreen): update layer * src/stack.c (compute_layer): put window on fullscreen layer if fullscreen 2002-08-06 Craig Black * src/window.c: (meta_window_client_message): implement _NET_WM_MOVERESIZE enhancements, see #90077. 2002-08-06 Havoc Pennington * configure.in: 2.4.0 (this version number has no special significance, just didn't want to go to 4-digit micro version ;-) 2002-07-28 Havoc Pennington * src/window.c (meta_window_shade): disable animation when shading windows, just doesn't really convey the idea anyway. * src/effects.c: Move to using a shaped window instead of IncludeInferiors to do the animations, looks a lot better because we don't have to grab the server. * src/window.c (meta_window_change_workspace): remove bogus assertion that was causing a crash (meta_window_new): auto-fullscreen huge undecorated windows. * src/keybindings.c (switch_to_workspace): use meta_window_change_workspace() to avoid same bug in cut-and-paste code from there 2002-08-06 He Qiangqiang * configure.in: Added "zh_CN" to ALL_LINGUAS. 2002-08-05 Ross Burton * src/window.c: (meta_window_client_message): Set ->wm_state_skip_pager (ditto for _taskbar) instead of ->skip_pager so that these hints actually work. Fixes #89850. 2002-08-04 Havoc Pennington * src/frames.c (meta_frames_paint_to_drawable): init button states for the button backgrounds * src/themes/Atlanta/metacity-theme-1.xml: adapt to work correctly with button repositioning 2002-08-04 Havoc Pennington * src/frames.c (meta_frames_button_press_event): raise/focus on click, even if the click was on the client area (this makes Alt+button1 raise windows again, yay) * src/stack.c (compute_layer): put panels in the DOCK layer always (keep them on top of other windows). Still sloppy-focus raised with respect to other docks. * configure.in: remove -Wshadow for now as GTK headers make all kinds of noise with it. 2002-08-02 Mark McLoughlin * src/screen.c: (meta_screen_new): set active_workspace to NULL. Also actually activate the first workspace instead of just setting active_workspace. Fixes #87367. (meta_screen_ensure_workspace_popup): don't re-use our iterator for setting the entries list, stop iterating when we've gone beyond the last workspace (there may be empty spaces in the last row). * src/workspace.c: (meta_workspace_activate): if no workspace was previously activated, return. 2002-08-04 Havoc Pennington * src/theme.c (free_menu_ops): use MetaMenuIconType not button type for the size of the menu ops array (meta_theme_define_int_constant): return TRUE on success (how the heck did this ever work?) (meta_theme_define_float_constant): return TRUE on success (meta_frame_style_validate): allow the "positional" buttons to be omitted for now. * src/testgradient.c (render_multi): don't define N_COLORS twice * src/theme-viewer.c (run_theme_benchmark): don't define ITERATIONS twice * src/theme.c (button_rect): handle new button types (meta_button_type_to_string): update (meta_button_type_from_string): update * src/theme.h (enum): add button types for the 6 possible button positions. No way to reposition buttons still but this will allow themes to go ahead and support doing so. 2002-08-03 Craig Black * src/keybindings.c: (meta_display_process_key_event), (process_tab_grab), (do_choose_window): change alt+tab to a windowless grab, fixes #83499 2002-08-03 Craig Black * src/display.c: (event_callback): Have ButtonPress and UnmapNotify events account for a null grab window, fixes #87896 2002-08-03 Gaute Lindkvist Corrected some issues with the Bright theme. Mainly making sure the text does not clip, as well as increasing the size of the menu icon. 2002-08-01 Mark McLoughlin Implements support for _NET_WM_ALLOWED_ACTIONS. Fixes #84282. * src/display.[ch]: (meta_display_open): add _NET_WM_ALLOWED_ACTIONS atoms. * src/screen.c: (set_supported_hint): set them as being supported. * src/window.c: (set_allowed_actions_hint): impl setting _NET_WM_ALLOWED_ACTIONS. (recalc_window_features): use it here, but only if things have changed. 2002-08-01 Christophe Fergeau * src/metacity-dialog.c: focus the "Close" button by default on the dialog which appears at exit when some apps can't be session managed 2002-08-01 Mark McLoughlin * src/session.c: (save_yourself_possibly_done): send a SaveYourselfDone if we're skipping this global save. (save_yourself_callback): don't not save session state if the save style is Global. Fixes #89390. * theme-format.txt: update. 2002-07-30 Pablo Saratxaga * configure.in: Added Vietnamese (vi) to ALL_LINGUAS 2002-07-24 Havoc Pennington * src/themes/Makefile.am (THEMES): add Metabox theme from Garrett * README: updates 2002-07-21 Havoc Pennington * src/window.c (meta_window_new): don't automaximize fullscreen windows. 2002-07-14 Havoc Pennington * src/window.c (recalc_window_features): don't allow shading of border-only windows. 2002-07-24 Havoc Pennington * src/theme-parser.c (meta_theme_load): look for themes in ~/.themes/NAME/metacity-1/ and datadir/themes/NAME/metacity-1 instead of the old locations. * src/themes/Makefile.am: install themes to datadir/themes/NAME/metacity-1/ to match how GTK works, breaking third-party themes yet again! woot! 2002-07-20 Havoc Pennington * src/display.c (meta_display_open): grab display across managing each screen; XGetInputFocus() on startup. 2002-07-19 Havoc Pennington * src/window.c (meta_window_configure_request): disable configure requests during a user move/resize operation, mostly a workaround for stoopid apps. 2002-07-24 jacob berkman * configure.in: fix x11 header checks when x11 is not in the default include path 2002-07-23 Ross Burton * src/menu.c (meta_window_menu_new): Use the real workspace names instead of making up numbers. 2002-07-23 Havoc Pennington * src/themes/Makefile.am (THEMES): put Gorilla back in the build * src/themes/Gorilla/metacity-theme-1.xml, src/themes/Crux/metacity-theme-1.xml: fixes from Sebastien Delestaing so that these themes work properly with different font sizes. * src/frames.c (get_control): patch from Balamurali Viswanathan for #81984 (resize titlebar from the top not the bottom) 2002-07-23 Havoc Pennington * src/keybindings.c (meta_display_process_key_event): handle NULL screen from screen_for_xwindow * src/display.c (meta_display_screen_for_xwindow): put an error trap around the XGetWindowAttributes(), should fix the popular "closing a window results in a crash" bug. * src/util.c (print_backtrace): support optional backtrace feature using gnu libc backtrace() call 2002-07-15 jacob berkman * src/update-from-egg.sh: steal from profterm to fix build 2002-07-13 Havoc Pennington * src/workspace.c (meta_workspace_new): don't put a newline after the default workspace name 2002-07-13 Havoc Pennington * src/keybindings.c: adapt to virtual modifiers (meta_display_process_mapping_event): we need to reload the binding tables now when the modmap changes. * src/prefs.c (update_binding): parse virtual modifiers, not plain modmask * src/common.h (MetaVirtualModifer): new enum * src/ui.c (meta_ui_parse_accelerator): use egg_accelerator_parse_virtual() * src/Makefile.am: add eggaccelerators.[hc] for the virtual accelerator parsing function 2002-07-13 Christophe Fergeau * configure.in: added fr to ALL_LINGUAS 2002-07-12 Havoc Pennington * src/session.c (warn_about_lame_clients_and_finish_interact): don't display the dialog if all the apps were session managed. 2002-07-12 Havoc Pennington * src/session.c: don't send SmInteractDone until the warning dialog about crappy clients has been closed. 2002-07-12 Havoc Pennington * src/window.c (meta_window_new): try to maximize windows that are too big for the work area * src/place.c (find_next_cascade): don't let the cascade algorithm place windows off the screen, and fix it to always exhaustively search the window list for cascade parents. 2002-07-11 Havoc Pennington * src/metacity-dialog.c (main): option to display error when a command fails to run. * src/keybindings.c (handle_run_command): run commands in response to keybindings. * src/prefs.c: add command keybinding stuff * src/metacity.schemas.in: add keybindings for running commands, and keys to store the commands themselves. 2002-07-10 Havoc Pennington * src/display.c: properly attribute selection code to Matthias Clasen 2002-07-10 Havoc Pennington * README: couple of updates * src/main.c (usage): add --replace to usage, reported by Matthias Clasen 2002-07-09 Havoc Pennington * src/metacity.schemas.in: fix short description for begin_resize, patch from Jayaraj, #87654 * src/keybindings.c (handle_begin_resize): apply patch from Jayaraj to actually handle the begin resize keybinding. 2002-07-09 Havoc Pennington * src/window.c (constrain_position): don't center vertically for maximized windows that don't fill the screen, just leave them at the top. 2002-07-06 Havoc Pennington * src/tabpopup.c (selectable_workspace_new): increase the size of the mini workspaces 2002-07-06 Havoc Pennington Apply blackc@speakeasy.net patch, bug #83940, to do mini-workspaces similar to the pager, when switching spaces. * src/window.c (update_net_wm_state): actually fill in wm_state_skip_taskbar, wm_state_skip_pager flags * src/tabpopup.c: support drawing a mini-workspace similar to the one the pager draws. * src/stack.c (meta_stack_list_windows): new function to list the windows in stacking order * src/screen.c (meta_screen_ensure_workspace_popup): don't pass in the ugly default app icon for workspaces * src/display.c (event_callback): fix from blackc@speakeasy.net to avoid dereferencing a NULL grab window. 2002-07-06 Havoc Pennington * src/display.c (meta_display_open): put _NET_DESKTOP_NAMES in the array of atom names, so desktop names might work and we don't read uninitialized memory. * src/main.c (main): add VERSION/timestamp verbose message. * src/keybindings.c: implement cycle_windows cycle_panels * src/metacity.schemas.in: add the cycle_windows cycle_panels keybindings * src/prefs.h (META_KEYBINDING_FOCUS_PREVIOUS): replace FOCUS_PREVIOUS key binding with CYCLE_WINDOWS and CYCLE_PANELS (not good names really, but I don't have ideas). * src/common.h: add a grab op for alt+esc window cycling 2002-07-05 Havoc Pennington * src/themes/Makefile.am (THEMES): Take Gorilla out until it gets repaired. 2002-07-05 Havoc Pennington * src/window.c (update_wm_hints): Change default value of input hint (if not specified) to true instead of false. This is what some clients assume, such as Visual SlickEdit. 2002-07-02 Havoc Pennington * src/window.c (meta_window_show_menu): use new macros to get whether we allow move/resize correct * src/frame.c (meta_frame_get_flags): use new macros to get whether we can move/resize correct, considering maximized/fullscreen for the move case. * src/window.h (META_WINDOW_ALLOWS_RESIZE, META_WINDOW_ALLOWS_MOVE): new macros * src/keybindings.c (process_keyboard_resize_grab): finish the right/left resize, patch from Jayaraj #78179. Has the same old move/resize bug, if it hits a constraint it starts to break because we move without resizing. 2002-07-02 Mark McLoughlin * src/keybindings.c: (grab_keyboard), (ungrab_keyboard): rename from {un}grab_all_keys_and_keyboard and only do an XKeyboardGrab, the XKeyGrab isn't neccessary. (meta_screen_grab_all_keys), (meta_screen_ungrab_all_keys), (meta_window_grab_all_keys), (meta_window_ungrab_all_keys): update for above change. (handle_workspace_switch): don't use a MetaWindow when workspace switching, use the root window instead. 2002-07-01 Mark McLoughlin Fix broken workspace switching from my previous commit. * src/display.c: (meta_display_begin_grab_op): don't leak a pointer grab if we fail to grab the keyboard. * src/keybindings.c: (meta_screen_grab_keys): check screen->all_keys_grabbed. (meta_screen_grab_all_keys): regrab our standard bindings if we fail. (handle_workspace_switch): revert to our previous behaviour of using the last focused window to do the grab upon. Only use the RootWindow if there isn't anything else to use. * src/screen.c: (meta_screen_new): initialise all_keys_grabbed. 2002-06-26 Mark McLoughlin Fixes not being able to tab out of a workspace which contains no windows. * src/core.c: (meta_core_begin_grab_op): upd for meta_display_begin_grab_op change. (meta_core_get_grab_frame): allow for grab_window == NULL. * src/display.[ch]: (meta_display_screen_for_xwindow): implement. (meta_display_begin_grab_op): grab on the root window if window == NULL. (meta_display_end_grab_op): use grab_screen instead of grab_window. * src/keybindings.c: (grab_all_keys_and_keyboard): split out from meta_window_grab_all_keys. (ungrab_all_keys_and_keyboard): split out from meta_window_ungrab_all_keys. (meta_screen_grab_all_keys), (meta_screen_ungrab_all_keys): implement grabbing and ungrabbing on the root window. (meta_display_process_key_event): if window == NULL, check the event is from the same screen and process. Only happens with workspace switching. (process_workspace_switch_grab): kill window param and don't use grab_window. (handle_tab_forward), (handle_begin_move): upd for meta_display_begin_grab_op change. (handle_workspace_switch): remove brokeness. Always do the grab op on the root window. * src/keybindings.h: add meta_screen_{un}grab_all_keys. * src/window.c: (meta_window_client_message), (menu_callback): update for meta_display_begin_grab_op change. 2002-06-25 Mark McLoughlin * src/fixedtip.c: (meta_fixed_tip_show): * src/frames.c: (meta_frames_new): * src/tabpopup.c: (meta_ui_tab_popup_new): s/gdk_get_default_display/gdk_display_get_default/ s/gdk_get_default_screen/gdk_screen_get_default/ 2002-06-25 Mark McLoughlin * src/themes/Crux/active-border-top-left-border.png: * src/themes/Crux/active-border-top-right-border.png: * src/themes/Crux/active-top-left-corner.png: * src/themes/Crux/active-top-mid-left-border.png: * src/themes/Crux/active-top-mid-right-border.png: * src/themes/Crux/active-top-right-corner.png: * src/themes/Crux/inactive-border-top-left-border.png: * src/themes/Crux/inactive-border-top-right-border.png: * src/themes/Crux/inactive-top-left-corner.png: * src/themes/Crux/inactive-top-mid-border.png: * src/themes/Crux/inactive-top-right-corner.png: * src/themes/Crux/metacity-theme-1.xml: added support for border only windows. 2002-06-24 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Added some stuff to the window buttons, so they use the ACTIVE bg/fg. 2002-06-25 Mark McLoughlin * src/display.[ch]: (meta_display_open): src/screen.c: (set_supported_hint), (set_work_area_hint): Its _NET_WORKAREA, not _NET_WM_WORKAREA silly :-) 2002-06-25 Mark McLoughlin * src/screen.[ch]: (update_num_workspaces), recalc workarea hint when new workspaces created. Fixes bug that workarea not calculated until first non-dock window is mapped. (set_work_area_hint), (set_work_area_idle_func), (meta_screen_queue_workarea_recalc): move all this stuff from workspace.c. * src/workspace.c: (meta_workspace_invalidate_work_area): use meta_screen_queue_workarea_recalc. 2002-06-23 Gediminas Paulauskas * src/themes/Bright/metacity-theme-1.xml: Update with border-only window stuff from Atlanta. 2002-06-22 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Update for "border" frame stuff, minor button/spacing improvements. 2002-06-22 Havoc Pennington Partially fix Jacob's SM bugs. * src/window.c (meta_window_apply_session_info): restore the extra stuff we're saving, except stack position I didn't figure out yet. * src/session.c: save stack position, minimized, maximized, in the session file. 2002-06-22 Havoc Pennington * src/workspace.c (set_number_of_spaces_hint): do nothing if screen is being unmanaged, we don't want to blow away state, we want to remember it for the next window manager. 2002-06-22 Havoc Pennington * src/workspace.c (meta_screen_ensure_workspace_popup): rename from meta_workspace_ensure_tab_popup, and use workspace->name instead of a hardcoded name 2002-06-22 Havoc Pennington * src/xprops.c (meta_prop_get_utf8_list): new utility function * src/display.c (meta_display_open): _NET_DESKTOP_NAMES atom (event_callback): update workspace names when the property changes * src/screen.c (set_supported_hint): "support" _NET_DESKTOP_NAMES (nothing to do really) 2002-06-21 Havoc Pennington Theme breakage! Themes have to implement "border" frames now, see Atlanta for an example. Fixes #84285 * src/tools/metacity-window-demo.c (do_appwindow): add a border-only window * src/window.c (update_mwm_hints): read border only from the MWM hints * src/window.h (struct _MetaWindow): add border_only flag * src/core.c (meta_core_get_frame_type): report border type if required * src/common.h (enum): add META_FRAME_TYPE_BORDER 2002-06-20 Mark McLoughlin * src/window.c: (meta_window_visible_on_workspace): sticky windows aren't visibile on all screens. Check the workspace is on the same screen as the window. * src/workspace.c: (meta_workspace_list_windows): use meta_window_visible_on_workspace here. 2002-06-19 Havoc Pennington * src/display.c (meta_resize_gravity_from_grab_op): handle UNKNOWN keyboard resizing state * src/keybindings.c (process_keyboard_resize_grab): implement keyboard resize key handling somewhat (only vertical resize works, left/right arrow not implemented, and visual feedback of the edge we're resizing isn't implemented) * src/window.c (menu_callback): start keyboard resize grab when it's chosen from the menu 2002-06-17 Havoc Pennington * src/stack.c (meta_stack_get_default_focus_window): don't use a minimized window as the next focus window, patch from blackc@speakeasy.net 2002-06-17 Havoc Pennington * src/place.c (find_next_cascade): increase the cascade threshold a bit. (find_first_fit): implement a somewhat lame first fit algorithm 2002-06-17 Havoc Pennington * src/window.c (meta_window_change_workspace): fix from Gaute Lindkvist #82977 for unsticking windows 2002-06-17 Frederic Crozat * src/metacity.schemas.in: associate close_window keybinding to Alt-F4 2002-06-16 Havoc Pennington * src/main.c (main): fix spelling error, #85452 2002-06-15 Havoc Pennington * src/keybindings.c (meta_display_process_key_event): don't pass a null string to printf * src/display.c (key_event_description): don't pass a null string to printf * src/keybindings.c (meta_set_keybindings_disabled): allow enable/disable keybindings regardless of debug mode. 2002-06-15 Havoc Pennington * src/draw-workspace.h, src/draw-workspace.c: workspace-drawing code factored out of libwnck, needs wiring up to tabpopup.c (which is kind of annoying since you have to get the list of workspaces and MetaWindow across the barrier between the GDK-aware and non-GDK-aware sides of metacity) 2002-06-14 Havoc Pennington * src/window.c (meta_window_show): always focus new windows, trying to be smart about it was a flop. 2002-06-14 Jayaraj Rajappan * src/delete.c (io_from_ping_dialog): Check for NULL string before calling strlen(). Fixes the core dump issue reported in #84873. 2002-06-13 Anders Carlsson * src/theme.c (meta_frame_layout_calc_geometry): Set client height as 0 when the window actually is shaded, not the other way around. 2002-06-12 Havoc Pennington * src/theme.c (meta_frame_layout_calc_geometry): when a window is shaded, don't include client height in the height calculation. * src/workspace.c (meta_workspace_get_neighbor): apply fix from Mads Villadsen for the Up arrow key, #84582 2002-06-12 Havoc Pennington * src/theme.c (meta_frame_style_draw): Draw the buttons right before the "overlay" piece. 2002-06-12 Jayaraj Rajappan * src/tools/metacity-properties.glade: accessibility work for metacity-properties capplet. Set appropriate atk relations. Fixes bug #84749 2002-06-11 Havoc Pennington * src/window.c (meta_window_show): allow dialogs to steal focus from panels/desktop 2002-06-10 Jayaraj Rajappan * src/fixedtip.c: include - fix for #83960 2002-06-10 Erwann Chenede - * src/keybindings.c : (handle_close_window, handle_minimize_window) verify the active window has the appropriate close/minimize function before closing or minimizing the window. 2002-06-09 Havoc Pennington * configure.in: 2.3.987 2002-06-09 Havoc Pennington * src/delete.c (delete_ping_timeout_func): add G_IO_NVAL to watch condition, patch from Gustavo Giraldez, avoids another 100% CPU thingy 2002-06-09 Havoc Pennington * src/place.c (meta_window_place): don't run constrain_placement on windows we allow to go anywhere (docks, etc.). Fixes positioning of panel windows in certain cases. 2002-06-09 Havoc Pennington * src/frames.c (meta_frames_button_press_event): don't raise/focus the window if minimize/close are clicked, patch from Gaute Lindkvist #75460 2002-06-08 Havoc Pennington Cleanups to workspace popup patch. Space before all parens in a couple places. * src/prefs.c (meta_prefs_get_keybinding_action): fix brace indentation, and use while instead of for loop. Take a "mask" argument to avoid ambiguity issues. * src/keybindings.c (handle_workspace_switch): rename from handle_workspace_forward since there's no directionality here (handle_workspace_switch): add a FIXME about how screwed it is that we need a window in order to do our grab. Should be able to grab on a dummy window like no_focus_window or the root window. (process_workspace_switch_grab): rename from tab_grab for clarity, no tab involved here. * src/common.h (enum): have only one grab op for all workspace switching directions, instead of one for each. 2002-06-08 Havoc Pennington Apply big patch from blackc@speakeasy.net adding a popup window to the Ctrl+Alt+arrows shortcuts. #83940 2002-06-08 Havoc Pennington * src/screen.c (meta_screen_new): select key press/release on the display->no_focus_window, another attempted fix for not getting keybindings when no window is focused. Still doesn't seem to work though. I don't get what's going wrong. (meta_create_offscreen_window): new function, used instead of XCreateSimpleWindow so we get override redirect offscreen windows. 2002-06-08 Havoc Pennington * src/display.c (meta_display_open): set net_supporting_wm_check in addition to win_supporting_wm_check, patch from JeyaSudha for #83365 * src/screen.c (set_wm_check_hint): remove setting win_supporting_wm_check on leader window here, done already in display.c 2002-06-08 Havoc Pennington * src/keybindings.c (meta_window_ungrab_keys): set keys_grabbed to FALSE, patch from Jayaraj for #81857 2002-06-08 Havoc Pennington * src/xprops.c (meta_prop_get_utf8_string): don't die on bad atom name * src/display.c (meta_display_close): don't unmanage windows here, do it in screen_free and then closing the display unmanages windows as a side effect of unmanaging the screen (meta_display_unmanage_screen): new function (process_selection_clear, process_selection_request): handle selection stuff (meta_spew_event): don't crash on client message containing invalid atom (meta_spew_event): don't crash on property notify with invalid atom * src/main.c (main): add --replace option to replace existing window manager. * src/screen.c: implement holding manager selection. * src/display.c (meta_display_open): add new selection-related atoms. 2002-06-08 Havoc Pennington * src/screen.c (meta_screen_new): select keypress/keyrelease events on root window, this may fix the bug where keybindings didn't work if you didn't have a focused window. 2002-06-08 Havoc Pennington * src/main.c (main): call meta_session_shutdown when exiting cleanly * src/session.c (meta_session_shutdown): function to change use to RestartIfRunning (meta_session_init): change normal restart hint to RestartImmediately 2002-06-08 Havoc Pennington Yeah I know maximization is broken, I'm too tired to fix it. Probably because of the change to update_struts() that was supposed to fix the 100% CPU bug. * src/place.c (meta_window_place): don't run docks and things through the placement algorithm. Thought it might fix metacity-window-demo but it didn't. * src/window.c (constrain_size): only get work area when needed (meta_window_new): init the do_not_cover field 2002-06-08 Havoc Pennington * src/screen.c (meta_screen_get_xinerama_for_window): short-circuit the "only one xinerama" case, and use outer rect of window instead of window->rect, so we get root window coords. * src/theme.c (meta_frame_layout_get_borders): if fullscreen all frame edges are zero-width. * src/frame.c (meta_frame_get_flags): init fullscreen flag. * src/common.h (enum): add META_FRAME_FULLSCREEN frame flag * src/place.c: fix up calls to meta_window_get_work_area * src/window.c (meta_window_get_work_area): add an arg for whether the work area is for the screen or the xinerama subscreen. (constrain_position): fix up calls to meta_window_get_work_area (constrain_size): ditto * src/screen.c (meta_screen_new): add METACITY_DEBUG_XINERAMA environment variable which simulates xinerama on a single head. 2002-06-08 Havoc Pennington * src/window.c (update_struts): only invalidate things if the struts actually change, since the panel likes to set them over and over. May fix the infinite loop that caused 100% CPU usage. 2002-06-07 Havoc Pennington * src/screen.c (meta_screen_new): use XineramaIsActive() not XineramaQueryExtension() 2002-06-07 Havoc Pennington * src/screen.c (meta_screen_get_current_xinerama): don't return null on non-multihead 2002-06-06 Havoc Pennington * src/screen.c (meta_screen_get_current_xinerama): implement * src/place.c (meta_window_place): cascade windows on the active Xinerama screen * src/window.c (meta_window_move_resize_internal): strip out the #if 0 cruft about guessing fullscreen mode (constrain_position, constrain_size): fullscreen/maximize to the Xinerama head, not the whole screen (meta_window_get_work_area): autocreate struts at the Xinerama physical screen edges for the screen the window is on. * src/screen.c (meta_screen_get_xinerama_for_window): someone snuck in a for loop, fix it. ;-) 2002-06-06 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Increase the border size of the buttons so they aren't quite so huge on my box. Also get a *little* closer to finally fixing the horizontal line behind the icon. It now works decently with common font sizes (in pixels). 2002-06-05 Havoc Pennington * src/theme.c (meta_color_spec_new_from_string): parse "shade/foo/factor" as a color (colorize_pixbuf): remove the unused hsv_to_rgb and vice-versa stuff, add the gtk_style_shade stuff. (meta_color_spec_render): render the shaded color spec * src/theme.h (struct _MetaColorSpec): add "shade" mode to MetaColorSpec. 2002-06-04 Seth Nickell * src/metacity.desktop.in: Add X-GnomeWMSettingsLibrary to desktop file to support new Window capplet. 2002-06-04 Havoc Pennington * src/window.c (update_wm_hints): fix for how we read the input hint, from Hidetoshi Tajima (meta_window_show): from Hidetoshi, don't autofocus windows with input = FALSE wm_take_focus = FALSE when they first appear. We do allow these windows to be focused (so keynav works), but they don't get focused automatically. Now how do we keep them out of the task list? 2002-06-04 Gustavo GirÃ�¡ldez * src/theme.c (draw_op_as_pixbuf): Use icon's instead of image's fill_type when type is META_DRAW_ICON. 2002-06-03 Havoc Pennington * src/window.c (meta_window_new): don't automatically fullscreen things opened fullscreen, because there's no GUI to un-fullscreen them. 2002-06-03 Havoc Pennington * src/theme-parser.c (parse_aspect_ratio): fix error message about bad aspect ratio name. 2002-06-03 Havoc Pennington * src/themes/Esco/metacity-theme-1.xml: test button aspect ratio instead of hardcoded button size, James feel free to revert if you don't like it this way. * src/theme-parser.c: parse the aspect_ratio element for button aspect ratios. * src/theme.h (struct _MetaFrameLayout): allow button sizes to be given as an aspect ratio derived from the titlebar height, instead of as a fixed size. * src/theme.c (meta_frame_layout_validate): validate new button sizing parameters * src/theme.c (meta_frame_layout_calc_geometry): use new button layout params Mon Jun 3 15:12:11 2002 HideToshi Tajima * configure.in (METACITY_LIBS): put -lXext into SHAPE_LIBS 2002-06-03 Kjartan Maraas * src/tools/metacity-properties.desktop.in: Someone forgot to mark the two strings in here for translation :) 2002-06-02 Havoc Pennington * configure.in: 2.3.610 2002-06-01 Havoc Pennington * src/frames.c (meta_frames_finalize): move the remove_listener to finalize instead of destroy, thanks to Jayaraj for tracking down the bug. 2002-06-01 Havoc Pennington * src/session.c: add some missing \n (meta_session_init): remove the #if 0 interact callback from our initial SmcOpenConnection call, this arg to SmcOpenConnection doesn't exist. 2002-06-01 Havoc Pennington * src/session.c: put in more debug spew about the session 2002-05-30 Havoc Pennington * src/Makefile.am (INCLUDES): use $(prefix)/@DATADIRNAME@/locale for localedir to work with Solaris native gettext, patch from Hidetoshi Tajima * src/tools/Makefile.am: ditto 2002-05-31 Havoc Pennington * src/theme.c: add MetaImageFillType and implement TILE in addition to the existing SCALE * src/theme.h (struct _MetaDrawOp): remove no-longer-used "alpha" field 2002-05-31 Havoc Pennington * src/theme.c (multiply_alpha): now just uses meta_gradient_add_alpha (draw_op_as_pixbuf): implement alpha gradients for tint, gradient, and image draw ops, so I can implement garrett's stuff. * src/gradient.c (meta_gradient_add_alpha): new function to multiply the alpha channel of a pixbuf by an alpha gradient 2002-05-30 Havoc Pennington * src/main.c (main): verbose-log on startup whether we were compiled with various extensions * src/display.c (meta_display_queue_retheme_all_windows): reapply shape mask when changing themes, sucks to do it here though, makes theme changing slower. Needs fixing. * src/theme-parser.c (parse_toplevel_element): parse rounded corner options to frame_geometry * src/frames.c (meta_frames_apply_shapes): apply rounded corners if requested by the theme * configure.in (HAVE_SHAPE): check for shape extension 2002-05-30 Stephen Browne * src/tools/metacity-properties.c: Some day I'll make all my changes in one commit :) Needed to rip out code for adding icon to the dialog since it was removed from teh galde file in my previous change. 2002-05-30 Stephen Browne * src/tools/metacity-properties.glade: Some UI changes demanded by Pat and Calum. Make Close default response Change mnemonic for Click so as not to clash with Close 2002-05-30 Stephen Browne * src/tools/metacity-properties.glade: changed window title to match other control center dialogs 2002-05-29 Havoc Pennington * src/session.c (meta_session_init): improve error about failing to open session manager. (shutdown_cancelled_callback): send SmcSaveYourselfDone when we get cancelled (interact_callback): implement an interact callback that complains about lame clients that can't be saved. Still somewhat buggy in that it sends InteractDone before the user has closed the dialog. 2002-05-29 Havoc Pennington * src/tools/metacity-mag.c: add a magnifier I'm using when making themes. Not installed. * src/tools/metacity-properties.c: reindentation, show window, add copyright info. * src/tools/metacity-properties.glade: make main window !visible on startup, to avoid funkiness. 2002-05-29 Jacob Berkman * src/tools/Makefile.am (EXTRA_DIST): dist .desktop.in files 2002-05-29 Stephen Browne New simple metacity-properties dialog to configure focus mode and auto raise. * configure.in: added build support for metacity-properties * src/tools/Makefile: more build stuff * src/tools/metacity-properties.c: added these files * src/tools/metacity-properties.glade: * src/tools/metacity-properties.desktop.in: * src/tools/metacity-properties.png: 2002-05-29 Havoc Pennington * src/window.c (meta_window_move_resize_internal): add code to also guess that client wants to come out of fullscreen, then #if 0 the whole deal, I'm not sure it's such a good idea. 2002-05-29 Havoc Pennington * src/window.c (meta_window_move_resize_internal): guess if a window meant to be fullscreen, and if so put it in that state. 2002-05-28 Havoc Pennington * src/window.c (redraw_icon): handle missing frame, prevents segv with undecorated windows. #83298 2002-05-28 Havoc Pennington Patch from Erwann Chenede for raise_or_lower keybinding * src/display.c, src/common.h: POINT_IN_RECT moved to a common location, removed from here (meta_rectangle_intersect): move here and make it public * src/prefs.c: add raise_or_lower keybinding * src/stack.c (meta_stack_get_below, meta_stack_get_above): add an arg to only get windows within the same layer * src/keybindings.c (handle_raise_or_lower): add handling for a "raise window if obscured, else lower" keybinding 2002-05-28 Havoc Pennington * src/window.c (meta_window_configure_request): handle CWStackMode in configure requests (meta_window_new): if a window is opened at 0,0 and screen size, put it in the fullscreen state. (meta_window_new): remove old code that set the window position to 0,0 if PPosition/USPosition unset, that will be handled by whether we place the window or not. 2002-05-28 Abel Cheung * configure.in: Added "zh_TW" to ALL_LINGUAS. 2002-05-27 Havoc Pennington * src/window.c (meta_window_new): search for the window's screen by root window instead of Screen*, maybe it will help with bug #82664 2002-05-27 Kjartan Maraas * autogen.sh: Hook up intltoolize here. * configure.in: Initialize intltool. * src/metacity.schemas.in: Add this. * src/metacity.desktop.in: Add this too * src/Makefile.am: Hook up intltool support for .schemas and .desktop. * Makefile.am: Dist the intltool files. 2002-05-27 Anders Carlsson * src/themes/Gorilla/metacity-theme-1.xml: Apparently someone thinks my name is Anders Carlsom. Well, it's not. (Thanks to Carl-Johan Kjellander for noticing.) 2002-05-26 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Remove borders from Esco theme as well (didn't know you could), apparently fixed the problem where the spacing between the icon & the title got larger as the fontsize went up. 2002-05-26 Havoc Pennington * src/themes/Atlanta/metacity-theme-1.xml: totally drop the borders off of maximized windows. 2002-05-26 Havoc Pennington Patch from Gaute Lindkvist so you can't move the panel or desktop to only one workspace. * src/keybindings.c (handle_move_to_workspace): don't allow moving window to another space if the window is always_sticky * src/window.c (recalc_window_features): set the always_sticky field for desktop/dock windows. (meta_window_show_menu): disable unsticking always sticky windows via the menus * src/menu.c (meta_window_menu_new): disable workspace items if requested 2002-05-26 Matthias Warkus * po/de.po: Added. * configure.in: de added to ALL_LINGUAS 2002-05-25 Erwann Chenede - * src/keybindings.c (rebuild_screen_binding_table, rebuild_window_binding_table, meta_change_keygrab): allow key grabbing for unmodified keys (e.g F1, etc) fix #82630 2002-05-25 Anders Carlsson * src/place.c: (get_vertical_edges), (get_horizontal_edges): Take Xinerama screen edges into consideration. * src/screen.c: (meta_rectangle_intersect), (meta_screen_get_xinerama_for_window): * src/screen.h: Add a new function that returns the xinerama monitor that a window is on. 2002-05-24 Havoc Pennington * src/window.c (menu_callback): follow windows to their new workspace * src/keybindings.c (handle_move_to_workspace): follow windows to their new workspace 2002-05-24 Havoc Pennington * src/metacity.schemas: add minimize window binding * src/keybindings.c (handle_minimize_window): add minimize keybinding 2002-05-24 Havoc Pennington * src/window.c (meta_window_show): change how focusing windows on initial map works, so that we only steal focus from our transient parent or from a panel/desktop, never from other normal windows. 2002-05-24 Havoc Pennington * src/window.c (meta_window_configure_request): modify to ignore PPosition and USPosition once the window has been placed 2002-05-24 Anders Carlsson * src/window.c: Redraw the window frame when the icon changes. Fixes #78543, reported by Kang Jeong-Hee. 2002-05-23 Havoc Pennington * src/display.c (event_callback): also filter out LeaveNotify with NotifyInferior 2002-05-23 Jayaraj Rajappan * src/display.c (event_callback): fix for bugzilla bug #72314, filter out LeaveNotify caused by grabs when in mouse focus mode. 2002-05-23 Havoc Pennington * src/metacity.schemas: clean up the font preference * src/prefs.c: font pref * src/frames.c: pay attention to the font pref 2002-05-23 Havoc Pennington Crack from Erwann * src/metacity.schemas: add autoraise crackrock * src/display.c (event_callback): autoraise window if autoraise is enabled * src/prefs.c: autoraise crack 2002-05-21 Havoc Pennington * src/window.c (constrain_position): fix positioning in fullscreen mode, patch from Gustavo GirÃ�¡ldez 2002-05-20 Alessio Frusciante * configure.in: Added Italian to ALL_LINGUAS. 2002-05-20 Pablo Saratxaga * configure.in: Added Catalan (ca) and Azeri (az) to ALL_LINGUAS 2002-05-17 Havoc Pennington * configure.in: 2.3.377 2002-05-16 Havoc Pennington * src/workspace.c (meta_workspace_get_neighbor): fix it, maybe 2002-05-16 Havoc Pennington * src/window.c (constrain_position): lock desktop to position 0,0 2002-05-16 Havoc Pennington * src/window.c (meta_window_show): don't focus dock, desktop, etc. windows on initial map, only windows that should have focus. 2002-05-15 Havoc Pennington * src/workspace.c (meta_workspace_get_neighbor): use the layout information to figure out up/down neighbors * src/display.c (event_callback): catch propertynotify on _NET_DESKTOP_LAYOUT * src/screen.c (meta_screen_update_workspace_layout): keep track of the layout of workspaces as set by the pager 2002-05-15 James M. Cape * src/themes/Esco/metacity-theme-1.xml: Minor tweak to minimize button. 2002-05-14 Havoc Pennington * src/themes/Makefile.am (THEMES): add Esco theme from James Cape 2002-05-12 Havoc Pennington * src/place.c (meta_window_place): move pposition/usposition honoring code into here, instead of putting it in window.c. Makes focusing new windows work, and cleans things up a bit. #81585 2002-05-12 Havoc Pennington * src/main.c (main): turn on --g-fatal-warnings if METACITY_G_FATAL_WARNINGS env variable is set. 2002-05-11 Anders Carlsson * src/display.c: (find_tab_forward), (find_tab_backward), (meta_display_get_tab_next): * src/display.h: * src/keybindings.c: (handle_tab_forward), (handle_focus_previous): Add screen argument to meta_display_get_tab_next, since we only want windows on the same screen to appear in the tab chain. * src/screen.c: (meta_screen_new): Or the event mask with existing events since gtk+ may listen to certain events and we don't want to disable those events. (meta_screen_ensure_tab_popup): * src/tabpopup.c: (meta_ui_tab_popup_new): * src/tabpopup.h: Add a screen number argument to meta_ui_tab_popup_new so we can position the popup on the correct screen. 2002-05-11 Havoc Pennington * src/main.c: include locale.h, fix from Hidetoshi Tajima * src/window.c (meta_window_new): disable show desktop mode when a new window is managed. 2002-05-11 Havoc Pennington * src/fixedtip.c (meta_fixed_tip_show): keep the tooltip on the screen horizontally, #76825 * src/window.c (meta_window_handle_mouse_grab_op_event): end grab op _after_ doing the final update of the move or resize. Hopefully I didn't have a reason for the order I was using before. 2002-05-10 Havoc Pennington * src/tools/metacity-window-demo.c: add override redirect test window * src/stack.c (raise_window_relative_to_managed_windows): new function, used to avoid moving windows above override redirect popup windows. * src/display.c (event_callback): don't lower panels on LeaveNotify if they have focus, #70895 2002-05-10 Havoc Pennington * src/window.c (constrain_position): when maximizing/fullscreening something with a grid, like a terminal, center it in the maximization area in case it can't fill the whole area. #70554 * src/main.c (main): use g_strerror() to get proper UTF-8. 2002-05-10 Havoc Pennington * src/keybindings.c (reload_modmap): put LockMask into the ignored_modifier_mask so that caps lock doesn't mess up keybindings. 2002-05-10 Havoc Pennington * src/window.c (meta_window_focus): if window is not mapped after the calc_showing, don't focus it, it's probably on another workspace or something. 2002-05-09 Havoc Pennington * src/frames.c (show_tip_now): DefaultScreen() returns the screen number not Screen* * src/frame.c (meta_frame_sync_to_window): immediately repaint frame whenever we resize it, if we're inside a grab operation. * src/frames.c (meta_frames_repaint_frame): new function * src/window.c (meta_window_new): initialize window's colormap (meta_window_notify_focus): install the colormap for a window when it gets focus, uninstall on unfocus. * src/window.h (struct _MetaWindow): store window's colormap * src/display.c (event_callback): note changes to window colormap * src/frame.c (EVENT_MASK): add ColormapChangeMask 2002-05-09 Havoc Pennington * src/display.c (event_callback): make Alt+button2 do a resize 2002-05-08 Anders Carlsson * src/fixedtip.c (meta_fixed_tip_show): #ifdef out call to gtk_window_set_screen, reported by Erwann Chenede. 2002-05-08 Anders Carlsson * configure.in: * src/display.c: (meta_display_open): * src/fixedtip.c: (meta_fixed_tip_show): * src/fixedtip.h: * src/frames.c: (meta_frames_new), (show_tip_now): * src/frames.h: * src/menu.c: (meta_window_menu_new): * src/ui.c: (meta_ui_new): Add multi-screen support. Also add patch by Erwann Chenede to make tooltips appear on the correct screen. 2002-05-07 Anders Carlsson * src/workspace.c (set_work_area_hint): Doh, only update the tmp pointer when the screen matches. Fixes a segfault when running with multiple screens. * src/display.c: (meta_display_open), (event_callback), (meta_display_update_show_desktop_hint): * src/display.h: * src/screen.c: (set_supported_hint): Fix atom name; it's _NET_SHOW_DESKTOP, not _NET_WM_SHOW_DESKTOP. * src/frames.c: (meta_frames_unmanage_window): Restore the mouse cursor to default when unmanaging a window. 2002-05-06 Anders Carlsson * src/display.c: (set_utf8_string_hint): Fix an off-by-one error. (meta_display_open), (event_callback), (meta_display_update_show_desktop_hint), (meta_display_show_desktop), (meta_display_unshow_desktop): * src/display.h: * src/screen.c: (set_supported_hint): Add support for _NET_WM_SHOW_DESKTOP, both as a message and as a root window property. 2002-05-05 Havoc Pennington * src/window.c (meta_window_unminimize): on unminimize, queue calc_showing on all transients (meta_window_activate): on activate, unminimize all a window's ancestors, not just the window itself. * src/workspace.c (set_work_area_hint): don't increment "tmp" by 16 unsigned long, increment by 4 * src/window.c (meta_window_free): if a window isn't minimized, restore its WM_STATE to NormalState instead of IconicState, since IconicState on initial window map means that the window should be minimized. * src/workspace.c (meta_workspace_invalidate_work_area): queue an idle to recompute the work area hint. (set_work_area_hint): we need 4*num_workspaces ints, not just num_workspaces. * src/screen.c (meta_screen_new): add work_area_idle field, handle it on screen shutdown * src/common.h (META_PRIORITY_PREFS_NOTIFY, META_PRIORITY_WORK_AREA_HINT): define some idle priorities * src/window.c (meta_window_calc_showing): hide windows if their parent window is minimized (meta_window_minimize): also queue_calc_showing on all transients of the window being minimized * src/place.c (constrain_placement): function to apply placement-time-only constraints, such as "not off the left of the screen" (meta_window_place): put dialogs down a bit over their parent, not right at the top. (meta_window_place): when centering a dialog, center it on the current xinerama screen, rather than the entire screen. * src/screen.c (meta_screen_get_current_xinerama): new function, but not implemented 2002-05-04 Havoc Pennington * src/frames.c (meta_frames_paint_to_drawable): chop out the portion of the region that's outside the screen. * src/core.c (meta_core_get_screen_size): new function (meta_core_get_frame_extents): new function 2002-05-04 Havoc Pennington * src/frames.c (meta_frames_init): disable automatic GTK double buffering, since it resulted in gigantic backing pixmaps the size of the whole screen. (meta_frames_paint_to_drawable): change to take a region argument; punch the client area out of the expose region, then iterate over rectangles in the region and draw each, manually doing begin_paint_rect. Results in 4 long thin backing pixmaps per frame repaint, instead of one large backing pixmap. Suggested by Owen. 2002-05-05 Bastien Nocera * src/workspace.c: (meta_workspace_get_neighbor): Wrap-around workspaces (ie. when on the last workspace, "switch_to_workspace_right" goes back to the first one) 2002-05-05 Anders Carlsson * src/metacity.schemas: Fix a spelling error and change switch_to_workspace_up and switch_to_workspace_down to use Ctrl+Alt since Nautilus uses Alt now. 2002-05-04 Havoc Pennington * src/window.c (update_net_wm_type): correctly print things if the type_atom is unset (meta_window_new): with workarounds disabled, always allow self-placement for windows with PPosition or USPosition set. 2002-05-03 Havoc Pennington * src/Makefile.am: fix for automake 1.5, patch from Tomasz Kloczko 2002-05-03 Laszlo Peter * configure.in: add the X libs to METACITY_MESSAGE_LIBS and METACITY_WINDOW_DEMO_LIBS 2002-05-02 Havoc Pennington * README: updates * configure.in: 2.3.233 2002-05-02 Bastien Nocera * src/metacity.schemas: change the default for switch_to_workspace_* to be arrow as just arrow collides with some apps (especially web browsers) 2002-05-01 Havoc Pennington * src/screen.c (meta_screen_new): Xlib doesn't like NULL for out arguments; fix for #80472 from lbedford 2002-04-30 Havoc Pennington * src/keybindings.c: finish mopping up mode_switch_mask field * src/display.h (struct _MetaDisplay): remove mode_switch_mask field 2002-04-30 Havoc Pennington * src/window.c (recalc_window_features): don't try to decorate toolbars. * src/tools/metacity-window-demo.c: add menu and toolbar tests * src/place.c (meta_window_place): only dialogs should be centered over parent, not anything with transient for set. * src/window.c (meta_window_configure_request): become more fascist about window positioning if workarounds are disabled, and less fascist if they are enabled. * src/metacity.schemas: add a "disable_workarounds" option. Kind of crack-smoking. But we just can't get all applications fixed. And I need no-workarounds mode to monitor which apps are broken and what needs fixing in specs. * src/window.c (meta_window_configure_request): always allow windows to resize themselves * src/keybindings.c (reload_modmap): don't filter out Mode_switch, apparently some people bind window manager shortcuts to that. 2002-04-30 Havoc Pennington * src/window.c (constrain_position): oops, fix maximization. Pointed out by Gustavo GirÃ�¡ldez Tue Apr 30 06:24:09 2002 Jonathan Blandford * src/menu.c: give Maximize/Unmaximize and Shade/Unshade the same mnemonic for consistency's sake. 2002-04-29 Havoc Pennington * src/window.c (TITLEBAR_LENGTH_ONSCREEN): require 36 pixels onscreen so you typically get a sliver of titlebar, suggested by tigert. Should still fix this to consider actual theme geometry. (constrain_position): change to allow movement off the left 2002-04-29 Havoc Pennington * src/display.c (event_callback): always raise windows on focus click, regardless of focus mode. 2002-04-29 Havoc Pennington * configure.in: 2.3.144 2002-04-29 Havoc Pennington * src/ui.c (meta_ui_init): don't leak the PangoContext 2002-04-28 Anders Carlsson * src/display.c: (meta_display_open): * src/display.h: * src/screen.c: (set_supported_hint): * src/workspace.c: (set_number_of_spaces_hint), (set_workarea_hint): Add support for setting the _NET_WM_WORKAREA hint. No code does it yet though. 2002-04-28 Havoc Pennington * README: remove caveats about keybindings * src/metacity.schemas: add schemas for all the keybindings. * src/window.c (meta_window_activate): if in "show desktop" mode when a window is activated, leave show desktop mode. So e.g. when you click on a task in the task list, show desktop mode will be turned off. * src/workspace.c (meta_workspace_get_neighbor): new function that doesn't quite work yet (needs support for getting workspace layout from the pager) * src/prefs.c: keybindings stuff * src/keybindings.c: make keybindings configurable * src/ui.c (meta_ui_parse_accelerator): new function 2002-04-25 Havoc Pennington * metacity.spec: fix to install gconf schemas 2002-04-25 jacob berkman * src/session.c (load_state): g_file_get_contents() takes a gsize not int (fixes bus error on 64-bit platforms) 2002-04-22 Havoc Pennington * src/main.c (main): call setlocale ourselves because due to a GLib bug that sticks us in ASCII if you call g_print or anything prior to setlocale, and print a warning if we don't set the locale successfully. #79280 * src/workspace.c (meta_workspace_get_work_area): be more verbose about how the work area was computed, to help find bugs here. * src/main.c (main): put locale and codeset in the log file 2002-04-21 Havoc Pennington * src/window.c (meta_window_send_icccm_message): add error trap, fixes a possible BadWindow if a window closed itself in response to the delete window message prior to us sending the ping message. 2002-04-21 Havoc Pennington * src/window.c (meta_window_move_resize_now): never revert to user_rect.width, user_rect.height. Maybe fixes assorted resize screwups e.g. with gnome-terminal. 2002-04-21 Anders Carlsson * src/iconcache.c (scaled_from_pixdata): Add padding if icon width and height differ. 2002-04-17 Havoc Pennington * src/screen.c (meta_screen_new): query Xinerama screen information if HAVE_XINERAMA * configure.in (found_xinerama): check for Xinerama 2002-04-17 Changwoo Ryu * configure.in (ALL_LINGUAS): Added ko (Korean). 2002-04-16 Akira TAGOH * configure.in (ALL_LINGUAS): add ja.po entry. 2002-04-15 Havoc Pennington * src/window.c (update_title): fix issue with GNU libc mangling %.10s format * metacity.spec: Fix up spec file * README: update README * configure.in (ALL_LINGUAS): require GTK 2.0.0 2002-04-15 Havoc Pennington * src/display.c (meta_display_ping_window): reply immediately for windows that don't support _NET_WM_PING * src/window.c (update_protocols): check whether windows support _NET_WM_PING 2002-04-13 Havoc Pennington * src/ui.c (get_cmap): same fix as libwnck, avoid using cmap with the wrong depth 2002-04-13 Havoc Pennington * src/delete.c: new file containing all the wacky mess I just added to a simple "click the close button", contains all the dealing-with-dead-application cruft. Use metacity-window-demo to test by clicking the toolbar button that locks it up. 2002-04-12 Havoc Pennington * src/tools/metacity-window-demo.c (do_appwindow): make one of the toolbar buttons lock up the demo * src/window.c (meta_window_delete): move error trap to be around a narrower part of the function, and add part of the ping stuff, nothing user-visible yet * src/metacity-dialog.c (main): metacity-dialog executable to live in libexecdir and pop up dialogs for us. 2002-04-09 Havoc Pennington * src/theme.c (multiply_alpha): fix alpha multiplication routine to perhaps work correctly, reported by tigert. Also, be sure we always copy the image if necessary before modifying the alpha channel. 2002-04-05 Havoc Pennington * src/stack.c: remove the unused tab stuff * src/display.c: implement tab list among panels * src/keybindings.c: fill in move-between-panels keybindings 2002-03-31 Johan Dahlin * src/menu.c (meta_window_menu_new): Make sure all menu items are translated. 2002-03-27 Havoc Pennington * src/window.c (meta_window_free): remove unmanaged windows from save set, and unselect input so we don't get events from them. Fixes annoying bug where withdrawn windows would decide to map themselves due to save set stuff. 2002-03-22 Zbigniew Chyla * configure.in (ALL_LINGUAS): Added pl (Polish). 2002-03-21 Havoc Pennington * src/themes/Bright/metacity-theme-1.xml: Added "Bright" theme from Gaute Lindkvist, with some small clipping tweaks to keep text/icons from overlapping their frames. 2002-03-19 Havoc Pennington * src/resizepopup.c (place_vertical_size_window) (place_horizontal_size_window): disable the little shaped windows with the window size, they caused a crash anytime you tried to resize with Xft. And they were kind of on crack anyway. 2002-03-17 Havoc Pennington * src/resizepopup.c (ensure_tick_windows): turn off the tick marks, that got annoying after about 5 minutes. One big shape window instead of lots of little windows might fix it. 2002-03-17 Havoc Pennington * src/resizepopup.c: Add some total crackrock resize-grid indication for windows that have width_inc/height_inc so I can debug gnome-terminal sizing. 2002-03-17 Havoc Pennington * src/session.c (set_clone_restart_commands): use proper property name for SmDiscardCommand (instead of setting the clone command to "rm"). Also fix typo that iterated over clonev not discardv to fill in prop list, and NULL-terminate discardv. #74584 from Kang Jeong-Hee. 2002-03-13 Havoc Pennington * src/main.c (main): put back --sm-client-id argument, needed for including us in a default session 2002-03-13 Havoc Pennington * src/session.c (meta_session_init): don't save a file here, only in response to SaveYourself. Change the code to properly use a unique state file for each SaveYourself. Totally, totally untested. 2002-03-12 Havoc Pennington * src/theme-viewer.c: improve the theme viewer so people can see the broken aspects of their themes. 2002-03-11 Havoc Pennington * src/keybindings.c: use new functions * src/display.c (meta_display_get_tab_next): (meta_display_get_tab_list): new tab order functions using MRU list instead of map order * src/window.c (meta_window_notify_focus): maintain focus MRU list * src/display.h (struct _MetaDisplay): Keep an MRU list of windows. 2002-03-10 Havoc Pennington * src/display.c (event_callback): support _NET_NUMBER_OF_DESKTOPS message so you can change number of desktops with the pager * src/prefs.c (meta_prefs_set_num_workspaces): new function * src/display.c (meta_spew_event): print stacking aspects of configure requests 2002-03-10 Havoc Pennington * src/screen.c (set_supported_hint): we didn't claim to support _NET_ACTIVE_WINDOW so gtk_window_present() didn't work. Mumble. Only worked with tasklist because libwnck didn't check for WM support. * src/window.c (meta_window_free): clean off window state when windows are withdrawn, to avoid sticking dialogs to their initial desktop. (meta_window_queue_calc_showing): return if window is withdrawn 2002-03-08 Laszlo Peter * configure.in: fix the X linker flags 2002-03-06 Havoc Pennington * src/core.c (meta_core_get_grab_frame): add some assertions * src/menu.c (meta_window_menu_new): make another warning into a verbose * src/display.c (meta_change_button_grab): use verbose rather than warning to log failures to grab button, since these are typically BadWindow from a destroyed window. 2002-03-06 Havoc Pennington * src/frames.c (meta_frames_manage_window): use hash_table_replace instead of g_hash_table_insert * src/main.c (main): only enable verbose/debug if you set METACITY_VERBOSE/METACITY_DEBUG * src/util.c (ensure_logfile): only use a log file if METACITY_USE_LOGFILE is set * src/display.c (meta_display_for_x_display): add warning if MetaDisplay isn't found * src/window.c (meta_window_free): add an assertion that we successfully cleared the grab window 2002-03-05 Havoc Pennington Work on opaque animations more, still suck too much to turn on. Not sure how to make them good. * src/effects.c (meta_effects_draw_box_animation): add a slide-up mode for shading * src/ui.c (meta_image_window_set): change image window to work by setting back pixmap on the GtkWindow, instead of using GtkImage. 2002-03-04 Havoc Pennington * src/main.c (main): try ignoring SIGXFSZ, though I'm not sure what that does exactly. I'm hoping it gives me EFBIG. * src/util.c (ensure_logfile): log to a file in /tmp instead of to ~/metacity.log. 2002-03-04 Havoc Pennington * configure.in: fix configure.in since GTK no longer gives us -L/usr/X11R6/lib 2002-03-03 Havoc Pennington * src/window.c: improve debug spew about initial workspace 2002-03-02 Havoc Pennington * src/window.c (recalc_window_features): disable resize etc. if we're fullscreen (constrain_size): fix size constraints when fullscreen * src/display.c (meta_display_open): fix missing comma that ended up concatenating two of the properties breaking FULLSCREEN state and PING protocol 2002-03-02 Havoc Pennington * src/display.c: Add hacking to fix the problem that we made our XGrabPointer() during Alt+Tab actually succeed, so on popping down Alt+Tab we got an EnterNotify from the ungrab, which resulted in focusing the window under the mouse. i.e. Alt+Tab didn't work with sloppy focus. 2002-02-26 Havoc Pennington Screw around with Anders's ping patch so he'll get plenty of CVS conflicts. ;-) * src/display.c (meta_display_ping_window): spew warnings if we try to call this with CurrentTime (meta_display_ping_timeout): remove ping from the pending pings after it times out. * src/util.h: added PING debug category * src/display.c (remove_pending_pings_for_window): don't remove "tmp" just before "tmp->next", don't break out of loop after finding the first match (meta_display_open): no trailing comma in array init (event_callback): move the processing of ping replies into a separate function * src/screen.c (set_supported_hint): add _NET_WM_PING to supported list * src/display.h: change gpointer to void* 2002-02-26 Anders Carlsson * src/display.c: (ping_data_free), (remove_pending_pings_for_window), (meta_display_open), (event_callback), (meta_display_unregister_x_window), (meta_display_ping_timeout), (meta_display_ping_window), (meta_display_window_has_pending_pings): Implement meta_display_ping_window, and filter out scroll wheel events. * src/display.h: Add MetaWindowPingFunc, meta_display_ping_window and meta_display_window_has_pending_pings. 2002-02-24 Havoc Pennington * src/display.c (xcursor_for_op): switch on the op passed in, not the active op. Gives us the right cursor during resizing, etc. * src/errors.c: rearrange all the error stuff to adapt to the GDK change a while back, so now we print our X errors again * src/display.c (meta_display_begin_grab_op): remove KeyPressMask and KeyReleaseMask from the XGrabPointer(), this caused BadValue and kept the grab from ever succeeding. Fixes the problem with the GTK resize grip - this is why you shouldn't break your X error spew. ;-) * src/display.c: debug spew tweaks * src/window.c (meta_window_client_message): do some s/verbose/topic/ stuff 2002-02-23 Havoc Pennington * src/ui.c (meta_ui_init): fix the be-sure-we-create-coverage-cache hack 2002-02-19 Havoc Pennington * src/ui.c (meta_ui_init): put in hack to keep Pango from mangling our server grab and locking up on startup. (hack doesn't work but I want to fix it on my real computer not this laptop) * src/window.c: Implement _NET_WM_STATE_FULLSCREEN * src/display.c (meta_display_open): add atoms for _NET_WM_STATE_FULLSCREEN 2002-02-16 Kjartan Maraas * src/main.c: Use bind_textdomain_codeset etc. 2002-02-14 Havoc Pennington * src/theme-viewer.c: use the preview widget here * src/preview-widget.h, src/preview-widget.c: make the theme preview into a nice widget * src/frames.c (meta_frames_ensure_layout): replace frame layout if the frame style changes, this only ends up mattering if you e.g. changed the font size for windows in a different state such as maximized, which is crack, but the code may as well be correct * src/theme.c (meta_theme_get_frame_style): new function so we can detect an invalid cache of the PangoLayout in a frame 2002-02-14 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Fix some bugs with prelighting. 2002-02-13 Anders Carlsson * src/theme.c (meta_pango_font_desc_get_text_height): Use pango_context_get_metrics instead of loading the font. 2002-02-12 Anders Carlsson * src/frames.c (meta_frames_manage_window): Set prelit_control to META_FRAME_CONTROL_NONE. (meta_frames_update_prelit_control): New function for setting the prelit control. (meta_frames_paint_to_drawable): Set prelight state. (meta_frames_enter_notify_event): Update prelit control. (meta_frames_leave_notify_event): Likewise. (meta_frames_motion_notify_event): Likewise. * src/frames.h (struct _MetaUIFrame): add prelit_control. * src/window.c (update_mwm_hints): and MWM_FUNC_ALL with hints->functions instead of hints->flags. 2002-02-11 Anders Carlsson * src/theme.c (meta_frame_layout_new): Set title_scale to 1.0 2002-02-11 Bastien Nocera * src/theme-viewer.c: (main): change default theme to be Atlanta like in the .schema file 2002-02-10 Havoc Pennington * src/tools/Makefile.am (EXTRA_DIST): add $(icon_DATA) * configure.in: 2.3.55 * HACKING: update * README: update 2002-02-09 Havoc Pennington * src/theme.c (meta_theme_set_current): add a newline to an error message * src/themes/Gorilla: add Gorilla theme by Jakub Steiner ported to metacity by Kenneth Christiansen 2002-02-09 Havoc Pennington * src/theme.c (meta_draw_op_draw_with_env): implement wacky "tile" draw op to lose some of the PNG files in Gorilla theme * src/theme-parser.c: parse the tile primitive 2002-02-09 Havoc Pennington * src/window.c (update_icon): port to icon cache * src/iconcache.c, src/iconcache.c: begin process of cleaning up window.c by moving the icon-reading code in here, based on the code in libwnck, which was in turn based on the earlier metacity code 2002-02-09 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): hmm, and don't set last_window at all if we don't ++newp. Fixes even more obscure stacking bug. 2002-02-09 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): assign last_window prior to ++newp, so we don't try to stack windows with respect to themselves. Fixes some obscure stacking bugs. 2002-02-09 Havoc Pennington * src/theme-parser.c: try to make more error message strings the same, easier for translators * src/theme.c (meta_draw_op_free): free color spec for line op (meta_theme_free): free the integer_constants hash * src/theme-parser.c (parse_boolean): move above first use * src/theme-viewer.c: fixes for theme.h changes * src/frames.c (queue_recalc_func): don't recreate layout immediately, just save title text. should speed things up. (meta_frames_set_title): just remove the layout here also, and save title text. * src/theme-parser.c (parse_toplevel_element): parse title_scale attribute on frame_geometry * src/theme.c: support setting the text size * src/frames.c: support setting the text size * theme-format.txt: updates 2002-02-09 Havoc Pennington * src/themes/Atlanta/metacity-theme-1.xml: put in some kind of distinctive frame for UTILITY, though it's ugly. Also put in the borderless look for maximized windows. * src/stack.c (compute_layer): put splash screen in the splash layer * src/stack.h (enum): create a splash screen layer * src/place.c (meta_window_place): center splashscreen, and fix a typo in the centering code * src/window.c (recalc_window_features): disable most features on splash screens * src/screen.c (set_supported_hint): add UTILITY and SPLASHSCREEN hints * src/window.c: add UTILITY, SPLASHSCREEN implementation * src/window.h (enum): add UTILITY, SPLASHSCREEN types * src/theme-parser.c (parse_toplevel_element): parser support for has_title attribute * src/theme.c (meta_frame_layout_get_borders): handle a has_title field in the layout, for utility windows that don't display a title (would be better to be able to shrink the title text, but that's kind of tricky to implement :-/) 2002-02-08 Havoc Pennington * src/screen.c (set_supported_hint): add _NET_WM_STATE_HIDDEN to _NET_SUPPORTED * src/keybindings.c (meta_set_keybindings_disabled): put in header file, to fix warning. * src/display.c (meta_display_open): add _NET_WM_STATE_HIDDEN atom * src/window.c (set_net_wm_state): set _NET_WM_STATE_HIDDEN for shaded and minimized windows (meta_window_show): call set_net_wm_state() if we map the window or frame (meta_window_hide): call set_net_wm_state() if we unmap the window or frame 2002-02-08 Havoc Pennington * src/window.c (set_net_wm_state): only set skip pager/tasklist if the app set it, don't set it again based on semantic type. 2002-02-08 Anders Carlsson * src/theme.c (scale_and_alpha_pixbuf): If we're only scaling horizontally or vertically, use GDK_INTERP_NEAREST. 2002-02-08 Havoc Pennington * autogen.sh: unbreak 2002-02-08 Havoc Pennington * src/display.c (meta_display_grab_focus_window_button): grab buttons 2 and 3 also, so you can focus a window with those, #70840 (event_callback): fix this to let you focus a window with any unmodified click, and also with Alt+button1 * configure.in (AC_OUTPUT): add po/Makefile.in * autogen.sh: port to glib-gettextize, remove stupid auto-find-subdirs crap * Makefile.am (SUBDIRS): add po to subdirs, #70615 * src/window.c (meta_window_activate): unshaded window if shaded, I thought this was in bugzilla but I don't see it. anyway thanks whoever mentioned it to me. 2002-02-08 Havoc Pennington * src/tools/metacity-window-demo.c (menu_items): add modal dialog test 2002-02-08 Havoc Pennington * src/window.c (meta_window_show): when mapping a window with struts, invalidate the work areas it's on. Should fix at least part of the problem with windows maximizing over panels. * src/workspace.c (meta_workspace_invalidate_work_area): also queue move/resize on sticky windows * src/tools/Makefile.am: consolidate reload-theme, restart into a "metacity-message" app and add enable/disable keybindings to the messages it knows about. * src/keybindings.c: (meta_change_keygrab): grab keyboard synchronously (meta_display_process_key_event): if all keybindings are toggled off, ReplayKeyboard, else AsyncKeyboard, except that the debug binding for toggling back on is always processed (meta_set_keybindings_disabled): function to disable/enable all keybindings 2002-02-07 Havoc Pennington * src/run-metacity.sh: if DEMO_TEST is set then run the window demo * src/tools/metacity-window-demo.c: Create an app with all the semantic window types, for testing and for designing themes. 2002-02-07 Havoc Pennington Throughout: move to meta_topic rather than meta_verbose so metacity.log can start being more useful * src/util.h (enum): add more debug topics * src/frames.c: clean up some cruft that caused warnings 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): do random voodoo on the algorithm 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): use the intensity of the gray pixel for both saturation and value, not just value. 2002-02-07 Havoc Pennington * src/theme.c (INTENSITY): don't define the macro twice 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): get algorithm right (use HSV/RGB conversion) at cost of making it a lot slower. It doesn't matter anyhow with the cache, though. 2002-02-06 Havoc Pennington * src/theme.c (colorize_pixbuf): handle out-of-memory creating target pixbuf * src/themes/Crux/*.png: convert the green-channel images to grayscale 2002-02-06 Havoc Pennington * src/prefs.c (change_notify): s/update_focus_mode/update_theme/ in case of theme key changing 2002-02-06 Havoc Pennington * src/theme-viewer.c: benchmark theme on startup * src/theme-parser.c (parse_draw_op_element): fix "colorize != NULL" to "colorize_spec != NULL" and free pixbuf on color spec failure * src/theme.c (colorize_pixbuf): minor reformatting, raise function calls out of inner loop, clamp r/g/b values to uchar range before assigning to uchar (draw_op_as_pixbuf): cache the colorized pixbuf (meta_draw_op_free): free the cache pixbuf 2002-02-07 Anders Carlsson * src/theme-parser.c: (parse_draw_op_element): Add support for "colorize" image attribute. * src/theme.c: (colorize_pixbuf): New function that colorizes a pixbuf. (pos_tokenize): Allow "\n" as a whitespace character. (meta_draw_op_free): Free colorize_spec; (draw_op_as_pixbuf): Colorize image if needed. * src/theme.h: Add colorize_spec to struct. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Add maximized and shaded_and_maximized frame styles. 2002-02-06 Havoc Pennington * src/main.c (prefs_changed_callback): redo window sizes/appearance when the theme changes * src/display.c (meta_display_retheme_all): new function * src/theme-parser.c (locate_attributes): remove error handling for MAX_ATTRS reached, add an assert instead, the way this code ended up the attrs in the array depend on the code not the theme file. 2002-02-06 Havoc Pennington * src/main.c (main): disable custom log handler and fatal mask for now * src/theme.c (meta_draw_op_list_draw): Add META_DRAW_CLIP * src/main.c: load theme, monitor current theme setting * src/prefs.c: add "current theme" setting * src/stack.c (meta_stack_free): don't try to free last_root_children_stacked if it doesn't exist * src/themewidget.c: pluggable GtkMisc subclass to use for menu icons * src/screen.c (meta_screen_manage_all_windows): fix signed/unsigned warning * src/frames.c: port to theme system (meta_frames_style_set): chain up * theme-format.txt: new file * configure.in: add more compiler warnings * src/theme.c: add various stuff needed to get theme parser working. Remove the "spacer" concept from FrameLayout object. Add draw op that references a draw op list. * configure.in: require GTK 1.3.13 * src/Makefile.am: add theme-parser.[hc], implement loading a theme * src/theme.c: add "draw title" and "draw window icon" operations (meta_draw_op_draw): put object_width/object_height in expression environment before computing x/y. Handle out-of-memory when creating pixbufs. Assorted other cleanups. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Simplify things so we can remove some now unnecessary .png files. * src/themes/Crux/*.png: Remove some files. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml * src/themes/Crux/*.png: Add Crux theme 2002-02-07 Kenneth Rohde Christiansen * configure.in: add da to ALL_LINGUAS * po/da.po: add Danish translation 2002-02-02 Havoc Pennington * src/theme-viewer.c: test % operator * src/theme.c (pos_tokenize): add % to switch for operators * src/theme.c: rework theme stuff so we have MetaDrawOp/MetaDrawOpList instead of MetaTextureSpec/MetaShapeSpec 2002-01-28 Havoc Pennington * src/theme.c (meta_texture_spec_render): fix shadowed variable (stupid -Wall should have that) * src/theme-viewer.c (main): implement a simple viewer for frame styles * src/theme.c (meta_frame_style_get_test): create partial frame style to test drawing 2002-01-27 Havoc Pennington * src/theme.c (meta_shape_spec_draw): implement (meta_texture_spec_draw): implement shape spec and blank texture support (meta_frame_style_draw): implement 2002-01-27 Havoc Pennington * src/display.c (meta_set_syncing): move in here so util.c doesn't require display.[hc] * src/theme.h, src/theme.c: implement coordinate expression parser, write MetaShapeSpec declaration * src/util.c (meta_exit): move in here so we can link to util.c with a different main() * src/theme.h: rename the MetaWindow* enums to MetaFrame* 2002-01-27 Peteris Krisjanis * configure.in - Added lv to ALL_LINGUAS 2002-01-27 Havoc Pennington * src/frames.c (get_control): Only consider the bottom of the titlebar a resize control; I keep accidentally resizing windows instead of activating them. Also, give south resizing priority over north, if the window is so small the active regions overlap * src/theme.c: add MetaTheme, get MetaFrameStyleSet into a usable state * src/common.h: move window type back to window.h, decided not to use it on frame side (MetaFrameType): add this instead 2002-01-27 Havoc Pennington * src/theme.h, src/theme.c: implement all kinds of crazy compositing-one-texture-onto-another BS. 2002-01-27 Havoc Pennington * src/display.c (event_callback): make the check for whether to eat focus click a lot more complicated * src/window.c (meta_window_same_application): new function * src/prefs.h, src/prefs.c: add application based pref * src/metacity.schemas: add "application_based" setting to give me a mode to fool with being application based, without being unusable in the meantime. Yeah the crack flows freely these days. Everyone knew it would happen. 2002-01-27 Havoc Pennington * src/frames.c: separate code to draw frame from the expose_event handler, so in principle we can draw the frame to a pixmap, but this isn't used yet. 2002-01-22 Hasbullah Bin Pit * configure.in: Added Malay (ms)to ALL_LINGUAS. * po/ms.po: Added Malay Translation. 2002-01-19 Havoc Pennington * src/wm-tester/test-resizing.c: cheesy client with static bit gravity, used to test the below change. * src/window.c (meta_window_move_resize_internal): implement Owen's proposal for window resizing. http://mail.gnome.org/archives/wm-spec-list/1999-November/msg00088.html Currently you have to do METACITY_USE_STATIC_GRAVITY=1 in order to use it, because some GDK bug is screwing up exposes on my frames when it's enabled. * src/display.c (meta_display_create_x_cursor): fix glyph for NE/NW cursors * src/frames.c (get_control): add ability to resize from top * src/frame.c (meta_frame_get_flags): can't resize shaded windows (meta_frame_sync_to_window): add gravity arg * src/common.h (MetaWindowType): move here from window.h so it can be used in themes stuff. (MetaFrameFlags): remove META_FRAME_TRANSIENT since it overlaps with window type and was unused. 2002-01-18 Havoc Pennington * src/window.c (constrain_position): give priority to keeping NW corner onscreen rather than SE, if we need to shift the window to fit inside constraints * src/frames.c (meta_frames_get_geometry): don't depend on the current window size * src/theme.c: move geometry stuff in here, to be calculated as part of the theme * src/core.c (meta_core_get_client_size): new function to replace meta_core_get_frame_size() so we don't have weird cycles in the geometry calculation 2002-01-12 Havoc Pennington * src/window.c (meta_window_queue_move_resize): make this actually queue, rather than being synchronous as it was before. We'll see what breaks. Should be more efficient and reduce flickery stuff a bit in some cases. 2002-01-15 Havoc Pennington * src/keybindings.c (handle_tab_backward): fix crash when grab failed due to another operation in progress (handle_tab_forward): fix crash when grab failed 2002-01-10 Havoc Pennington * src/frame.c (meta_window_destroy_frame): only bump unmaps_pending if the window was mapped (meta_window_ensure_frame): ditto * src/keybindings.c: change arrow key bindings to use Ctrl+Alt not just Alt, and add debug mode key bindings * src/stack.c (meta_stack_get_default_focus_window): don't choose a default focus window with unmaps pending, since we probably just unmapped it. * src/display.c (event_callback): move notify_focus on UnmapNotify after the window_free check, so we can move focus to another window when we unmanage * src/window.c (meta_window_hide): invalidate work areas when hiding a window with struts (meta_window_free): invalidate work areas when unmanaging a window with struts 2002-01-09 Havoc Pennington * src/window.c, src/window.h: store strut information, update it on property changes, etc. etc. so we avoid panel on maximize. * src/workspace.c (meta_workspace_get_work_area): add accessor for work area so we can compute it lazily * src/display.h, src/display.c: add _NET_WM_STRUT atom and _WIN_HINTS atom 2002-01-08 Havoc Pennington * configure.in (ACLOCAL): add code to save ACLOCAL_FLAGS * src/frames.c (meta_frames_expose_event): max dither * src/testgradient.c (render_simple): change dither mode to MAX to avoid banding * src/theme.c: lose the gradient cache, and put in some initial data types for the theme format 2002-01-07 Havoc Pennington * src/frames.c (meta_frames_expose_event): make gradient a bit more subtle (don't go to the full background, but to a blend of selection and background; put lighter color on top) 2002-01-06 Havoc Pennington * src/window.c (meta_window_notify_focus): rearrange code a bit to make it clear that has_focus flag always follows display->focus_window 2002-01-06 Havoc Pennington * src/window.c (meta_window_notify_focus): put in attempted fix for the GTK 1.2 plug/socket screwup, now that my fixed debug spew reveals what's actually happening. ;-) * src/gradient.c (meta_gradient_description_new): object to store gradient descriptions * src/window.c (meta_window_notify_focus): fix the debug spew that was confusing me * src/wm-tester/focus-window.c: add little program to focus a window ID 2002-01-06 Havoc Pennington * src/theme.c (meta_theme_get_gradient): change to use spiffy gradient code. * src/gradient.c: copy lovely gradient code from WindowMaker, as usual Dan and Alfredo have very nice code 2002-01-06 Fatih Demir * configure.in: Added "tr" to the languages list. 2002-01-05 Havoc Pennington * src/frames.c (meta_frames_expose_event): draw titlebar highlight with snazzy gradient that needs some tweaking to be less dumb-looking * src/theme.c: replace old theme.[hc] contents with newer stuff that doesn't do anything 2002-01-05 Havoc Pennington GTK 1.2 plug/socket clients still broken, don't know why. * src/screen.c (meta_screen_new): select focus change on root window, for debugging * src/display.c (event_callback): when unfocusing, use no_focus_window to hold the focus * src/display.h (struct _MetaDisplay): have a no_focus_window to hold the focus when we don't want to have anything focused. Then we can avoid confusing focusing-the-frame stuff. * src/window.c (meta_window_notify_focus): improve some debug spew (meta_window_notify_focus): add hack from WindowMaker to ignore focus in events with detail > NotifyNonlinearVirtual 2002-01-04 Havoc Pennington * src/display.c (event_callback): don't lower docks when a grab causes them to get LeaveNotify 2002-01-04 Havoc Pennington * src/screen.c (meta_screen_free): set event mask on root window to 0 so other window managers (such as ourselves restarting) can start up; addresses race condition on restart where the old WM still had RedirectMask when the new WM was trying to start up. * src/display.c (meta_display_close): free each screen * src/window.c (meta_window_show): always focus new windows in click-to-focus mode 2002-01-03 Havoc Pennington * src/window.c: use meta_XFree not XFree * src/display.h (meta_XFree): add null-safe XFree * src/util.c (meta_warning): have message prefix indicate that it's a warning (meta_fatal): indicate it's an error * src/window.c (update_sm_hints): clean up using meta_prop_get_latin1_string (update_role): ditto (read_client_leader): clean up using meta_prop_get_window (update_net_wm_type): clean up using meta_prop_get_cardinal (update_initial_workspace): ditto (update_net_wm_type): clean up using meta_prop_get_atom_list (read_rgb_icon): get result from XGetWindowProperty return value not from error trap (update_kwm_icon): ditto (meta_window_new): fix to read WM_STATE correctly 2002-01-03 Havoc Pennington * src/window.c (update_net_wm_state): clean up using meta_prop_get_atom_list (update_mwm_hints): clean up using meta_prop_get_motif_hints * src/Makefile.am (metacity_SOURCES): add xprops.[hc] * src/xprops.c: new file with convenience functions for X properties 2002-01-03 Havoc Pennington * src/workspace.c (meta_workspace_activate): focus top window when switching to a new workspace * src/util.c (meta_topic): start putting verbose output in categories * src/window.c (meta_window_shade): focus frame after we queue the calc_showing so the maps/unmaps have already happened. * src/display.c (meta_display_get_current_time): add the "get time of current event" function and call it occasionally. * src/window.c (meta_window_free): if we have focus, call meta_screen_focus_top_window(). (meta_window_minimize): ditto (meta_window_delete): ditto * src/screen.c (meta_screen_ensure_tab_popup): fix memory leak - didn't free tab list (meta_screen_focus_top_window): new function to use when we unmap or unmanage a focused window * src/stack.c (meta_stack_get_default_focus_window): function used in meta_screen_focus_top_window 2001-12-21 Havoc Pennington * src/frame.c (meta_window_ensure_frame): add a server grab here since we were failing to have one when calling the function 2001-12-27 Duarte Loreto * configure.in: Added portuguese to ALL_LINGUAS 2001-12-16 Kjartan Maraas * configure.in: Added "no" to ALL_LINGUAS. 2001-12-11 Stanislav Visnovsky * configure.in: Added "sk" to ALL_LINGUAS. 2001-12-10 Havoc Pennington Rework the click-client-area-to-focus support to use synchronous grabs, avoids a big mess, lets us pass through click when required (for dock/desktop). Disadvantage is all left-button clicks now require window manager approval. ;-) * src/display.c (event_callback): don't focus dock/desktop when the mouse enters them; require a click. (meta_change_button_grab): allow sync grabs (meta_display_grab_unfocused_window_buttons): establish a synchronous grab and maintain it all the time, rename to meta_display_grab_focus_window_button * src/window.c: change to reflect display.c 2001-12-10 Havoc Pennington * src/window.c (meta_window_update_unfocused_button_grabs): oops, unbreak this _again_ - reported by Josh Barrow 2001-12-10 Havoc Pennington * src/window.c (meta_window_update_unfocused_button_grabs): don't allow grab on docks/desktop for now; needs fixing later to do the grab, but pass thru click, so we can focus those windows. And in fact we need to do that even in sloppy mode. 2001-12-10 Havoc Pennington * src/screen.c (meta_screen_foreach_window): fix broken "tmp = tmp->data" Implement do-not-pass-thru-click for click-to-focus mode. * src/screen.c (update_focus_mode): when focus mode changes, update all the window grabs * src/display.c (meta_display_grab_unfocused_window_buttons): implement grabbing button 1 on client area of unfocused click-to-focus windows * src/window.c (meta_window_update_unfocused_button_grabs): update whether we're grabbing unmodified button 1 on client area according to focus state and focus mode (meta_window_new): start out with proper grab state 2001-12-10 Havoc Pennington * src/menu.c (meta_window_menu_new): don't do mnemonics for workspaces above 9 2001-12-10 Havoc Pennington * src/screen.c (meta_screen_new): oops, remove extra workspace creation, and update to current pref. 2001-12-09 Havoc Pennington * src/workspace.c (meta_workspace_free): update number of workspaces hint * src/screen.c (update_num_workspaces): implement number of workspaces setting * src/window.c (meta_window_configure_request): honor configure requests on windows of type NORMAL, but still be mean to those of type DIALOG * src/main.c (main): add more log domains to those we set a log handler for, and only set warnings fatal in debug mode * src/metacity.schemas: add number of workspaces setting 2001-12-09 Havoc Pennington * src/display.c (event_callback): in click-to-focus mode don't focus on enter notify. Implement unfocusing on LeaveNotify in mouse focus mode. Click to focus just ends up working if we do nothing on enter/leave, because of the way things already worked. Except I need to add some relatively complex hack to allow clicking on client area, right now you have to click on the frame. 2001-12-09 Havoc Pennington * src/main.c (main): move SM init a bit later in the process, and init prefs * src/session.c: fix no SM case (though I hardly know why I'm bothering) * src/main.c (main): call bindtextdomain * src/util.h (_): actually call gettext * configure.in: put in AM_GLIB_GNU_GETTEXT and gconf stuff * src/prefs.c: Preferences - this marks the beginning of our doom. None of them are actually implemented yet, but we monitor some stuff from gconf. 2001-12-07 Havoc Pennington * src/window.c (meta_window_unminimize): when unminimizing an app, if we're in "show desktop" (all windows minimized) mode, leave show desktop mode. Will occasionally be a bit weird, but allows people to recover via task list if they accidentally do the show desktop thing, and don't know what's going on. 2001-12-06 Havoc Pennington * src/ui.c (meta_text_property_to_utf8): fix gdkatom/xatom screwup - gee, I should read my warnings 2001-12-03 Laszlo Peter * src/frames.c: add a dummy element to the enum so the signals array is not empty. (breaks the build with Forte C) * src/window.c: s/__FUNCTION__/G_GNUC_FUNCTION/ 2001-11-27 Havoc Pennington * src/window.c (constrain_position): change so that window can be offscreen to the bottom or the right, as long as a small top-left corner of the window remains onscreen. However, windows still can't go off the left or top. 2001-11-26 Havoc Pennington * src/window.c (window_query_root_pointer): add error trap 2001-11-27 Jesus Bravo Alvarez * configure.in: Added gl (Galician) to ALL_LINGUAS. Tue Nov 20 18:49:16 2001 Owen Taylor * configure.in (found_sm): Add some additional quoting to make it work with autoconf-2.5x. 2001-11-02 Laszlo Peter * src/window.c (update_sm_hints): protect meta_verbose from a NULL pointer. 2001-10-29 Havoc Pennington * configure.in: bump version 2001-10-29 Havoc Pennington * src/window.c (idle_calc_showing): handle queue/unqueue of calc showings as we are iterating over the pending list (meta_window_show): focus placed transients in here instead of in meta_window_place - now it should actually work, yay * src/place.c (meta_window_place): remove focusing of transient child from here; this was really broken 2001-10-29 Yuriy Syrota * configure.in: Added "uk" to ALL_LINGUAS. 2001-10-29 Havoc Pennington * README: note exciting new unminimize feature for the tab popup * src/keybindings.c (process_tab_grab): use meta_window_activate() when choosing a window with tab popup, this should deiconify it * src/window.c (meta_window_client_message): use meta_window_activate for _NET_ACTIVE_WINDOW message (meta_window_activate): new function to raise/focus/unminimize (meta_window_flush_calc_showing): new function (meta_window_focus): force a calc showing on focus, so that we can focus the window if appropriate (it must be mapped) 2001-10-26 Havoc Pennington * src/display.c (meta_display_grab_window_buttons): fix for ignoring NumLock on Alt-windowclick (previous NumLock fix was only for key grabs not button grabs) 2001-10-25 Havoc Pennington * src/window.c (meta_window_new): set the current workspace hint 2001-10-25 Havoc Pennington * src/window.c (meta_window_visible_on_workspace): I was using meta_workspace_contains_window() in a number of places where on_all_workspaces should also have been considered, thus this new function. Fixes bugs such as pinned windows not appearing in the tab order. (meta_window_client_message): use meta_window_visible_on_workspace * src/stack.c (find_tab_forward): ditto (find_tab_backward): ditto (meta_stack_get_tab_next): ditto (meta_stack_get_tab_list): ditto * src/place.c (get_windows_on_same_workspace): ditto * src/keybindings.c (handle_focus_previous): ditto (handle_focus_previous): ditto 2001-10-24 Havoc Pennington * src/frames.c (meta_frames_expose_event): use bg/fg not base/text for the window title area. 2001-10-24 Havoc Pennington * src/window.c (meta_window_new): support initial on-all-workspaces setting 2001-10-22 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): fix to keep desktop window from appearing on top of everything else, among other stack bugs. Untested. 2001-10-15 Havoc Pennington * src/window.c (meta_window_new): use queried attributes to check whether window should be initially maximized, rather than window rect 2001-10-15 Havoc Pennington * src/main.c (meta_restart): add a restart feature, for debugging * src/tools/metacity-restart.c: little utility program to trigger the restart 2001-10-14 Havoc Pennington * src/frames.c (meta_frames_button_press_event): raise/focus windows on left-click, seem to have broken that yesterday * src/keybindings.c, src/display.c, src/window.c: add keybinding to show/hide all normal windows (so you can see the desktop). Currently Ctrl+Alt+D, which I don't like, but yay. 2001-10-14 Havoc Pennington * src/window.c (meta_window_new): take a window mapped at fullscreen size/pos to desire maximization; once I add a fullscreen state, will change to copy kwin and take this mapping as a desire for fullscreen, but for now testing with maximization. * src/window.h: remove fullscreen window type, now proposing it as a window state instead. 2001-10-14 Havoc Pennington * src/window.c (meta_window_maximize): always raise windows on maximize (meta_window_client_message): when activating a window, move it to current workspace, instead of moving user to the window's workspace. 2001-10-14 HÃ�©ctor GarcÃ�­a Ã�lvarez * configure.in: Added "es" to ALL_LINGUAS for Spanish translation. 2001-10-14 Havoc Pennington * src/display.c (event_callback): only handle events here if the modmask from our button grab is active. i.e. only the Alt-click is handled here. * src/frames.c: add check for whether button presses are in the frame client area before handling them, so we don't weirdly let you move a frame by clicking in its client area if the client hasn't selected button press events. 2001-10-13 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): set last window before setting newp, so we don't get the current window as the last window and screw everything up (IN_TAB_CHAIN): use type not layer to decide if a window is in the tab chain, keeps panel out of alt-tab choices 2001-10-13 Havoc Pennington * configure.in: add bad hack to work with GTK 1.3.9.90 RPMs from gnomehide for now * src/ui.c: another piece of bad hack in here 2001-10-13 Havoc Pennington * configure.in: bump version 2001-10-13 Havoc Pennington * src/session.c (meta_session_init): hmm, fix build 2001-10-12 Havoc Pennington * src/session.c (meta_session_init): set the session manager priority so we start up before other apps. 2001-10-12 Mikael Hallendal * src/ui.c (meta_ui_get_default_window_icon): use gdk_pixbuf_new_from_inline (meta_ui_get_default_mini_icon): use gdk_pixbuf_new_from_inline 2001-10-11 Christian Rose * configure.in: Added "sv" to ALL_LINGUAS. 2001-10-10 Havoc Pennington * src/stack.c (meta_stack_free): fix mem leak of the MetaStack object (meta_stack_sync_to_server): try to avoid the restack-flicker thing 2001-10-07 Havoc Pennington * src/display.c (meta_display_update_active_window_hint): set _NET_ACTIVE_WINDOW hint * src/window.c (meta_window_client_message): support _NET_ACTIVE_WINDOW client message 2001-10-07 Havoc Pennington * src/window.c (meta_window_client_message): don't allow shade/maximize/minimize for windows that don't support those operations. (minimizing the panel = bad) 2001-10-04 Havoc Pennington * src/keybindings.c (meta_change_keygrab): add code to grab all modifier combinations, so keybindings work with NumLock etc. * src/menu.c (meta_window_menu_new): remove newlines from menu items 2001-09-27 Havoc Pennington * src/session.c (save_state): when encoding text for session file, escape XML entities 2001-09-21 Alex Graveley * src/Makefile.am (metacity_SOURCES): Add inlinepixbufs.h so that it gets generated. * src/frames.c (meta_frames_style_set): Update for new opaque PangoFontMetrics. 2001-09-17 Havoc Pennington * src/ui.c (meta_ui_init): add hackaround for the warning about gtk-menu-bar-accel 2001-09-17 Havoc Pennington * src/ui.c (meta_ui_get_default_mini_icon): (meta_ui_get_default_window_icon): ref the returned icon, oops. * src/main.c (main): get the GLib warning/error output into the metacity logfile, set warnings to be always fatal * configure.in: bump version to 2.3.13 * src/window.c (get_text_property): hrm, fix bug where we didn't check errors on XGetTextProperty 2001-09-17 Havoc Pennington * src/Makefile.am (VARIABLES): fix srcdir != builddir glitch 2001-09-17 Havoc Pennington * src/ui.c: use the inline image data for default icon * src/common.h (META_MINI_ICON_HEIGHT): move icon size defines here * src/Makefile.am: Create an inlinepixbufs.h header with inline images 2001-09-16 Havoc Pennington * src/session.c (process_ice_messages): disconnect this callback on error 2001-09-16 Havoc Pennington * src/window.c (meta_window_lower): new function * configure.in: bump version to 2.3.8 * src/display.c (event_callback): raise dock on enter notify, lower it on leave notify (need to refine this behavior) * src/stack.c (compute_layer): experiment with putting the panel in the normal layer, and raising it on mouseover 2001-09-15 Havoc Pennington * src/window.c: add support for a mini icon in the titlebar (update_icon): re-enable support for _NET_WM_ICON * src/session.c (save_state): add an ferror check when writing session file 2001-09-11 Havoc Pennington * src/main.c (usage): exit with error code on usage() (kind of wrong for --help, but oh well). 2001-09-11 Havoc Pennington * src/window.c: fix up handling of text properties, so we get UTF8_STRING as that type and not as text list, and so we properly convert from text list to UTF-8 2001-09-10 Havoc Pennington * src/menu.c (meta_window_menu_new): icon for unmaximize * src/ui.c (meta_ui_init): fix call to XDisplayName * src/util.c: add missing header * src/frames.c: draw an unmaximize control if already maximized 2001-09-10 Havoc Pennington * src/window.c: Don't separate user_has_moved/user_has_resized, fixes bug in east-resizing Emacs, among other things * src/frame.c (meta_frame_sync_to_window): return immediately if nothing to do * src/util.c (ensure_logfile): replace rather than truncate old logfiles 2001-09-08 Havoc Pennington * src/ui.c (meta_ui_init): don't use gdk_display_name * src/frame.c (meta_window_ensure_frame): create frame with screen default visual, rather than client window visual; for DRI games, the client window visual was not allowed to be a child of another window with the same visual, apparently. Anyhow now we copy twm, etc. so it must be correct. * src/place.c (meta_window_place): if a transient is placed and its parent has focus, focus the transient. 2001-09-06 Havoc Pennington * configure.in: bump version 2.3.5, require newer GTK release 2001-09-04 Havoc Pennington * src/wm-tester/Makefile.am (noinst_PROGRAMS): make test apps noinst * src/metacity.desktop: for the capplet * src/Makefile.am: add .desktop file 2001-09-01 Havoc Pennington * src/errors.c: clean up the code, and replace GDK X error handler with one that chains up to GDK but first logs the error to logfile. 2001-08-31 Havoc Pennington * src/tabpopup.c (meta_ui_tab_popup_new): fix args to gtk_alignment_new() 2001-08-29 Havoc Pennington * src/display.c (event_callback): avoid focusing a window on tab popup popdown * src/screen.c (meta_screen_ensure_tab_popup): compute frame outline size here 2001-08-29 Havoc Pennington * src/tabpopup.c: Switch back to outline. 2001-08-29 Havoc Pennington * src/tabpopup.c: experiment with window-cover-with-icon instead of just the outline; can't decide. 2001-08-29 Havoc Pennington * src/tabpopup.c: add crackrock window-outlining feature * src/session.c (window_type_to_string): handle fullscreen 2001-08-29 Havoc Pennington * src/display.c (meta_display_open): wrong atom name - _NET_SUPPORTED not _NET_WM_SUPPORTED * src/window.c (meta_window_configure_request): geez, why were we honoring configure requests for width/height for normal windows. Denied! (meta_window_client_message): _NET_WM_MOVERESIZE support, sort of (doesn't quite work, acts like owner_events = true?) * src/display.c: add _NET_WM_MOVERESIZE atom 2001-08-28 Havoc Pennington Unbreak tab popup a bit. * src/stack.c (meta_stack_get_tab_list): add workspace argument (meta_stack_get_tab_next): add workspace argument * src/window.c: implement recording of the last user-initiated window position, so we can magically handle moving panels around really nicely. * src/wm-tester/main.c (set_up_icon_windows): fix to use new GTK API 2001-08-24 Havoc Pennington * src/window.c (constrain_position): force fullscreen windows to be at 0,0 * src/ui.c: use NULL colormap to get bitmaps, requires very latest GTK from CVS or it will spew warnings and not work. * src/window.c (constrain_size): disallow larger than screen in all cases, even if user has performed a resize operation. (constrain_position): keep window boxed onscreen. * src/keybindings.c (meta_display_process_key_event): revert an earlier change that disabled global keybindings when a grab is in effect; instead, only disable global keybindings if a _keyboard_ grab is in effect. The earlier change was just a broken workaround, the problems it fixed should have been solved by the addition of XGrabKeyboard() on the metacity keyboard grabs. This should fix the problem with pick-up-window-and-move-to-another-desktop. 2001-08-23 Havoc Pennington * src/window.c (update_icon): attempt to use the mask as well as the pixmap. Probably doesn't work so well. * src/tabpopup.c: make this look a little nicer 2001-08-22 Havoc Pennington * src/window.c (update_mwm_hints): all the MWM flag tests were backward 2001-08-22 Havoc Pennington * src/window.c (update_icon): half-ass implementation of getting pixmap icons (WM_NORMAL_HINTS and KWM_WIN_ICON). Ignores mask for now, with possibly ugly results for some apps. (read_rgb_icon): fixage 2001-08-19 Havoc Pennington * src/window.c: add a "fullscreen" semantic type; if a window requests the screen size exactly, and is undecorated, and is not a desktop window, we consider it a fullscreen window and keep it on top. Totally untested. 2001-08-19 Havoc Pennington * src/screen.c (set_supported_hint): we support _NET_WM_ICON * src/wm-tester/main.c: add stuff to test _NET_WM_ICON (but it doesn't work, so it isn't tested yet) * src/window.c (update_icon): read _NET_WM_ICON * src/screen.c (meta_screen_new): set the WM_ICON_SIZE hint * src/tabpopup.c (meta_ui_tab_popup_select): remove assertion * src/window.c (meta_window_get_icon_geometry): fix obscure memleak 2001-08-19 Havoc Pennington * src/display.c (meta_display_grab_window_buttons): remove XSync, error traps already do that (meta_display_grab_window_buttons): implement * src/keybindings.c: src/display.c: wire up the tab window, it rulez! 2001-08-19 Havoc Pennington * src/tabpopup.c: add prototype thingy to display windows we're cycling through with tab. Not wired up to keybindings yet. 2001-08-18 Havoc Pennington * src/effects.c (meta_effects_draw_box_animation): put an XFlush() right after starting things moving 2001-08-18 Havoc Pennington * src/window.c (meta_window_configure_request): (meta_window_move_resize_internal): Make a half-hearted not-very-tested attempt to handle window resizes correctly with respect to window gravity. 2001-08-18 Havoc Pennington * src/window.c (meta_window_get_gravity_position): hrm, I fixed this wrong the other day. Fixes static gravity when moving windows. 2001-08-18 Havoc Pennington * src/ui.c (meta_image_window_set_position): also set the current size. Lame hack of the day. * src/effects.c (effects_draw_box_animation_timeout): use the delay exposes feature to avoid the screen dirt * src/ui.c (meta_ui_push_delay_exposes): (meta_ui_pop_delay_exposes): feature to let us delay redraws until after we do server-grabbed draw-on-inferiors effects 2001-08-17 Havoc Pennington * src/window.c (meta_window_get_gravity_position): fix for StaticGravity 2001-08-09 Havoc Pennington * src/window.c (meta_window_configure_request): Honor USPosition even post-map. I know I'll regret this. 2001-08-07 Havoc Pennington * src/display.c (meta_display_open): set _NET_WM_NAME hint as a UTF8_STRING not STRING. Patch from Anders. 2001-08-06 Havoc Pennington * src/effects.c: disable opaque animations by default, current implementation suXors. 2001-08-06 Havoc Pennington * src/effects.c (meta_effects_draw_box_animation): Get start time after we do the pixbuf from drawable, so we don't count time spent getting pixbuf from drawable in the animation time. 2001-08-06 Havoc Pennington * src/effects.c: add opaque minimize/shade feature. The wireframe seemed kind of confusing and unclear from a UI standpoint. I know, I know. The bloat begins here. Also, we don't need to grab the server during opaque min/shade, which has some nice implications. * src/ui.c: Add features to render a window with an image in it, and also wrap pixbuf_from_drawable * src/effects.c (meta_effects_draw_box_animation): modify to be smoother (at least theoretically) by syncing to current time and "dropping frames" as appropriate. * src/window.c (meta_window_shade): draw animation for shading too 2001-08-05 Anders Carlsson * src/display.h, src/display.c: Add _NET_WM_ICON_GEOMETRY atom. * src/window.c (meta_window_calc_showing): See if the window has an icon geometry and show a morphing animation from the window's coordinates to the icon's coordinates. (meta_window_get_icon_geometry): New function that fetches a window's icon geometry. * src/Makefile.am: Add effects.[ch]. * src/effects.c: New file with cool effects. 2001-08-03 Havoc Pennington * src/keybindings.c: Add Alt + left/right arrow to move between workspaces. * src/screen.c (set_wm_check_hint): put property pointing back to itself on the _WIN_SUPPORTING_WM_CHECK window. 2001-08-03 Havoc Pennington * src/display.c (event_callback): push error trap around configure of withdrawn window, fixes a crash caused by rapidly creating/destroying a window. * src/window.c (recalc_window_features): don't allow shading undecorated windows. * src/wm-tester/main.c: add a program to torture window managers. 2001-08-01 Havoc Pennington * src/window.c (recalc_window_features): if a window isn't resizeable, turn off maximize function. If min size is equal to max size, turn off resize function.