summaryrefslogtreecommitdiffstats
path: root/resize.c
AgeCommit message (Collapse)Author
2024-03-21Do not notify window-layout-changed if the window is about to benicm
destroyed (since it may have been freed by the time the notify happens), from Romain Francoise in GitHub issue 3860.
2022-02-17Add a window-resized hook which is fired when the window is actuallynicm
resized which may be later than the client resize, GitHub issue 2995.
2022-01-06Ignore windows without a size set (may be used for pane only), fromnicm
Anindya Mukherjee.
2021-12-06Do not dereference NULL window when resizing client, GitHub issue 2982.nicm
2021-08-27Allow control mode clients to set a hard limit on the window width andnicm
height, GitHub issue 2594.
2021-08-25Improve some logging.nicm
2021-08-25Ignore client creating session when working out size if it is a controlnicm
client.
2021-06-10Do not count client (and crash) if no window.nicm
2021-06-10Include current client in size calculation for new sessions, GitHubnicm
issue 2662.
2020-10-05Tidy the resize code, merge some common bits and add some comments. Fromnicm
"Mike" in GitHub issue 2392.
2020-06-05Add support for pausing a pane when the output buffered for a controlnicm
mode client gets too far behind. The pause-after flag with a time is set on the pane with refresh-client -f and a paused pane may be resumed with refresh-client -A. GitHub issue 2217.
2020-05-16Move lazy resize from the pane to the window, there is no point innicm
resizing the window unless it is the current window, and if we do and don't resize the pane until later there are problems if the size changes from A to B then back to A.
2020-05-16Change the existing client flags for control mode to apply for anynicm
client, use the same mechanism for the read-only flag and add an ignore-size flag. refresh-client -F has become -f (-F stays for backwards compatibility) and attach-session and switch-client now have -f flags also. A new format "client_flags" lists the flags and is shown by list-clients by default. This separates the read-only flag from "ignore size" behaviour (new ignore-size) flag - both behaviours are useful in different circumstances. attach -r and switchc -r remain and set or toggle both flags together.
2020-01-28If ALL clients are readonly, allow them to affect the size, suggested by ↵nicm
Thomas Sattler.
2020-01-28Add a define for flags meaning a client is not attached, and fixnicm
unattached counter, reported by Thomas Sattler.
2019-11-29If a window appears in only one attached session, there is no point innicm
worrying about which is the latest client (there is only one).
2019-11-28Make a best effort to set xpixel and ypixel for each pane and addnicm
formats for them.
2019-09-23Use the correct size for new windows when window-size is latest,nicm
reported by Vamsi Krishna Avula in GitHub issue 1917.
2019-09-19Add a "latest" window-size option which tries to size windows based onnicm
the most recently used client. From Tommie Gannert in GitHub issue 1869 based on earlier changes from me.
2019-05-11Do not reduce window height by status line height for control modenicm
clients, from George Nachman.
2019-04-17Set the window size as well as the layout size when using the presetnicm
layouts.
2019-03-16Tidy and rename some bits of status line code.nicm
2019-03-12Fix resizing of control clients, should be ignored until SIZECHANGED flag set.nicm
2019-03-04Fix sense of aggressive-resize flag.nicm
2018-10-18Support for windows larger than visible on the attached client. This hasnicm
been a limitation for a long time. There are two new options, window-size and default-size, and a new command, resize-window. The force-width and force-height options and the session_width and session_height formats have been removed. The new window-size option tells tmux how to work out the size of windows: largest means it picks the size of the largest session, smallest the smallest session (similar to the old behaviour) and manual means that it does not automatically resize windows. The default is currently largest but this may change. aggressive-resize modifies the choice of session for largest and smallest as it did before. If a window is in a session attached to a client that is too small, only part of the window is shown. tmux attempts to keep the cursor visible, so the part of the window displayed is changed as the cursor moves (with a small delay, to try and avoid excess redrawing when applications redraw status lines or similar that are not currently visible). The offset of the visible portion of the window is shown in status-right. Drawing windows which are larger than the client is not as efficient as those which fit, particularly when the cursor moves, so it is recommended to avoid using this on slow machines or networks (set window-size to smallest or manual). The resize-window command can be used to resize a window manually. If it is used, the window-size option is automatically set to manual for the window (undo this with "setw -u window-size"). resize-window works in a similar way to resize-pane (-U -D -L -R -x -y flags) but also has -a and -A flags. -a sets the window to the size of the smallest client (what it would be if window-size was smallest) and -A the largest. For the same behaviour as force-width or force-height, use resize-window -x or -y, and "setw -u window-size" to revert to automatic sizing.. If the global window-size option is set to manual, the default-size option is used for new windows. If -x or -y is used with new-session, that sets the default-size option for the new session. The maximum size of a window is 10000x10000. But expect applications to complain and much higher memory use if making a window excessively big. The minimum size is the size required for the current layout including borders. The refresh-client command can be used to pan around a window, -U -D -L -R moves up, down, left or right and -c returns to automatic cursor tracking. The position is reset when the current window is changed.
2018-08-18SESSION_UNATTACHED flag is no longer necessary now we have an attachednicm
count instead.
2017-10-16Infrastructure for drawing status lines of more than one line in height,nicm
still only one is allowed but this lets tmux draw bigger ones.
2017-08-28Do not forbid targets to specify non-visible panes - the checks fornicm
visibility are better where the target is used. GitHub issue 1049.
2017-05-10Prevent control clients from affecting the session size until they havenicm
specified a size with refresh-client -C. Prompted by a different change with the same purpose from George Nachman.
2017-02-08Improve some of the logging on resize.nicm
2017-02-03Cache status line position to reduce option lookups during output.nicm
2016-10-16Use the notify name string instead of going via an enum and changenicm
existing hooks to use notifys instead.
2016-01-19I no longer use my SourceForge address so replace it.nicm
2015-10-27Move struct options into options.c.nicm
2015-04-24Convert clients list into a TAILQ.nicm
2015-04-22Make session_has return a flag, returning the first winlink found is anicm
recipe for errors.
2015-04-22Change the windows array into an RB tree and fix some places where wenicm
were only looking at the first winlink for a window in a session.
2014-11-14Label windows which are smaller than expected with a reason.nicm
2014-11-12Don't let force-width or force-height be < PANE_MINIMUM.nicm
2014-03-31Make session_attached a count and add session_many_attached flag.nicm
2013-10-10Make recalculate_sizes() handle an empty window with no activenicm
pane. This can happen when a window is in two sessions - it isn't destroyed immediately when the pane goes away but is left until the last session is destroyed. Fixes problems with grouped sessions reported by Daniel Ralston.
2013-03-24Add resize-pane -Z to temporary zoom the active pane to occupy the fullNicholas Marriott
window or unzoom (restored to the normal layout) if it already zoomed, bound to C-b z by default. The pane is unzoomed on pretty much any excuse whatsoever. We considered making this a new layout but the requirements are quite different from layouts so decided it is better as a special case. Each current layout cell is saved, a temporary one-cell layout generated and all except the active pane set to NULL. Prompted by suggestions and scripts from several. Thanks to Aaron Jensen and Thiago Padilha for testing an earlier version.
2013-03-21Do not include status line in size calculations in control mode.Nicholas Marriott
2012-03-17Add notify hooks for various events, the functions are currently emptyNicholas Marriott
stubs but will be filled in for control mode later. From George Nachman.
2010-12-21Store sessions in an RB tree by name rather than a list, this is tidierNicholas Marriott
and allows them to easily be shown sorted in various lists (list-sessions/choose-sessions). Keep a session index which is used in a couple of places internally but make it an ever-increasing number rather than filling in gaps with new sessions.
2010-11-22There is somewhere that WINDOW_HIDDEN is getting set when it shouldn'tNicholas Marriott
be and I can't find it, but the flag itself is a useless optimisation that only applies to automatic-resize windows, so just dispose of it entirely. Fixes problems reported by Nicholas Riley.
2010-06-21Having a list of winlinks->alerts for each session is stupid, just storeNicholas Marriott
the alert flags directly in the winlink itself.
2009-09-24Don't allow locked or suspended clients to limit the size of active clients.Nicholas Marriott
2009-07-19Improved layout code.Nicholas Marriott
Each window now has a tree of layout cells associated with it. In this tree, each node is either a horizontal or vertical cell containing a list of other cells running from left-to-right or top-to-bottom, or a leaf cell which is associated with a pane. The major functional changes are: - panes may now be split arbitrarily both horizontally (splitw -h, C-b %) and vertically (splitw -v, C-b "); - panes may be resized both horizontally and vertically (resizep -L/-R/-U/-D, bound to C-b left/right/up/down and C-b M-left/right/up/down); - layouts are now applied and then may be modified by resizing or splitting panes, rather than being fixed and reapplied when the window is resized or panes are added; - manual-vertical layout is no longer necessary, and active-only layout is gone (but may return in future); - the main-pane layouts now reduce the size of the main pane to fit all panes if possible. Thanks to all who tested.
2009-07-14Get rid of the PANE_HIDDEN flag in favour of a function, and moving theNicholas Marriott
decision for whether or not a pane should be drawn out of the layout code and into the redraw code. This is needed for the new layout design, getting it in now to make that easier to work on.