Mercurial > mplayer.hg
comparison gui/wm/ws.c @ 35645:c0ec433fe432
Add new function wsSizeHint().
Use it twice instead of having almost identical code.
author | ib |
---|---|
date | Mon, 14 Jan 2013 15:20:35 +0000 |
parents | fc4d3215bdf7 |
children | 0e0775a09c97 |
comparison
equal
deleted
inserted
replaced
35644:fc4d3215bdf7 | 35645:c0ec433fe432 |
---|---|
434 win->Y = y; | 434 win->Y = y; |
435 break; | 435 break; |
436 } | 436 } |
437 } | 437 } |
438 | 438 |
439 /** | |
440 * @brief Replace the size hints for the WM_NORMAL_HINTS property of a window. | |
441 * | |
442 * @param win pointer to a ws window structure | |
443 * @param hints size hints bits | |
444 */ | |
445 static void wsSizeHint(wsTWindow *win, long hints) | |
446 { | |
447 win->SizeHint.flags = hints; | |
448 | |
449 if (hints & PPosition) { | |
450 win->SizeHint.x = win->X; | |
451 win->SizeHint.y = win->Y; | |
452 } | |
453 | |
454 if (hints & PSize) { | |
455 win->SizeHint.width = win->Width; | |
456 win->SizeHint.height = win->Height; | |
457 } | |
458 | |
459 if (hints & PMinSize || win->Property & wsMinSize) { | |
460 win->SizeHint.flags |= PMinSize; | |
461 win->SizeHint.min_width = win->Width; | |
462 win->SizeHint.min_height = win->Height; | |
463 } | |
464 | |
465 if (hints & PMaxSize || win->Property & wsMaxSize) { | |
466 win->SizeHint.flags |= PMaxSize; | |
467 win->SizeHint.max_width = win->Width; | |
468 win->SizeHint.max_height = win->Height; | |
469 } | |
470 | |
471 if (hints & PResizeInc) { | |
472 win->SizeHint.width_inc = 1; | |
473 win->SizeHint.height_inc = 1; | |
474 } | |
475 | |
476 if (hints & PAspect) { | |
477 win->SizeHint.min_aspect.x = win->Width; | |
478 win->SizeHint.min_aspect.y = win->Height; | |
479 win->SizeHint.max_aspect.x = win->Width; | |
480 win->SizeHint.max_aspect.y = win->Height; | |
481 } | |
482 | |
483 // if (hints & PBaseSize) | |
484 { | |
485 win->SizeHint.base_width = win->Width; | |
486 win->SizeHint.base_height = win->Height; | |
487 } | |
488 | |
489 if (hints & PWinGravity) | |
490 win->SizeHint.win_gravity = StaticGravity; | |
491 | |
492 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint); | |
493 } | |
494 | |
439 // ---------------------------------------------------------------------------------------------- | 495 // ---------------------------------------------------------------------------------------------- |
440 // Create window. | 496 // Create window. |
441 // X,Y : window position | 497 // X,Y : window position |
442 // wX,wY : size of window | 498 // wX,wY : size of window |
443 // bW : border width | 499 // bW : border width |
539 wsClassHint.res_name = "MPlayer"; | 595 wsClassHint.res_name = "MPlayer"; |
540 | 596 |
541 wsClassHint.res_class = "MPlayer"; | 597 wsClassHint.res_class = "MPlayer"; |
542 XSetClassHint(wsDisplay, win->WindowID, &wsClassHint); | 598 XSetClassHint(wsDisplay, win->WindowID, &wsClassHint); |
543 | 599 |
544 win->SizeHint.flags = PPosition | PSize | PResizeInc | PWinGravity; // | PBaseSize; | 600 wsSizeHint(win, PPosition | PSize | PResizeInc /* | PBaseSize */ | PWinGravity); |
545 win->SizeHint.x = win->X; | |
546 win->SizeHint.y = win->Y; | |
547 win->SizeHint.width = win->Width; | |
548 win->SizeHint.height = win->Height; | |
549 | |
550 if (D & wsMinSize) { | |
551 win->SizeHint.flags |= PMinSize; | |
552 win->SizeHint.min_width = win->Width; | |
553 win->SizeHint.min_height = win->Height; | |
554 } | |
555 | |
556 if (D & wsMaxSize) { | |
557 win->SizeHint.flags |= PMaxSize; | |
558 win->SizeHint.max_width = win->Width; | |
559 win->SizeHint.max_height = win->Height; | |
560 } | |
561 | |
562 win->SizeHint.height_inc = 1; | |
563 win->SizeHint.width_inc = 1; | |
564 win->SizeHint.base_width = win->Width; | |
565 win->SizeHint.base_height = win->Height; | |
566 win->SizeHint.win_gravity = StaticGravity; | |
567 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint); | |
568 | 601 |
569 win->WMHints.flags = InputHint | StateHint; | 602 win->WMHints.flags = InputHint | StateHint; |
570 win->WMHints.input = True; | 603 win->WMHints.input = True; |
571 win->WMHints.initial_state = NormalState; | 604 win->WMHints.initial_state = NormalState; |
572 XSetWMHints(wsDisplay, win->WindowID, &win->WMHints); | 605 XSetWMHints(wsDisplay, win->WindowID, &win->WMHints); |
1203 void wsResizeWindow(wsTWindow *win, int sx, int sy) | 1236 void wsResizeWindow(wsTWindow *win, int sx, int sy) |
1204 { | 1237 { |
1205 win->Width = sx; | 1238 win->Width = sx; |
1206 win->Height = sy; | 1239 win->Height = sy; |
1207 | 1240 |
1208 win->SizeHint.flags = PPosition | PSize | PWinGravity; // | PBaseSize; | |
1209 win->SizeHint.x = win->X; | |
1210 win->SizeHint.y = win->Y; | |
1211 win->SizeHint.width = win->Width; | |
1212 win->SizeHint.height = win->Height; | |
1213 | |
1214 if (win->Property & wsMinSize) { | |
1215 win->SizeHint.flags |= PMinSize; | |
1216 win->SizeHint.min_width = win->Width; | |
1217 win->SizeHint.min_height = win->Height; | |
1218 } | |
1219 | |
1220 if (win->Property & wsMaxSize) { | |
1221 win->SizeHint.flags |= PMaxSize; | |
1222 win->SizeHint.max_width = win->Width; | |
1223 win->SizeHint.max_height = win->Height; | |
1224 } | |
1225 | |
1226 win->SizeHint.win_gravity = StaticGravity; | |
1227 win->SizeHint.base_width = sx; | |
1228 win->SizeHint.base_height = sy; | |
1229 | |
1230 if (vo_wm_type == 0) | 1241 if (vo_wm_type == 0) |
1231 XUnmapWindow(wsDisplay, win->WindowID); | 1242 XUnmapWindow(wsDisplay, win->WindowID); |
1232 | 1243 |
1233 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint); | 1244 wsSizeHint(win, PPosition | PSize /* | PBaseSize */ | PWinGravity); |
1234 XResizeWindow(wsDisplay, win->WindowID, sx, sy); | 1245 XResizeWindow(wsDisplay, win->WindowID, sx, sy); |
1235 | 1246 |
1236 if (win->ReSize) | 1247 if (win->ReSize) |
1237 win->ReSize(win->X, win->Y, win->Width, win->Height); | 1248 win->ReSize(win->X, win->Y, win->Width, win->Height); |
1238 | 1249 |