Also implement gwidget_hide()
This commit is contained in:
parent
7077c0605c
commit
6e1a9db264
|
@ -39,6 +39,7 @@ typedef struct _GWidget GWidget;
|
|||
|
||||
|
||||
/* functions */
|
||||
void gwidget_hide(GWidget * gwidget);
|
||||
void gwidget_show(GWidget * gwidget);
|
||||
|
||||
#endif /* !GTOOLKIT_GWIDGET_H */
|
||||
|
|
|
@ -40,7 +40,8 @@
|
|||
/* types */
|
||||
typedef enum _GWidgetHandler
|
||||
{
|
||||
GWIDGET_HANDLER_SHOW = 0
|
||||
GWIDGET_HANDLER_HIDE = 0,
|
||||
GWIDGET_HANDLER_SHOW
|
||||
} GWidgetHandler;
|
||||
# define GWIDGET_HANDLER_LAST GWIDGET_HANDLER_SHOW
|
||||
# define GWIDGET_HANDLER_COUNT (GWIDGET_HANDLER_LAST + 1)
|
||||
|
|
|
@ -46,6 +46,7 @@ struct _GWidget
|
|||
void * self;
|
||||
|
||||
/* handlers */
|
||||
GWidgetHandlerSelf handler_hide;
|
||||
GWidgetHandlerSelf handler_show;
|
||||
};
|
||||
|
||||
|
@ -61,6 +62,7 @@ GWidget * gwidget_new(void)
|
|||
return NULL;
|
||||
gwidget->gwidget = gwidget;
|
||||
gwidget->self = NULL;
|
||||
gwidget->handler_hide = NULL;
|
||||
gwidget->handler_show = NULL;
|
||||
return gwidget;
|
||||
}
|
||||
|
@ -82,6 +84,9 @@ void gwidget_set_handler(GWidget * gwidget, GWidgetHandler handler, ...)
|
|||
va_start(ap, handler);
|
||||
switch(handler)
|
||||
{
|
||||
case GWIDGET_HANDLER_HIDE:
|
||||
gwidget->handler_hide = va_arg(ap, GWidgetHandlerSelf);
|
||||
break;
|
||||
case GWIDGET_HANDLER_SHOW:
|
||||
gwidget->handler_show = va_arg(ap, GWidgetHandlerSelf);
|
||||
break;
|
||||
|
@ -98,6 +103,16 @@ void gwidget_set_self(GWidget * gwidget, void * self)
|
|||
|
||||
|
||||
/* useful */
|
||||
/* gwidget_hide */
|
||||
void gwidget_hide(GWidget * gwidget)
|
||||
{
|
||||
if(gwidget->gwidget != gwidget)
|
||||
gwidget = gwidget->gwidget;
|
||||
if(gwidget->handler_hide != NULL)
|
||||
gwidget->handler_hide(gwidget->self);
|
||||
}
|
||||
|
||||
|
||||
/* gwidget_show */
|
||||
void gwidget_show(GWidget * gwidget)
|
||||
{
|
||||
|
|
|
@ -55,6 +55,7 @@ struct _GWindow
|
|||
|
||||
|
||||
/* prototypes */
|
||||
static void _gwindow_hide(GWindow * gwindow);
|
||||
static void _gwindow_show(GWindow * gwindow);
|
||||
|
||||
|
||||
|
@ -77,6 +78,8 @@ GWindow * gwindow_new(void)
|
|||
return NULL;
|
||||
}
|
||||
gwidget_set_self(gwindow->gwidget, gwindow);
|
||||
gwidget_set_handler(gwindow->gwidget, GWIDGET_HANDLER_HIDE,
|
||||
_gwindow_hide);
|
||||
gwidget_set_handler(gwindow->gwidget, GWIDGET_HANDLER_SHOW,
|
||||
_gwindow_show);
|
||||
gwindow->title = NULL;
|
||||
|
@ -243,6 +246,13 @@ void gwindow_resize(GWindow * gwindow, int width, int height)
|
|||
|
||||
/* private */
|
||||
/* functions */
|
||||
/* gwindow_hide */
|
||||
static void _gwindow_hide(GWindow * gwindow)
|
||||
{
|
||||
XUnmapWindow(gtoolkit_get_display(), gwindow->window);
|
||||
}
|
||||
|
||||
|
||||
/* gwindow_show */
|
||||
static void _gwindow_show(GWindow * gwindow)
|
||||
/* FIXME accept flags (focus...) */
|
||||
|
|
Loading…
Reference in New Issue
Block a user