diff --git a/GNUmakefile b/GNUmakefile index f5e5697..0680167 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -135,7 +135,7 @@ else L_CFLAGS += -DUSE_STB_IMAGE endif -EXAMPLES = examples/example$(EXEC) examples/rotate$(EXEC) examples/image$(EXEC) examples/scrollbar$(EXEC) examples/checkbox$(EXEC) +EXAMPLES = examples/example$(EXEC) examples/rotate$(EXEC) examples/image$(EXEC) examples/scrollbar$(EXEC) examples/checkbox$(EXEC) examples/messagebox$(EXEC) ifeq ($(OPENGL),1) L_OBJS += src/widget/opengl.o diff --git a/examples/messagebox.c b/examples/messagebox.c new file mode 100644 index 0000000..d4d2fe5 --- /dev/null +++ b/examples/messagebox.c @@ -0,0 +1,20 @@ +/* $Id$ */ +#include + +void ok(MwWidget handle, void* user, void* call) { + MwDestroyWidget(user); +} + +void spawn(MwWidget handle, void* user, void* call) { + MwWidget mb = MwMessageBox(user, "new news arrived!", "title", MwMB_ICONNEWS | MwMB_BUTTONOK); + MwAddUserHandler(MwMessageBoxGetChild(mb, MwMB_BUTTONOK), MwNactivateHandler, ok, mb); +} + +int main() { + MwWidget msg = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 300, 100, MwNtitle, "test", NULL); + MwWidget btn = MwVaCreateWidget(MwButtonClass, "button", msg, 8, 8, 300 - 16, 100 - 16, MwNtext, "press me!", NULL); + + MwAddUserHandler(btn, MwNactivateHandler, spawn, msg); + + MwLoop(msg); +} diff --git a/include/Mw/StringDefs.h b/include/Mw/StringDefs.h index 59a4127..5908962 100644 --- a/include/Mw/StringDefs.h +++ b/include/Mw/StringDefs.h @@ -26,6 +26,7 @@ #define MwNpixmap "Vpixmap" #define MwNiconPixmap "ViconPixmap" +#define MwNsizeHints "VsizeHints" #define MwNactivateHandler "Cactivate" #define MwNresizeHandler "Cresize" diff --git a/include/Mw/TypeDefs.h b/include/Mw/TypeDefs.h index 673dde5..68ec6ab 100644 --- a/include/Mw/TypeDefs.h +++ b/include/Mw/TypeDefs.h @@ -19,6 +19,7 @@ typedef struct _MwFont MwFont; typedef struct _MwMenu* MwMenu; typedef struct _MwCursor MwCursor; typedef struct _MwEntry* MwEntry; +typedef struct _MwSizeHints MwSizeHints; #ifdef _MILSKO typedef struct _MwWidget* MwWidget; #else @@ -108,6 +109,13 @@ struct _MwEntry { MwPoint mouse; }; +struct _MwSizeHints { + int min_width; + int min_height; + int max_width; + int max_height; +}; + #define MwCursorDataHeight 16 struct _MwCursor { int width; diff --git a/src/core.c b/src/core.c index bdbb5ab..c021762 100644 --- a/src/core.c +++ b/src/core.c @@ -258,6 +258,9 @@ void MwSetText(MwWidget handle, const char* key, const char* value) { void MwSetVoid(MwWidget handle, const char* key, void* value) { if(strcmp(key, MwNiconPixmap) == 0) { MwLLSetIcon(handle->lowlevel, value); + } else if(strcmp(key, MwNsizeHints) == 0) { + MwSizeHints* sz = value; + MwLLSetSizeHints(handle->lowlevel, sz->min_width, sz->min_height, sz->max_width, sz->max_height); } else { shput(handle->data, key, value); }