mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-21 18:01:15 +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;
|
||||
-move: (Point) delta;
|
||||
-resize: (Extent) delta;
|
||||
-move:(Point)dpos andResize:(Extent)dsize;
|
||||
-grow: (Extent) delta;
|
||||
-handleEvent: (qwaq_event_t *) event;
|
||||
-takeFocus;
|
||||
|
|
|
@ -220,6 +220,13 @@ updateScreenCursor (View *view)
|
|||
return self;
|
||||
}
|
||||
|
||||
-move:(Point)dpos andResize:(Extent)dsize
|
||||
{
|
||||
[self move: dpos];
|
||||
[self resize: dsize];
|
||||
return self;
|
||||
}
|
||||
|
||||
-grow: (Extent) delta
|
||||
{
|
||||
Point dpos = {};
|
||||
|
@ -241,8 +248,7 @@ updateScreenCursor (View *view)
|
|||
}
|
||||
int save_state = state;
|
||||
state &= ~sfDrawn;
|
||||
[self move: dpos];
|
||||
[self resize: dsize];
|
||||
[self move: dpos andResize: dsize];
|
||||
state = save_state;
|
||||
[self redraw];
|
||||
return self;
|
||||
|
|
|
@ -126,8 +126,7 @@
|
|||
}
|
||||
int save_state = state;
|
||||
state &= ~sfDrawn;
|
||||
[self resize: {ds.x, ds.y}];
|
||||
[self move: dp];
|
||||
[self move:dp andResize:{ds.x, ds.y}];
|
||||
state = save_state;
|
||||
[self redraw];
|
||||
}
|
||||
|
@ -137,6 +136,30 @@
|
|||
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
|
||||
{
|
||||
int save_state = state;
|
||||
|
|
Loading…
Reference in a new issue