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