diff --git a/src/dialog/colorpicker.c b/src/dialog/colorpicker.c index daed680..a61e121 100644 --- a/src/dialog/colorpicker.c +++ b/src/dialog/colorpicker.c @@ -345,14 +345,19 @@ MwWidget MwColorPicker(MwWidget handle, const char* title) { MwSizeHints sh; int ww = MwGetInteger(handle, MwNwidth); int wh = MwGetInteger(handle, MwNheight); + int wx; + int wy; p.x = (ww - WIN_SIZE) / 2; p.y = (wh - WIN_SIZE) / 2; + wx = wy = 0; + if(handle == NULL) wx = wy = MwDEFAULT; + sh.min_width = sh.max_width = WIN_SIZE; sh.min_height = sh.max_height = WIN_SIZE; - window = MwVaCreateWidget(MwWindowClass, "main", handle, 0, 0, + window = MwVaCreateWidget(MwWindowClass, "main", handle, wx, wy, WIN_SIZE, WIN_SIZE, MwNtitle, title, MwNsizeHints, &sh, @@ -365,7 +370,7 @@ MwWidget MwColorPicker(MwWidget handle, const char* title) { MwAddTickList(window); MwLLBeginStateChange(window->lowlevel); - MwLLDetach(window->lowlevel, &p); + if(handle != NULL) MwLLDetach(window->lowlevel, &p); MwLLMakePopup(window->lowlevel, handle->lowlevel); MwLLEndStateChange(window->lowlevel); diff --git a/src/dialog/filechooser.c b/src/dialog/filechooser.c index fe73d23..5da06e3 100644 --- a/src/dialog/filechooser.c +++ b/src/dialog/filechooser.c @@ -465,18 +465,24 @@ MwWidget MwFileChooser(MwWidget handle, const char* title) { filechooser_t* fc = malloc(sizeof(*fc)); char* path; MwLLPixmap icon; + int wx; + int wy; memset(fc, 0, sizeof(*fc)); - w = 700; - h = w * 2 / 3; - window = MwVaCreateWidget(MwWindowClass, "filechooser", handle, 0, 0, w, h, - MwNtitle, title, - NULL); + w = 700; + h = w * 2 / 3; p.x = (ww - w) / 2; p.y = (wh - h) / 2; + wx = wy = 0; + if(handle == NULL) wx = wy = MwDEFAULT; + + window = MwVaCreateWidget(MwWindowClass, "filechooser", handle, wx, wy, w, h, + MwNtitle, title, + NULL); + fc->history_seek = 0; fc->dir = MwLoadIcon(window, MwIconDirectory); @@ -502,7 +508,7 @@ MwWidget MwFileChooser(MwWidget handle, const char* title) { free(path); MwLLBeginStateChange(window->lowlevel); - MwLLDetach(window->lowlevel, &p); + if(handle != NULL) MwLLDetach(window->lowlevel, &p); MwLLMakePopup(window->lowlevel, handle->lowlevel); MwLLEndStateChange(window->lowlevel); diff --git a/src/dialog/messagebox.c b/src/dialog/messagebox.c index a4fb0cb..8ef35e2 100644 --- a/src/dialog/messagebox.c +++ b/src/dialog/messagebox.c @@ -31,16 +31,21 @@ MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsi int w, h; int left = 8; int th; - int x = 0; - int ww = MwGetInteger(handle, MwNwidth); - int wh = MwGetInteger(handle, MwNheight); + int x = 0; + int wx; + int wy; + int ww = handle == NULL ? 0 : MwGetInteger(handle, MwNwidth); + int wh = handle == NULL ? 0 : MwGetInteger(handle, MwNheight); w = 512; h = 32 * 4; + wx = wy = 0; + if(handle == NULL) wx = wy = MwDEFAULT; + p.x = (ww - w) / 2; p.y = (wh - h) / 2; - window = MwVaCreateWidget(MwWindowClass, "messagebox", handle, 0, 0, w, h, + window = MwVaCreateWidget(MwWindowClass, "messagebox", handle, wx, wy, w, h, MwNtitle, title, NULL); @@ -100,7 +105,7 @@ MwWidget MwMessageBox(MwWidget handle, const char* text, const char* title, unsi NULL); MwLLBeginStateChange(window->lowlevel); - MwLLDetach(window->lowlevel, &p); + if(handle != NULL) MwLLDetach(window->lowlevel, &p); MwLLSetSizeHints(window->lowlevel, w, h, w, h); MwLLMakePopup(window->lowlevel, handle->lowlevel); MwLLEndStateChange(window->lowlevel);