When resizing windows make sure to resize their gradient as well
git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@6011 4a71c877-e1ca-e34f-864e-861f7616d084master
parent
e766b2f605
commit
e3c884a249
|
@ -52,6 +52,8 @@ static void windowInitVtbl(window *self)
|
|||
vtbl.widgetVtbl.getMinSize = windowGetMinSizeImpl;
|
||||
vtbl.widgetVtbl.getMaxSize = windowGetMaxSizeImpl;
|
||||
|
||||
vtbl.widgetVtbl.resize = windowResizeImpl;
|
||||
|
||||
|
||||
initialised = true;
|
||||
}
|
||||
|
@ -63,17 +65,29 @@ static void windowInitVtbl(window *self)
|
|||
self->vtbl = &vtbl;
|
||||
}
|
||||
|
||||
static void windowCreateWindowPattern(window *self, int w, int h)
|
||||
{
|
||||
// First clean up our current pattern (if any)
|
||||
if (self->windowPattern)
|
||||
{
|
||||
cairo_pattern_destroy(WINDOW(self)->windowPattern);
|
||||
}
|
||||
|
||||
self->windowPattern = cairo_pattern_create_linear(0, 0, 0, h);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0, 0.000000, 0.000000, 0.235294, 0.75);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0.2, 0.176470, 0.176470, 0.372549, 0.8);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0.6, 0.176470, 0.176470, 0.372549, 0.7);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 1, 0.176470, 0.176470, 0.372549, 0.7);
|
||||
}
|
||||
|
||||
void windowInit(window *self, const char *id, int w, int h)
|
||||
{
|
||||
// Init our parent
|
||||
widgetInit(WIDGET(self), id);
|
||||
|
||||
// Patterns initialization
|
||||
self->windowPattern = cairo_pattern_create_linear(0, 0, 0, 384);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0, 0.000000, 0.000000, 0.235294, 0.75);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0.2, 0.176470, 0.176470, 0.372549, 0.8);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 0.6, 0.176470, 0.176470, 0.372549, 0.7);
|
||||
cairo_pattern_add_color_stop_rgba(self->windowPattern, 1, 0.176470, 0.176470, 0.372549, 0.7);
|
||||
self->windowPattern = NULL;
|
||||
windowCreateWindowPattern(self, w, h);
|
||||
|
||||
// Prepare our vtable
|
||||
windowInitVtbl(self);
|
||||
|
@ -211,6 +225,13 @@ size windowGetMaxSizeImpl(widget *self)
|
|||
return maxSize;
|
||||
}
|
||||
|
||||
void windowResizeImpl(widget *self, int w, int h)
|
||||
{
|
||||
windowCreateWindowPattern(WINDOW(self), w, h);
|
||||
|
||||
widgetResizeImpl(self, w, h);
|
||||
}
|
||||
|
||||
void windowSetWindowVector(vector *v)
|
||||
{
|
||||
// Make sure the vector is valid
|
||||
|
|
|
@ -77,6 +77,7 @@ void windowDoDrawMaskImpl(widget *self);
|
|||
bool windowAddChildImpl(widget *self, widget *child);
|
||||
size windowGetMinSizeImpl(widget *self);
|
||||
size windowGetMaxSizeImpl(widget *self);
|
||||
void windowResizeImpl(widget *self, int w, int h);
|
||||
|
||||
/*
|
||||
* Public static methods
|
||||
|
|
Loading…
Reference in New Issue