From 6db3d839451feffd9122ea20e468db8c1b882abc Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Wed, 6 May 2026 04:53:24 +0900 Subject: [PATCH] j --- examples/basic/subwindow.c | 1 + src/core.c | 2 +- src/widget/subwindow.c | 21 ++++++++++++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/examples/basic/subwindow.c b/examples/basic/subwindow.c index 9625e1831..93145923d 100644 --- a/examples/basic/subwindow.c +++ b/examples/basic/subwindow.c @@ -36,6 +36,7 @@ int main() { sw = MwVaCreateWidget(MwSubWindowClass, "swnd", w, i * Shift, i * Shift, 128, 128, MwNtitle, buf, + MwNiconPixmap, px[rand() % 6], NULL); f = MwSubWindowGetFrame(sw); diff --git a/src/core.c b/src/core.c index d0341e020..d30f53894 100644 --- a/src/core.c +++ b/src/core.c @@ -622,7 +622,7 @@ void MwSetText(MwWidget handle, const char* key, const char* value) { } void MwSetVoid(MwWidget handle, const char* key, void* value) { - if(strcmp(key, MwNiconPixmap) == 0) { + if(IsFirstVisible(handle) && strcmp(key, MwNiconPixmap) == 0) { MwLLSetIcon(handle->lowlevel, value); } else if(strcmp(key, MwNsizeHints) == 0) { MwSizeHints* sz = value; diff --git a/src/widget/subwindow.c b/src/widget/subwindow.c index 9f86cd006..3a9b427f7 100644 --- a/src/widget/subwindow.c +++ b/src/widget/subwindow.c @@ -290,8 +290,10 @@ static void draw(MwWidget handle) { MwLLColor c = MwParseColor(handle, MwGetText(handle, MwNbackground)); MwLLColor tb = MwParseColor(handle, MwGetText(handle, MwNtitleBackground)); MwLLColor tf = MwParseColor(handle, MwGetText(handle, MwNtitleForeground)); - MwRect r, r2; + MwRect r, r2, r3; const char* title = MwGetText(handle, MwNtitle); + int incr = 0; + MwLLPixmap px = MwGetVoid(handle, MwNiconPixmap); r.x = 0; r.y = 0; @@ -305,9 +307,22 @@ static void draw(MwWidget handle) { r2.height = TitleHeight; MwDrawRect(handle, &r2, tb); + if(px != NULL) { + r3 = r2; + incr = (TitleHeight - ButtonSize) / 2; + + r3.x += incr; + r3.y += incr; + r3.width = ButtonSize; + r3.height = ButtonSize; + MwLLDrawPixmap(handle->lowlevel, &r3, px); + + incr += ButtonSize; + } + if(title != NULL) { MwPoint p; - p.x = r2.x + (TitleHeight - ButtonSize) / 2; + p.x = r2.x + (TitleHeight - ButtonSize) / 2 + incr; p.y = r2.y + TitleHeight / 2; handle->bgcolor = tb; MwDrawText(handle, NULL, &p, title, MwALIGNMENT_BEGINNING, tf); @@ -343,7 +358,7 @@ static void parent_resize(MwWidget handle) { } static void prop_change(MwWidget handle, const char* key) { - if(strcmp(key, MwNtitle) == 0) MwForceRender(handle); + if(strcmp(key, MwNtitle) == 0 || strcmp(key, MwNiconPixmap) == 0) MwForceRender(handle); } static MwWidget mwSubWindowGetFrameImpl(MwWidget handle) {