*/
#include <errno.h>
+#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <wayland-client.h>
unsigned int *new_height,
void *data)
{
+ static const bool do_snap = true;
struct wlt_terminal *term = data;
-
- if (*new_width < width)
- *new_width = width;
- if (*new_height < height)
- *new_height = height;
+ unsigned int w, h;
+
+ /* TODO: allow disabling this via command-line */
+ if (do_snap) {
+ if (*new_width >= width) {
+ *new_width += term->font_normal->attr.width;
+ } else {
+ w = width - *new_width;
+ w /= term->font_normal->attr.width;
+ if (!w)
+ w = 1;
+ w *= term->font_normal->attr.width;
+ *new_width += w;
+ }
+ if (*new_height >= height) {
+ *new_height += term->font_normal->attr.height;
+ } else {
+ h = height - *new_height;
+ h /= term->font_normal->attr.height;
+ if (!h)
+ h = 1;
+ h *= term->font_normal->attr.height;
+ *new_height += h;
+ }
+ } else {
+ if (*new_width < width)
+ *new_width = width;
+ if (*new_height < height)
+ *new_height = height;
+ }
}
static void widget_key(struct wlt_widget *widget, unsigned int mask,