client.c
changeset 945 89ea2acd2646
parent 941 8c93b982f22e
child 946 b938876de936
equal deleted inserted replaced
944:bd5cf635c601 945:89ea2acd2646
   233 	lt->arrange();
   233 	lt->arrange();
   234 }
   234 }
   235 
   235 
   236 void
   236 void
   237 resize(Client *c, int x, int y, int w, int h, Bool sizehints) {
   237 resize(Client *c, int x, int y, int w, int h, Bool sizehints) {
   238 	float dx, dy, max, min, ratio;
   238 	double dx, dy, max, min, ratio;
   239 	XWindowChanges wc;
   239 	XWindowChanges wc; 
   240 
       
   241 	if(w <= 0 || h <= 0)
       
   242 		return;
       
   243 	if(sizehints) {
   240 	if(sizehints) {
   244 		if(c->minay > 0 && c->maxay > 0 && (h - c->baseh) > 0) {
   241 		if(c->minay > 0 && c->maxay > 0 && (h - c->baseh) > 0 && (w - c->basew) > 0) {
   245 			dx = (float)(w - c->basew);
   242 			dx = (double)(w - c->basew);
   246 			dy = (float)(h - c->baseh);
   243 			dy = (double)(h - c->baseh);
   247 			min = (float)(c->minax) / (float)(c->minay);
   244 			min = (double)(c->minax) / (double)(c->minay);
   248 			max = (float)(c->maxax) / (float)(c->maxay);
   245 			max = (double)(c->maxax) / (double)(c->maxay);
   249 			ratio = dx / dy;
   246 			ratio = dx / dy;
   250 			if(max > 0 && min > 0 && ratio > 0) {
   247 			if(max > 0 && min > 0 && ratio > 0) {
   251 				if(ratio < min) {
   248 				if(ratio < min) {
   252 					dy = (dx * min + dy) / (min * min + 1);
   249 					dy = (dx * min + dy) / (min * min + 1);
   253 					dx = dy * min;
   250 					dx = dy * min;
   272 			h = c->maxh;
   269 			h = c->maxh;
   273 		if(c->incw)
   270 		if(c->incw)
   274 			w -= (w - c->basew) % c->incw;
   271 			w -= (w - c->basew) % c->incw;
   275 		if(c->inch)
   272 		if(c->inch)
   276 			h -= (h - c->baseh) % c->inch;
   273 			h -= (h - c->baseh) % c->inch;
   277 	}
   274 		if(w <= 0 || h <= 0)
   278 	if(w <= 0 || h <= 0)
   275 			return;
   279 		return;
   276 	}
   280 	/* offscreen appearance fixes */
   277 	/* offscreen appearance fixes */
   281 	if(x > sw)
   278 	if(x > sw)
   282 		x = sw - w - 2 * c->border;
   279 		x = sw - w - 2 * c->border;
   283 	if(y > sh)
   280 	if(y > sh)
   284 		y = sh - h - 2 * c->border;
   281 		y = sh - h - 2 * c->border;