- if (!resizing) {
- if (wParam == SIZE_MAXIMIZED && !was_zoomed) {
- was_zoomed = 1;
- prev_rows = term->rows;
- prev_cols = term->cols;
- if (cfg.resize_action == RESIZE_TERM) {
- w = width / font_width;
- if (w < 1) w = 1;
- h = height / font_height;
- if (h < 1) h = 1;
-
- term_size(term, h, w, cfg.savelines);
- }
- reset_window(0);
- } else if (wParam == SIZE_RESTORED && was_zoomed) {
- was_zoomed = 0;
- if (cfg.resize_action == RESIZE_TERM)
- term_size(term, prev_rows, prev_cols, cfg.savelines);
- if (cfg.resize_action != RESIZE_FONT)
- reset_window(2);
- else
- reset_window(0);
- }
- /* This is an unexpected resize, these will normally happen
- * if the window is too large. Probably either the user
- * selected a huge font or the screen size has changed.
- *
- * This is also called with minimize.
- */
- else reset_window(-1);
- }
-
- /*
- * Don't call back->size in mid-resize. (To prevent
- * massive numbers of resize events getting sent
- * down the connection during an NT opaque drag.)
- */
- if (resizing) {
- if (cfg.resize_action != RESIZE_FONT && !is_alt_pressed()) {
+ if (wParam == SIZE_MAXIMIZED && !was_zoomed) {
+ was_zoomed = 1;
+ prev_rows = term->rows;
+ prev_cols = term->cols;
+ if (resize_action == RESIZE_TERM) {
+ w = width / font_width;
+ if (w < 1) w = 1;
+ h = height / font_height;
+ if (h < 1) h = 1;
+
+ if (resizing) {
+ /*
+ * As below, if we're in the middle of an
+ * interactive resize we don't call
+ * back->size. In Windows 7, this case can
+ * arise in maximisation as well via the Aero
+ * snap UI.
+ */
+ need_backend_resize = TRUE;
+ conf_set_int(conf, CONF_height, h);
+ conf_set_int(conf, CONF_width, w);
+ } else {
+ term_size(term, h, w,
+ conf_get_int(conf, CONF_savelines));
+ }
+ }
+ reset_window(0);
+ } else if (wParam == SIZE_RESTORED && was_zoomed) {
+ was_zoomed = 0;
+ if (resize_action == RESIZE_TERM) {
+ w = (width-window_border*2) / font_width;
+ if (w < 1) w = 1;
+ h = (height-window_border*2) / font_height;
+ if (h < 1) h = 1;
+ term_size(term, h, w, conf_get_int(conf, CONF_savelines));
+ reset_window(2);
+ } else if (resize_action != RESIZE_FONT)
+ reset_window(2);
+ else
+ reset_window(0);
+ } else if (wParam == SIZE_MINIMIZED) {
+ /* do nothing */
+ } else if (resize_action == RESIZE_TERM ||
+ (resize_action == RESIZE_EITHER &&
+ !is_alt_pressed())) {
+ w = (width-window_border*2) / font_width;
+ if (w < 1) w = 1;
+ h = (height-window_border*2) / font_height;
+ if (h < 1) h = 1;
+
+ if (resizing) {
+ /*
+ * Don't call back->size in mid-resize. (To
+ * prevent massive numbers of resize events
+ * getting sent down the connection during an NT
+ * opaque drag.)
+ */