return outputs_dimensions;
}
+void floating_checkSize(Con *floating_con) {
+
+ /* Define reasonable minimal and maximal sizes for floating windows */
+ const int floating_sane_min_height = 50;
+ const int floating_sane_min_width = 75;
+ Rect floating_sane_max_dimensions;
+
+ /* Unless user requests otherwise (-1), ensure width/height do not exceed
+ * configured maxima or, if unconfigured, limit to combined width of all
+ * outputs */
+ if (config.floating_minimum_height != -1) {
+ if (config.floating_minimum_height == 0)
+ floating_con->rect.height = max(floating_con->rect.height, floating_sane_min_height);
+ else
+ floating_con->rect.height = max(floating_con->rect.height, config.floating_minimum_height);
+ }
+ if (config.floating_minimum_width != -1) {
+ if (config.floating_minimum_width == 0)
+ floating_con->rect.width = max(floating_con->rect.width, floating_sane_min_width);
+ else
+ floating_con->rect.width = max(floating_con->rect.width, config.floating_minimum_width);
+ }
+
+ /* Unless user requests otherwise (-1), raise the width/height to
+ * reasonable minimum dimensions */
+ floating_sane_max_dimensions = total_outputs_dimensions();
+ if (config.floating_maximum_height != -1) {
+ if (config.floating_maximum_height == 0)
+ floating_con->rect.height = min(floating_con->rect.height, floating_sane_max_dimensions.height);
+ else
+ floating_con->rect.height = min(floating_con->rect.height, config.floating_maximum_height);
+ }
+ if (config.floating_maximum_width != -1) {
+ if (config.floating_maximum_width == 0)
+ floating_con->rect.width = min(floating_con->rect.width, floating_sane_max_dimensions.width);
+ else
+ floating_con->rect.width = min(floating_con->rect.width, config.floating_maximum_width);
+ }
+}
+
void floating_enable(Con *con, bool automatic) {
bool set_focus = (con == focused);
}
}
- /* Define reasonable minimal and maximal sizes for floating windows */
- const int floating_sane_min_height = 50;
- const int floating_sane_min_width = 75;
-
- Rect floating_sane_max_dimensions;
- floating_sane_max_dimensions = total_outputs_dimensions();
-
- /* Unless user requests otherwise (-1), ensure width/height do not exceed
- * configured maxima or, if unconfigured, limit to combined width of all
- * outputs */
- if (config.floating_maximum_height != -1) {
- if (config.floating_maximum_height == 0)
- nc->rect.height = min(nc->rect.height, floating_sane_max_dimensions.height);
- else
- nc->rect.height = min(nc->rect.height, config.floating_maximum_height);
- }
- if (config.floating_maximum_width != -1) {
- if (config.floating_maximum_width == 0)
- nc->rect.width = min(nc->rect.width, floating_sane_max_dimensions.width);
- else
- nc->rect.width = min(nc->rect.width, config.floating_maximum_width);
- }
-
- /* Unless user requests otherwise (-1), raise the width/height to
- * reasonable minimum dimensions */
- if (config.floating_minimum_height != -1) {
- if (config.floating_minimum_height == 0)
- nc->rect.height = max(nc->rect.height, floating_sane_min_height);
- else
- nc->rect.height = max(nc->rect.height, config.floating_minimum_height);
- }
- if (config.floating_minimum_width != -1) {
- if (config.floating_minimum_width == 0)
- nc->rect.width = max(nc->rect.width, floating_sane_min_width);
- else
- nc->rect.width = max(nc->rect.width, config.floating_minimum_width);
- }
+ floating_checkSize(nc);
/* 3: attach the child to the new parent container. We need to do this
* because con_border_style_rect() needs to access con->parent. */
exit_gracefully($pid);
+################################################################################
+# 5: check floating_minimum_size with cmd_resize
+################################################################################
+
+$config = <<EOT;
+# i3 config file (v4)
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+
+# Test with different dimensions than the i3 default.
+floating_minimum_size 60 x 50
+EOT
+
+$pid = launch_with_config($config);
+
+$window = open_floating_window(rect => [ 0, 0, 100, 100 ]);
+cmd 'border none';
+cmd 'resize shrink height 80px or 80ppt';
+cmd 'resize shrink width 80px or 80ppt';
+$rect = $window->rect;
+is($rect->{width}, 60, 'width = 60');
+is($rect->{height}, 50, 'height = 50');
+
+exit_gracefully($pid);
+
+################################################################################
+# 6: check floating_maximum_size with cmd_resize
+################################################################################
+
+$config = <<EOT;
+# i3 config file (v4)
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+
+# Test with different dimensions than the i3 default.
+floating_maximum_size 100 x 100
+EOT
+
+$pid = launch_with_config($config);
+
+$window = open_floating_window(rect => [ 200, 200, 50, 50 ]);
+cmd 'border none';
+cmd 'resize grow height 100px or 100ppt';
+cmd 'resize grow width 100px or 100ppt';
+$rect = $window->rect;
+is($rect->{width}, 100, 'width = 100');
+is($rect->{height}, 100, 'height = 100');
+
+exit_gracefully($pid);
+
done_testing;