+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);
+ }
+}
+