mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-05-11 18:20:47 +00:00
[qwaq] Add combined move and resize method
This fixes the hall of mirrors bug (needed to move, resize, then move the window).
This commit is contained in:
parent
42f20f200d
commit
e554202c24
3 changed files with 34 additions and 4 deletions
|
@ -65,6 +65,7 @@ enum {
|
||||||
-redraw;
|
-redraw;
|
||||||
-move: (Point) delta;
|
-move: (Point) delta;
|
||||||
-resize: (Extent) delta;
|
-resize: (Extent) delta;
|
||||||
|
-move:(Point)dpos andResize:(Extent)dsize;
|
||||||
-grow: (Extent) delta;
|
-grow: (Extent) delta;
|
||||||
-handleEvent: (qwaq_event_t *) event;
|
-handleEvent: (qwaq_event_t *) event;
|
||||||
-takeFocus;
|
-takeFocus;
|
||||||
|
|
|
@ -220,6 +220,13 @@ updateScreenCursor (View *view)
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-move:(Point)dpos andResize:(Extent)dsize
|
||||||
|
{
|
||||||
|
[self move: dpos];
|
||||||
|
[self resize: dsize];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
-grow: (Extent) delta
|
-grow: (Extent) delta
|
||||||
{
|
{
|
||||||
Point dpos = {};
|
Point dpos = {};
|
||||||
|
@ -241,8 +248,7 @@ updateScreenCursor (View *view)
|
||||||
}
|
}
|
||||||
int save_state = state;
|
int save_state = state;
|
||||||
state &= ~sfDrawn;
|
state &= ~sfDrawn;
|
||||||
[self move: dpos];
|
[self move: dpos andResize: dsize];
|
||||||
[self resize: dsize];
|
|
||||||
state = save_state;
|
state = save_state;
|
||||||
[self redraw];
|
[self redraw];
|
||||||
return self;
|
return self;
|
||||||
|
|
|
@ -126,8 +126,7 @@
|
||||||
}
|
}
|
||||||
int save_state = state;
|
int save_state = state;
|
||||||
state &= ~sfDrawn;
|
state &= ~sfDrawn;
|
||||||
[self resize: {ds.x, ds.y}];
|
[self move:dp andResize:{ds.x, ds.y}];
|
||||||
[self move: dp];
|
|
||||||
state = save_state;
|
state = save_state;
|
||||||
[self redraw];
|
[self redraw];
|
||||||
}
|
}
|
||||||
|
@ -137,6 +136,30 @@
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-move:(Point)dpos andResize:(Extent)dsize
|
||||||
|
{
|
||||||
|
int save_state = state;
|
||||||
|
state &= ~sfDrawn;
|
||||||
|
|
||||||
|
Point pos = self.pos;
|
||||||
|
Extent size = self.size;
|
||||||
|
[super resize: dsize];
|
||||||
|
[super move: dpos];
|
||||||
|
// need to move the panel both before and after the resize to avoid
|
||||||
|
// HoM effects or window/panel possition errors
|
||||||
|
move_panel (panel, xpos, ypos);
|
||||||
|
[(id)textContext resizeTo: self.size];
|
||||||
|
replace_panel (panel, [(id)textContext window]);
|
||||||
|
move_panel (panel, xpos, ypos);
|
||||||
|
|
||||||
|
dsize = {self.size.width - size.width, self.size.height - size.height};
|
||||||
|
[objects resize:dsize];
|
||||||
|
|
||||||
|
state = save_state;
|
||||||
|
[self redraw];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
-move: (Point) delta
|
-move: (Point) delta
|
||||||
{
|
{
|
||||||
int save_state = state;
|
int save_state = state;
|
||||||
|
|
Loading…
Reference in a new issue