mirror of
https://github.com/gnustep/apps-gorm.git
synced 2025-04-22 06:00:44 +00:00
WIP: Adding code to encode/decode NSWindow->GormNSWindowView
This commit is contained in:
parent
8e30d4979a
commit
0282a49e28
2 changed files with 209 additions and 20 deletions
|
@ -28,15 +28,111 @@
|
|||
|
||||
@interface GormNSWindowView : NSView
|
||||
{
|
||||
unsigned _gormStyleMask;
|
||||
BOOL _gormReleasedWhenClosed;
|
||||
NSUInteger autoPositionMask;
|
||||
NSRect _frame;
|
||||
NSSize _minimumSize;
|
||||
NSSize _maximumSize;
|
||||
NSSize _increments;
|
||||
NSString *_autosaveName;
|
||||
GSWindowDecorationView *_wv;
|
||||
id _contentView;
|
||||
id _firstResponder;
|
||||
id _futureFirstResponder;
|
||||
NSView *_initialFirstResponder;
|
||||
GSAutoLayoutEngine *_layoutEngine;
|
||||
PACKAGE_SCOPE
|
||||
id _delegate;
|
||||
@protected
|
||||
id _fieldEditor;
|
||||
id _lastLeftMouseDownView;
|
||||
id _lastRightMouseDownView;
|
||||
id _lastOtherMouseDownView;
|
||||
id _lastDragView;
|
||||
NSInteger _lastDragOperationMask;
|
||||
NSInteger _windowNum;
|
||||
NSInteger _gstate;
|
||||
id _defaultButtonCell;
|
||||
NSGraphicsContext *_context;
|
||||
|
||||
NSScreen *_screen;
|
||||
NSColor *_backgroundColor;
|
||||
NSString *_representedFilename;
|
||||
NSString *_miniaturizedTitle;
|
||||
NSImage *_miniaturizedImage;
|
||||
NSString *_windowTitle;
|
||||
PACKAGE_SCOPE
|
||||
NSPoint _lastPoint;
|
||||
@protected
|
||||
NSBackingStoreType _backingType;
|
||||
NSUInteger _styleMask;
|
||||
NSInteger _windowLevel;
|
||||
PACKAGE_SCOPE
|
||||
NSRect _rectNeedingFlush;
|
||||
NSMutableArray *_rectsBeingDrawn;
|
||||
@protected
|
||||
unsigned _disableFlushWindow;
|
||||
|
||||
NSWindowDepth _depthLimit;
|
||||
NSWindowController *_windowController;
|
||||
NSInteger _counterpart;
|
||||
CGFloat _alphaValue;
|
||||
|
||||
NSMutableArray *_children;
|
||||
NSWindow *_parent;
|
||||
NSCachedImageRep *_cachedImage;
|
||||
NSPoint _cachedImageOrigin;
|
||||
NSWindow *_attachedSheet;
|
||||
|
||||
PACKAGE_SCOPE
|
||||
struct GSWindowFlagsType {
|
||||
unsigned accepts_drag:1;
|
||||
unsigned is_one_shot:1;
|
||||
unsigned needs_flush:1;
|
||||
unsigned is_autodisplay:1;
|
||||
unsigned optimize_drawing:1;
|
||||
unsigned dynamic_depth_limit:1;
|
||||
unsigned cursor_rects_enabled:1;
|
||||
unsigned cursor_rects_valid:1;
|
||||
unsigned visible:1;
|
||||
unsigned is_key:1;
|
||||
unsigned is_main:1;
|
||||
unsigned is_edited:1;
|
||||
unsigned is_released_when_closed:1;
|
||||
unsigned is_miniaturized:1;
|
||||
unsigned menu_exclude:1;
|
||||
unsigned hides_on_deactivate:1;
|
||||
unsigned accepts_mouse_moved:1;
|
||||
unsigned has_opened:1;
|
||||
unsigned has_closed:1;
|
||||
unsigned default_button_cell_key_disabled:1;
|
||||
unsigned can_hide:1;
|
||||
unsigned has_shadow:1;
|
||||
unsigned is_opaque:1;
|
||||
unsigned views_need_display:1;
|
||||
// 3 bits reserved for subclass use
|
||||
unsigned subclass_bool_one: 1;
|
||||
unsigned subclass_bool_two: 1;
|
||||
unsigned subclass_bool_three: 1;
|
||||
|
||||
unsigned selectionDirection: 2;
|
||||
unsigned displays_when_screen_profile_changes: 1;
|
||||
unsigned is_movable_by_window_background: 1;
|
||||
unsigned allows_tooltips_when_inactive: 1;
|
||||
|
||||
// 4 used 28 available
|
||||
unsigned shows_toolbar_button: 1;
|
||||
unsigned autorecalculates_keyview_loop: 1;
|
||||
unsigned ignores_mouse_events: 1;
|
||||
unsigned preserves_content_during_live_resize: 1;
|
||||
} _f;
|
||||
@protected
|
||||
NSToolbar *_toolbar;
|
||||
void *_reserved_1;
|
||||
}
|
||||
|
||||
- (void) _setStyleMask: (unsigned int)newStyleMask;
|
||||
- (unsigned int) _styleMask;
|
||||
- (void) _setReleasedWhenClosed: (BOOL) flag;
|
||||
- (BOOL) _isReleasedWhenClosed;
|
||||
- (void) setStyleMask: (unsigned int)newStyleMask;
|
||||
- (unsigned int) styleMask;
|
||||
- (void) setReleasedWhenClosed: (BOOL) flag;
|
||||
- (BOOL) isReleasedWhenClosed;
|
||||
- (unsigned int) autoPositionMask;
|
||||
- (void) setAutoPositionMask: (unsigned int)mask;
|
||||
|
||||
|
|
|
@ -31,15 +31,13 @@
|
|||
#include "GormNSWindowView.h"
|
||||
|
||||
// the default style mask we start with.
|
||||
static NSUInteger defaultStyleMask = NSTitledWindowMask | NSClosableWindowMask
|
||||
| NSResizableWindowMask | NSMiniaturizableWindowMask;
|
||||
// static NSUInteger defaultStyleMask = NSTitledWindowMask | NSClosableWindowMask
|
||||
// | NSResizableWindowMask | NSMiniaturizableWindowMask;
|
||||
|
||||
@implementation GormNSWindowView
|
||||
|
||||
- (void) encodeWithCoder: (NSCoder*)aCoder
|
||||
{
|
||||
unsigned oldStyleMask;
|
||||
|
||||
// save the old values...
|
||||
// oldStyleMask = _styleMask;
|
||||
|
||||
|
@ -51,15 +49,110 @@ static NSUInteger defaultStyleMask = NSTitledWindowMask | NSClosableWindowMask
|
|||
[self setReleasedWhenClosed: NO];
|
||||
}
|
||||
|
||||
|
||||
- (id) initResponderWithCoder: (NSCoder *)coder
|
||||
{
|
||||
if ((self = [super init]) != nil)
|
||||
{
|
||||
[aDecoder decodeValueOfObjCType: @encode(int) at: &_interface_style];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setMenu: obj];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initWithCoder: (NSCoder *)coder
|
||||
{
|
||||
self = [super init]; // WithCoder: coder];
|
||||
if (self != nil)
|
||||
if ((self = [super initResponderWithCoder: aDecoder]) != nil)
|
||||
{
|
||||
// preserve the setting and set the actual window to NO.
|
||||
_gormReleasedWhenClosed = [self isReleasedWhenClosed];
|
||||
[self setReleasedWhenClosed: NO];
|
||||
NSSize aSize;
|
||||
NSRect aRect;
|
||||
NSPoint p;
|
||||
NSUInteger aStyle;
|
||||
NSBackingStoreType aBacking;
|
||||
NSInteger level;
|
||||
id obj;
|
||||
int version = [aDecoder versionForClassName: @"NSWindow"];
|
||||
|
||||
aRect = [aDecoder decodeRect];
|
||||
[aDecoder decodeValueOfObjCType: @encode(NSUInteger)
|
||||
at: &aStyle];
|
||||
// This used to be int, we need to stay compatible
|
||||
[aDecoder decodeValueOfObjCType: @encode(NSInteger)
|
||||
at: &aBacking];
|
||||
|
||||
// call the designated initializer....
|
||||
self = [self initWithContentRect: aRect
|
||||
styleMask: aStyle
|
||||
backing: aBacking
|
||||
defer: NO];
|
||||
|
||||
p = [aDecoder decodePoint];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setContentView: obj];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setBackgroundColor: obj];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setRepresentedFilename: obj];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setMiniwindowTitle: obj];
|
||||
obj = [aDecoder decodeObject];
|
||||
[self setTitle: obj];
|
||||
|
||||
if (version < 3)
|
||||
{
|
||||
aSize = [aDecoder decodeSize];
|
||||
[self setMinSize: aSize];
|
||||
aSize = [aDecoder decodeSize];
|
||||
[self setMaxSize: aSize];
|
||||
}
|
||||
else
|
||||
{
|
||||
aSize = [aDecoder decodeSize];
|
||||
[self setContentMinSize: aSize];
|
||||
aSize = [aDecoder decodeSize];
|
||||
[self setContentMaxSize: aSize];
|
||||
}
|
||||
|
||||
[aDecoder decodeValueOfObjCType: @encode(NSInteger)
|
||||
at: &level];
|
||||
[self setLevel: level];
|
||||
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setExcludedFromWindowsMenu: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setOneShot: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setAutodisplay: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self useOptimizedDrawing: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setDynamicDepthLimit: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
if (flag)
|
||||
[self enableCursorRects];
|
||||
else
|
||||
[self disableCursorRects];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setReleasedWhenClosed: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setHidesOnDeactivate: flag];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
|
||||
[self setAcceptsMouseMovedEvents: flag];
|
||||
|
||||
/* If the image has been specified, use it, if not use the default. */
|
||||
obj = [aDecoder decodeObject];
|
||||
if (obj != nil)
|
||||
{
|
||||
ASSIGN(_miniaturizedImage, obj);
|
||||
}
|
||||
|
||||
[aDecoder decodeValueOfObjCType: @encode(id)
|
||||
at: &_initialFirstResponder];
|
||||
|
||||
[self setFrameTopLeftPoint: p];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@ -90,12 +183,12 @@ static NSUInteger defaultStyleMask = NSTitledWindowMask | NSClosableWindowMask
|
|||
return self;
|
||||
}
|
||||
|
||||
- (void) _setStyleMask: (unsigned int)newStyleMask
|
||||
- (void) setStyleMask: (unsigned int)newStyleMask
|
||||
{
|
||||
_gormStyleMask = newStyleMask;
|
||||
}
|
||||
|
||||
- (unsigned int) _styleMask
|
||||
- (unsigned int) styleMask
|
||||
{
|
||||
return _gormStyleMask;
|
||||
}
|
||||
|
@ -115,12 +208,12 @@ static NSUInteger defaultStyleMask = NSTitledWindowMask | NSClosableWindowMask
|
|||
return @"NSWindow";
|
||||
}
|
||||
|
||||
- (void) _setReleasedWhenClosed: (BOOL) flag
|
||||
- (void) setReleasedWhenClosed: (BOOL) flag
|
||||
{
|
||||
_gormReleasedWhenClosed = flag;
|
||||
}
|
||||
|
||||
- (BOOL) _isReleasedWhenClosed
|
||||
- (BOOL) isReleasedWhenClosed
|
||||
{
|
||||
return _gormReleasedWhenClosed;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue