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.