summaryrefslogtreecommitdiff
path: root/src/window.c
AgeCommit message (Collapse)AuthorFilesLines
2002-08-25when freeing a fullscreen window, update layers of the window's group.Havoc Pennington1-1/+16
2002-08-25 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_free): when freeing a fullscreen window, update layers of the window's group.
2002-08-24recalculate mapped-ness of frame after toggling decorations on/off, soHavoc Pennington1-0/+2
2002-08-24 Havoc Pennington <hp@redhat.com> * 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-24hack around bug in kmail etc. where SM_CLIENT_ID was set on the window,Havoc Pennington1-5/+28
2002-08-24 Havoc Pennington <hp@redhat.com> * 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-24translate some strings that should have been, and convert to localeHavoc Pennington1-14/+76
2002-08-24 Havoc Pennington <hp@redhat.com> * 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-15leave has_fullscreen_func set to TRUE if the window is screen sized andHavoc Pennington1-2/+11
2002-08-15 Havoc Pennington <hp@pobox.com> * 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 <hp@pobox.com> * 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-14In XGrabPointer, set the confine_to argument to the root window of theJayaraj Rajappan1-0/+1
2002-08-14 Jayaraj Rajappan <jayaraj.rajappan@wipro.com> * 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-12window is in fullscreen layer if any member of its group is fullscreenHavoc Pennington1-2/+41
2002-08-12 Havoc Pennington <hp@redhat.com> * 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-10unshade window if shaded, from JeyaSudha (meta_window_make_fullscreen):Havoc Pennington1-0/+6
2002-08-10 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_maximize): unshade window if shaded, from JeyaSudha (meta_window_make_fullscreen): ditto
2002-08-10allow Motif hints to be smaller than expected; GLUT for example seems toHavoc Pennington1-1/+1
2002-08-10 Havoc Pennington <hp@pobox.com> * 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-10be sure window is mapped if we unmanage it and it's not withdrawn; bugHavoc Pennington1-4/+12
2002-08-10 Havoc Pennington <hp@pobox.com> * 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-10raise window when moving to another workspace bug #88896Havoc Pennington1-0/+1
2002-08-10 Havoc Pennington <hp@pobox.com> * 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-10track time to avoid sending a deluge of move/resize requests, suggestionHavoc Pennington1-0/+49
2002-08-10 Havoc Pennington <hp@pobox.com> * 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-10add a FIXME comment with a link to bug #90382Havoc Pennington1-0/+19
2002-08-10 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_notify_focus): add a FIXME comment with a link to bug #90382
2002-08-09Patch to provide extra cues to the user when using window menu move andCraig Black1-33/+185
2002-08-08 Craig Black <blackc@speakeasy.net> Patch to provide extra cues to the user when using window menu move and resize, #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-09update comment also set expected focus window when setting input focus.Craig Black1-0/+2
2002-08-08 Craig Black <blackc@speakeasy.net> * src/display.h: update comment * src/window.c: (meta_window_focus): also set expected focus window when setting input focus.
2002-08-08clear expected focus window on openCraig Black1-2/+14
2002-08-07 Craig Black <blackc@speakeasy.net> * 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-07update layer (meta_window_make_fullscreen): update layerHavoc Pennington1-1/+3
2002-08-07 Havoc Pennington <hp@redhat.com> * 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-07implement _NET_WM_MOVERESIZE enhancements, see #90077.Craig Black1-29/+59
2002-08-06 Craig Black <blackc@speakeasy.net> * src/window.c: (meta_window_client_message): implement _NET_WM_MOVERESIZE enhancements, see #90077.
2002-08-06disable animation when shading windows, just doesn't really convey theHavoc Pennington1-10/+40
2002-07-28 Havoc Pennington <hp@pobox.com> * 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-05Set wm_state_skip_pager instead of skip_pager (ditto for _tasklist) so that ↵Ross Burton1-2/+2
the skip pager/tasklist hints work correctly
2002-08-01Implements support for _NET_WM_ALLOWED_ACTIONS. Fixes #84282.Mark McLoughlin1-1/+89
2002-08-01 Mark McLoughlin <mark@skynet.ie> 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-07-25add Metabox theme from GarrettHavoc Pennington1-2/+3
2002-07-24 Havoc Pennington <hp@pobox.com> * src/themes/Makefile.am (THEMES): add Metabox theme from Garrett * README: updates 2002-07-21 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_new): don't automaximize fullscreen windows. 2002-07-14 Havoc Pennington <hp@pobox.com> * src/window.c (recalc_window_features): don't allow shading of border-only windows.
2002-07-24syncHavoc Pennington1-0/+4
2002-07-24grab display across managing each screen; XGetInputFocus() on startup.Havoc Pennington1-4/+41
2002-07-20 Havoc Pennington <hp@pobox.com> * src/display.c (meta_display_open): grab display across managing each screen; XGetInputFocus() on startup. 2002-07-19 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_configure_request): disable configure requests during a user move/resize operation, mostly a workaround for stoopid apps.
2002-07-12try to maximize windows that are too big for the work areaHavoc Pennington1-0/+18
2002-07-12 Havoc Pennington <hp@redhat.com> * 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-10don't center vertically for maximized windows that don't fill the screen,Havoc Pennington1-4/+1
2002-07-09 Havoc Pennington <hp@pobox.com> * 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-06Apply blackc@speakeasy.net patch, bug #83940, to do mini-workspacesHavoc Pennington1-5/+44
2002-07-06 Havoc Pennington <hp@pobox.com> 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-05Change default value of input hint (if not specified) to true instead ofHavoc Pennington1-2/+3
2002-07-05 Havoc Pennington <hp@pobox.com> * 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-03use new macros to get whether we allow move/resize correctHavoc Pennington1-2/+2
2002-07-02 Havoc Pennington <hp@pobox.com> * 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-06-27Fixes not being able to tab out of a workspace which contains no windows.Mark McLoughlin1-0/+3
2002-06-26 Mark McLoughlin <mark@skynet.ie> 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-23Partially fix Jacob's SM bugs.Havoc Pennington1-0/+29
2002-06-22 Havoc Pennington <hp@pobox.com> 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-22Theme breakage! Themes have to implement "border" frames now, see AtlantaHavoc Pennington1-0/+6
2002-06-21 Havoc Pennington <hp@pobox.com> 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-20sticky windows aren't visibile on all screens. Check the workspace is onMark McLoughlin1-1/+1
2002-06-20 Mark McLoughlin <mark@skynet.ie> * 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-19handle UNKNOWN keyboard resizing stateHavoc Pennington1-1/+7
2002-06-19 Havoc Pennington <hp@pobox.com> * 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-18don't use a minimized window as the next focus window, patch fromHavoc Pennington1-0/+1
2002-06-17 Havoc Pennington <hp@pobox.com> * 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-18fix from Gaute Lindkvist #82977 for unsticking windowsHavoc Pennington1-11/+4
2002-06-17 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_change_workspace): fix from Gaute Lindkvist #82977 for unsticking windows
2002-06-15always focus new windows, trying to be smart about it was a flop.Havoc Pennington1-43/+68
2002-06-14 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_show): always focus new windows, trying to be smart about it was a flop.
2002-06-11allow dialogs to steal focus from panels/desktopHavoc Pennington1-1/+3
2002-06-11 Havoc Pennington <hp@redhat.com> * src/window.c (meta_window_show): allow dialogs to steal focus from panels/desktop
2002-06-09don't run constrain_placement on windows we allow to go anywhere (docks,Havoc Pennington1-5/+5
2002-06-09 Havoc Pennington <hp@pobox.com> * 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-08Yeah I know maximization is broken, I'm too tired to fix it. ProbablyHavoc Pennington1-3/+5
2002-06-08 Havoc Pennington <hp@pobox.com> 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-08short-circuit the "only one xinerama" case, and use outer rect of windowHavoc Pennington1-15/+30
2002-06-08 Havoc Pennington <hp@pobox.com> * 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-08only invalidate things if the struts actually change, since the panelHavoc Pennington1-5/+31
2002-06-08 Havoc Pennington <hp@pobox.com> * 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-07implementHavoc Pennington1-51/+44
2002-06-06 Havoc Pennington <hp@pobox.com> * 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-04fix for how we read the input hint, from Hidetoshi TajimaHavoc Pennington1-3/+5
2002-06-04 Havoc Pennington <hp@redhat.com> * 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-04don't automatically fullscreen things opened fullscreen, because there'sHavoc Pennington1-5/+0
2002-06-03 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_new): don't automatically fullscreen things opened fullscreen, because there's no GUI to un-fullscreen them.
2002-05-29add code to also guess that client wants to come out of fullscreen, thenHavoc Pennington1-2/+17
2002-05-29 Havoc Pennington <hp@pobox.com> * 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-29guess if a window meant to be fullscreen, and if so put it in that state.Havoc Pennington1-3/+27
2002-05-29 Havoc Pennington <hp@pobox.com> * 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-29handle missing frame, prevents segv with undecorated windows. #83298Havoc Pennington1-1/+2
2002-05-28 Havoc Pennington <hp@pobox.com> * src/window.c (redraw_icon): handle missing frame, prevents segv with undecorated windows. #83298
2002-05-29handle CWStackMode in configure requests (meta_window_new): if a window isHavoc Pennington1-15/+34
2002-05-28 Havoc Pennington <hp@pobox.com> * 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-27search for the window's screen by root window instead of Screen*, maybe itHavoc Pennington1-1/+3
2002-05-27 Havoc Pennington <hp@pobox.com> * 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