ultra optimization

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@781 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-11-22 16:30:57 +00:00
parent 95c8fb64cb
commit 2ea1e48258
3 changed files with 30 additions and 20 deletions

View File

@@ -325,9 +325,13 @@ static void MwLLGetXYWHImpl(MwLL handle, int* x, int* y, unsigned int* w, unsign
}
static void MwLLSetXYImpl(MwLL handle, int x, int y) {
XSizeHints sh;
long r;
XWindowChanges xwc;
XSizeHints sh;
long r;
XWindowChanges xwc;
XWindowAttributes xwa;
XGetWindowAttributes(handle->x11.display, handle->x11.window, &xwa);
if(xwa.x == x && xwa.y == y) return;
sh.flags = 0;
XGetWMNormalHints(handle->x11.display, handle->x11.window, &sh, &r);
@@ -349,9 +353,14 @@ static void MwLLSetXYImpl(MwLL handle, int x, int y) {
}
static void MwLLSetWHImpl(MwLL handle, int w, int h) {
XSizeHints sh;
long r;
XWindowChanges xwc;
XSizeHints sh;
long r;
XWindowChanges xwc;
XWindowAttributes xwa;
XGetWindowAttributes(handle->x11.display, handle->x11.window, &xwa);
if(xwa.width == w && xwa.height == h) return;
printf("%d %d %d %d\n", xwa.width, xwa.height, w, h);
sh.flags = 0;
XGetWMNormalHints(handle->x11.display, handle->x11.window, &sh, &r);

View File

@@ -6,8 +6,8 @@
static void set_xywh(MwWidget handle) {
int height = 0;
int diff = MwDefaultBorderWidth(handle);
diff = 0;
int diff = MwDefaultBorderWidth(handle);
diff = 0;
height = MwTextHeight(handle, "M") + 10;

View File

@@ -249,6 +249,7 @@ static void resize(MwWidget handle) {
int w = MwGetInteger(handle, MwNwidth);
int h = MwGetInteger(handle, MwNheight);
int ih = 0;
int m = 0;
if(tv->vscroll == NULL) {
tv->vscroll = MwCreateWidget(MwScrollBarClass, "vscroll", handle, w - 16, 0, 16, h);
@@ -263,8 +264,18 @@ static void resize(MwWidget handle) {
NULL);
}
ih = recursive_length(tv->tree);
if(ih == 0) ih = 1;
if(ih <= (h / (LinePadding + MwTextHeight(handle, "M")))) {
MwLLShow(tv->vscroll->lowlevel, 0);
m = 16;
} else {
MwLLShow(tv->vscroll->lowlevel, 1);
}
if(tv->frame == NULL) {
tv->frame = MwVaCreateWidget(MwFrameClass, "frame", handle, 0, 0, w - 16, h,
tv->frame = MwVaCreateWidget(MwFrameClass, "frame", handle, 0, 0, w - m, h,
MwNhasBorder, 1,
MwNinverted, 1,
NULL);
@@ -275,25 +286,15 @@ static void resize(MwWidget handle) {
MwVaApply(tv->frame,
MwNx, 0,
MwNy, 0,
MwNwidth, w - 16,
MwNwidth, w - m,
MwNheight, h,
NULL);
}
ih = recursive_length(tv->tree);
if(ih == 0) ih = 1;
MwVaApply(tv->vscroll,
MwNareaShown, h / (LinePadding + MwTextHeight(handle, "M")),
MwNmaxValue, ih,
NULL);
if(ih <= (h / (LinePadding + MwTextHeight(handle, "M")))) {
MwLLShow(tv->vscroll->lowlevel, 0);
MwSetInteger(tv->frame, MwNwidth, w);
} else {
MwLLShow(tv->vscroll->lowlevel, 1);
}
}
static int create(MwWidget handle) {