Merge remote-tracking branch 'upstream/master' into objj_compiler2
Conflicts: AppKit/CPWindow/CPWindow.j
No files matched your search
@@ -75,32 +75,33 @@ CPCriticalAlertStyle = 2;
|
||||
representing the first button added to the alert which appears on the
|
||||
right, 1 representing the next button to the left and so on)
|
||||
*/
|
||||
@implementation CPAlert : CPView
|
||||
@implementation CPAlert : CPObject
|
||||
{
|
||||
BOOL _showHelp @accessors(property=showsHelp);
|
||||
BOOL _showSuppressionButton @accessors(property=showsSuppressionButton);
|
||||
BOOL _showHelp @accessors(property=showsHelp);
|
||||
BOOL _showSuppressionButton @accessors(property=showsSuppressionButton);
|
||||
|
||||
CPAlertStyle _alertStyle @accessors(property=alertStyle);
|
||||
CPString _title @accessors(property=title);
|
||||
CPView _accessoryView @accessors(property=accessoryView);
|
||||
CPImage _icon @accessors(property=icon);
|
||||
CPAlertStyle _alertStyle @accessors(property=alertStyle);
|
||||
CPString _title @accessors(property=title);
|
||||
CPView _accessoryView @accessors(property=accessoryView);
|
||||
CPImage _icon @accessors(property=icon);
|
||||
|
||||
CPArray _buttons @accessors(property=buttons,readonly);
|
||||
CPCheckBox _suppressionButton @accessors(property=suppressionButton,readonly);
|
||||
CPArray _buttons @accessors(property=buttons,readonly);
|
||||
CPCheckBox _suppressionButton @accessors(property=suppressionButton,readonly);
|
||||
|
||||
id _delegate @accessors(property=delegate);
|
||||
id _modalDelegate;
|
||||
SEL _didEndSelector;
|
||||
id _delegate @accessors(property=delegate);
|
||||
id _modalDelegate;
|
||||
SEL _didEndSelector;
|
||||
|
||||
CPWindow _window @accessors(property=window,readonly);
|
||||
int _defaultWindowStyle;
|
||||
_CPAlertThemeView _themeView @accessors(property=themeView, readonly);
|
||||
CPWindow _window @accessors(property=window,readonly);
|
||||
int _defaultWindowStyle;
|
||||
|
||||
CPImageView _alertImageView;
|
||||
CPTextField _informativeLabel;
|
||||
CPTextField _messageLabel;
|
||||
CPButton _alertHelpButton;
|
||||
CPImageView _alertImageView;
|
||||
CPTextField _informativeLabel;
|
||||
CPTextField _messageLabel;
|
||||
CPButton _alertHelpButton;
|
||||
|
||||
BOOL _needsLayout;
|
||||
BOOL _needsLayout;
|
||||
}
|
||||
|
||||
#pragma mark Creating Alerts
|
||||
@@ -164,6 +165,7 @@ CPCriticalAlertStyle = 2;
|
||||
_showHelp = NO;
|
||||
_needsLayout = YES;
|
||||
_defaultWindowStyle = CPTitledWindowMask;
|
||||
_themeView = [_CPAlertThemeView new];
|
||||
|
||||
_messageLabel = [CPTextField labelWithTitle:@"Alert"];
|
||||
_alertImageView = [[CPImageView alloc] init];
|
||||
@@ -180,6 +182,11 @@ CPCriticalAlertStyle = 2;
|
||||
|
||||
#pragma mark Accessors
|
||||
|
||||
- (CPTheme)theme
|
||||
{
|
||||
return [_themeView theme];
|
||||
}
|
||||
|
||||
/*!
|
||||
set the theme to use
|
||||
|
||||
@@ -197,9 +204,20 @@ CPCriticalAlertStyle = 2;
|
||||
|
||||
_window = nil; // will be regenerated at next layout
|
||||
_needsLayout = YES;
|
||||
[super setTheme:aTheme];
|
||||
[_themeView setTheme:aTheme];
|
||||
}
|
||||
|
||||
- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName
|
||||
{
|
||||
[_themeView setValue:aValue forThemeAttribute:aName];
|
||||
}
|
||||
|
||||
- (void)setValue:(id)aValue forThemeAttribute:(CPString)aName inState:(CPThemeState)aState
|
||||
{
|
||||
[_themeView setValue:aValue forThemeAttribute:aName inState:aState];
|
||||
}
|
||||
|
||||
|
||||
/*! @deprecated
|
||||
*/
|
||||
- (void)setWindowStyle:(int)aStyle
|
||||
@@ -334,16 +352,16 @@ CPCriticalAlertStyle = 2;
|
||||
*/
|
||||
- (void)_layoutMessageView
|
||||
{
|
||||
var inset = [self currentValueForThemeAttribute:@"content-inset"],
|
||||
var inset = [_themeView currentValueForThemeAttribute:@"content-inset"],
|
||||
sizeWithFontCorrection = 6.0,
|
||||
messageLabelWidth,
|
||||
messageLabelTextSize;
|
||||
|
||||
[_messageLabel setTextColor:[self currentValueForThemeAttribute:@"message-text-color"]];
|
||||
[_messageLabel setFont:[self currentValueForThemeAttribute:@"message-text-font"]];
|
||||
[_messageLabel setTextShadowColor:[self currentValueForThemeAttribute:@"message-text-shadow-color"]];
|
||||
[_messageLabel setTextShadowOffset:[self currentValueForThemeAttribute:@"message-text-shadow-offset"]];
|
||||
[_messageLabel setAlignment:[self currentValueForThemeAttribute:@"message-text-alignment"]];
|
||||
[_messageLabel setTextColor:[_themeView currentValueForThemeAttribute:@"message-text-color"]];
|
||||
[_messageLabel setFont:[_themeView currentValueForThemeAttribute:@"message-text-font"]];
|
||||
[_messageLabel setTextShadowColor:[_themeView currentValueForThemeAttribute:@"message-text-shadow-color"]];
|
||||
[_messageLabel setTextShadowOffset:[_themeView currentValueForThemeAttribute:@"message-text-shadow-offset"]];
|
||||
[_messageLabel setAlignment:[_themeView currentValueForThemeAttribute:@"message-text-alignment"]];
|
||||
[_messageLabel setLineBreakMode:CPLineBreakByWordWrapping];
|
||||
|
||||
messageLabelWidth = CGRectGetWidth([[_window contentView] frame]) - inset.left - inset.right;
|
||||
@@ -357,18 +375,18 @@ CPCriticalAlertStyle = 2;
|
||||
*/
|
||||
- (void)_layoutInformativeView
|
||||
{
|
||||
var inset = [self currentValueForThemeAttribute:@"content-inset"],
|
||||
defaultElementsMargin = [self currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
var inset = [_themeView currentValueForThemeAttribute:@"content-inset"],
|
||||
defaultElementsMargin = [_themeView currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
sizeWithFontCorrection = 6.0,
|
||||
informativeLabelWidth,
|
||||
informativeLabelOriginY,
|
||||
informativeLabelTextSize;
|
||||
|
||||
[_informativeLabel setTextColor:[self currentValueForThemeAttribute:@"informative-text-color"]];
|
||||
[_informativeLabel setFont:[self currentValueForThemeAttribute:@"informative-text-font"]];
|
||||
[_informativeLabel setTextShadowColor:[self currentValueForThemeAttribute:@"informative-text-shadow-color"]];
|
||||
[_informativeLabel setTextShadowOffset:[self currentValueForThemeAttribute:@"informative-text-shadow-offset"]];
|
||||
[_informativeLabel setAlignment:[self currentValueForThemeAttribute:@"informative-text-alignment"]];
|
||||
[_informativeLabel setTextColor:[_themeView currentValueForThemeAttribute:@"informative-text-color"]];
|
||||
[_informativeLabel setFont:[_themeView currentValueForThemeAttribute:@"informative-text-font"]];
|
||||
[_informativeLabel setTextShadowColor:[_themeView currentValueForThemeAttribute:@"informative-text-shadow-color"]];
|
||||
[_informativeLabel setTextShadowOffset:[_themeView currentValueForThemeAttribute:@"informative-text-shadow-offset"]];
|
||||
[_informativeLabel setAlignment:[_themeView currentValueForThemeAttribute:@"informative-text-alignment"]];
|
||||
[_informativeLabel setLineBreakMode:CPLineBreakByWordWrapping];
|
||||
|
||||
informativeLabelWidth = CGRectGetWidth([[_window contentView] frame]) - inset.left - inset.right;
|
||||
@@ -386,8 +404,8 @@ CPCriticalAlertStyle = 2;
|
||||
if (!_accessoryView)
|
||||
return;
|
||||
|
||||
var inset = [self currentValueForThemeAttribute:@"content-inset"],
|
||||
defaultElementsMargin = [self currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
var inset = [_themeView currentValueForThemeAttribute:@"content-inset"],
|
||||
defaultElementsMargin = [_themeView currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
accessoryViewWidth = CGRectGetWidth([[_window contentView] frame]) - inset.left - inset.right,
|
||||
accessoryViewOriginY = CGRectGetMaxY([_informativeLabel frame]) + defaultElementsMargin;
|
||||
|
||||
@@ -403,16 +421,16 @@ CPCriticalAlertStyle = 2;
|
||||
if (!_showSuppressionButton)
|
||||
return;
|
||||
|
||||
var inset = [self currentValueForThemeAttribute:@"content-inset"],
|
||||
suppressionViewXOffset = [self currentValueForThemeAttribute:@"suppression-button-x-offset"],
|
||||
suppressionViewYOffset = [self currentValueForThemeAttribute:@"suppression-button-y-offset"],
|
||||
defaultElementsMargin = [self currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
var inset = [_themeView currentValueForThemeAttribute:@"content-inset"],
|
||||
suppressionViewXOffset = [_themeView currentValueForThemeAttribute:@"suppression-button-x-offset"],
|
||||
suppressionViewYOffset = [_themeView currentValueForThemeAttribute:@"suppression-button-y-offset"],
|
||||
defaultElementsMargin = [_themeView currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
suppressionButtonViewOriginY = CGRectGetMaxY([(_accessoryView || _informativeLabel) frame]) + defaultElementsMargin + suppressionViewYOffset;
|
||||
|
||||
[_suppressionButton setTextColor:[self currentValueForThemeAttribute:@"suppression-button-text-color"]];
|
||||
[_suppressionButton setFont:[self currentValueForThemeAttribute:@"suppression-button-text-font"]];
|
||||
[_suppressionButton setTextShadowColor:[self currentValueForThemeAttribute:@"suppression-button-text-shadow-color"]];
|
||||
[_suppressionButton setTextShadowOffset:[self currentValueForThemeAttribute:@"suppression-button-text-shadow-offset"]];
|
||||
[_suppressionButton setTextColor:[_themeView currentValueForThemeAttribute:@"suppression-button-text-color"]];
|
||||
[_suppressionButton setFont:[_themeView currentValueForThemeAttribute:@"suppression-button-text-font"]];
|
||||
[_suppressionButton setTextShadowColor:[_themeView currentValueForThemeAttribute:@"suppression-button-text-shadow-color"]];
|
||||
[_suppressionButton setTextShadowOffset:[_themeView currentValueForThemeAttribute:@"suppression-button-text-shadow-offset"]];
|
||||
[_suppressionButton sizeToFit];
|
||||
|
||||
[_suppressionButton setFrameOrigin:CGPointMake(inset.left + suppressionViewXOffset, suppressionButtonViewOriginY)];
|
||||
@@ -424,12 +442,12 @@ CPCriticalAlertStyle = 2;
|
||||
*/
|
||||
- (CGSize)_layoutButtonsFromView:(CPView)lastView
|
||||
{
|
||||
var inset = [self currentValueForThemeAttribute:@"content-inset"],
|
||||
minimumSize = [self currentValueForThemeAttribute:@"size"],
|
||||
buttonOffset = [self currentValueForThemeAttribute:@"button-offset"],
|
||||
helpLeftOffset = [self currentValueForThemeAttribute:@"help-image-left-offset"],
|
||||
var inset = [_themeView currentValueForThemeAttribute:@"content-inset"],
|
||||
minimumSize = [_themeView currentValueForThemeAttribute:@"size"],
|
||||
buttonOffset = [_themeView currentValueForThemeAttribute:@"button-offset"],
|
||||
helpLeftOffset = [_themeView currentValueForThemeAttribute:@"help-image-left-offset"],
|
||||
aRepresentativeButton = [_buttons objectAtIndex:0],
|
||||
defaultElementsMargin = [self currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
defaultElementsMargin = [_themeView currentValueForThemeAttribute:@"default-elements-margin"],
|
||||
panelSize = [[_window contentView] frame].size,
|
||||
buttonsOriginY,
|
||||
offsetX;
|
||||
@@ -461,8 +479,8 @@ CPCriticalAlertStyle = 2;
|
||||
|
||||
if (_showHelp)
|
||||
{
|
||||
var helpImage = [self currentValueForThemeAttribute:@"help-image"],
|
||||
helpImagePressed = [self currentValueForThemeAttribute:@"help-image-pressed"],
|
||||
var helpImage = [_themeView currentValueForThemeAttribute:@"help-image"],
|
||||
helpImagePressed = [_themeView currentValueForThemeAttribute:@"help-image-pressed"],
|
||||
helpImageSize = helpImage ? [helpImage size] : CGSizeMakeZero(),
|
||||
helpFrame = CGRectMake(helpLeftOffset, buttonsOriginY, helpImageSize.width, helpImageSize.height);
|
||||
|
||||
@@ -487,7 +505,7 @@ CPCriticalAlertStyle = 2;
|
||||
if (!_window)
|
||||
[self _createWindowWithStyle:nil];
|
||||
|
||||
var iconOffset = [self currentValueForThemeAttribute:@"image-offset"],
|
||||
var iconOffset = [_themeView currentValueForThemeAttribute:@"image-offset"],
|
||||
theImage = _icon,
|
||||
finalSize;
|
||||
|
||||
@@ -495,13 +513,13 @@ CPCriticalAlertStyle = 2;
|
||||
switch (_alertStyle)
|
||||
{
|
||||
case CPWarningAlertStyle:
|
||||
theImage = [self currentValueForThemeAttribute:@"warning-image"];
|
||||
theImage = [_themeView currentValueForThemeAttribute:@"warning-image"];
|
||||
break;
|
||||
case CPInformationalAlertStyle:
|
||||
theImage = [self currentValueForThemeAttribute:@"information-image"];
|
||||
theImage = [_themeView currentValueForThemeAttribute:@"information-image"];
|
||||
break;
|
||||
case CPCriticalAlertStyle:
|
||||
theImage = [self currentValueForThemeAttribute:@"error-image"];
|
||||
theImage = [_themeView currentValueForThemeAttribute:@"error-image"];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -592,7 +610,7 @@ CPCriticalAlertStyle = 2;
|
||||
- (void)_createWindowWithStyle:(int)forceStyle
|
||||
{
|
||||
var frame = CGRectMakeZero();
|
||||
frame.size = [self currentValueForThemeAttribute:@"size"];
|
||||
frame.size = [_themeView currentValueForThemeAttribute:@"size"];
|
||||
|
||||
_window = [[CPWindow alloc] initWithContentRect:frame styleMask:forceStyle || _defaultWindowStyle];
|
||||
[_window setLevel:CPStatusWindowLevel];
|
||||
@@ -633,8 +651,8 @@ CPCriticalAlertStyle = 2;
|
||||
{
|
||||
if ([_window isSheet])
|
||||
{
|
||||
[CPApp endSheet:_window returnCode:[aSender tag]];
|
||||
[_window orderOut:nil];
|
||||
[CPApp endSheet:_window returnCode:[aSender tag]];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -650,17 +668,19 @@ CPCriticalAlertStyle = 2;
|
||||
*/
|
||||
- (void)_alertDidEnd:(CPWindow)aWindow returnCode:(int)returnCode contextInfo:(id)contextInfo
|
||||
{
|
||||
if ([_delegate respondsToSelector:@selector(alertDidEnd:returnCode:)])
|
||||
[_delegate alertDidEnd:self returnCode:returnCode];
|
||||
|
||||
if (_didEndSelector)
|
||||
objj_msgSend(_modalDelegate, _didEndSelector, self, returnCode, contextInfo);
|
||||
|
||||
_modalDelegate = nil;
|
||||
_didEndSelector = nil;
|
||||
|
||||
if ([_delegate respondsToSelector:@selector(alertDidEnd:returnCode:)])
|
||||
[_delegate alertDidEnd:self returnCode:returnCode];
|
||||
}
|
||||
|
||||
#pragma mark Theme Attributes
|
||||
@end
|
||||
|
||||
@implementation _CPAlertThemeView : CPView
|
||||
|
||||
+ (CPString)defaultThemeClass
|
||||
{
|
||||
|
||||
@@ -310,11 +310,18 @@ function CPBrowserStyleProperty(aProperty)
|
||||
break;
|
||||
default:
|
||||
var prefixes = ["Webkit", "Moz", "O", "ms"],
|
||||
capProperty = [aProperty capitalizedString];
|
||||
strippedProperty = aProperty.split('-').join(' '),
|
||||
capProperty = [strippedProperty capitalizedString].split(' ').join('');
|
||||
|
||||
for (var i = 0; i < prefixes.length; i++)
|
||||
{
|
||||
if (prefixes[i] + capProperty in testElement.style)
|
||||
// First check if the property is already valid without being formatted, otherwise try the capitalized property
|
||||
if (prefixes[i] + aProperty in testElement.style)
|
||||
{
|
||||
r = prefixes[i] + aProperty;
|
||||
break;
|
||||
}
|
||||
else if (prefixes[i] + capProperty in testElement.style)
|
||||
{
|
||||
r = prefixes[i] + capProperty;
|
||||
break;
|
||||
@@ -352,9 +359,21 @@ function CPBrowserCSSProperty(aProperty)
|
||||
{
|
||||
if (browserProperty.substring(0, prefix.length) == prefix)
|
||||
{
|
||||
return prefixes[prefix] + browserProperty.substring(prefix.length).toLowerCase();
|
||||
var browserPropertyWithoutPrefix = browserProperty.substring(prefix.length),
|
||||
parts = browserPropertyWithoutPrefix.match(/[A-Z][a-z]+/g);
|
||||
|
||||
// If there were any capitalized words in the browserProperty, insert a "-" between each one
|
||||
if (parts && parts.length > 0)
|
||||
browserPropertyWithoutPrefix = parts.join("-");
|
||||
|
||||
return prefixes[prefix] + browserPropertyWithoutPrefix.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
var parts = browserProperty.match(/[A-Z][a-z]+/g);
|
||||
|
||||
if (parts && parts.length > 0)
|
||||
browserProperty = parts.join("-");
|
||||
|
||||
return browserProperty.toLowerCase();
|
||||
}
|
||||
@@ -114,4 +114,9 @@ CPDocModalWindowMask = 1 << 6;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeKeyWindow
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -115,13 +115,15 @@ CPSegmentSwitchTrackingMomentary = 2;
|
||||
if (_selectedSegment >= _segments.length)
|
||||
_selectedSegment = -1;
|
||||
|
||||
// Make space for/remove space used by dividers.
|
||||
var thickness = [self currentValueForThemeAttribute:@"divider-thickness"],
|
||||
delta = thickness * (dividersAfter - dividersBefore),
|
||||
frame = [self frame];
|
||||
frame = [self frame],
|
||||
widthOfAllSegments = 0,
|
||||
dividerExtraSpace = ([_segments count] - 1) * thickness;
|
||||
|
||||
if (delta)
|
||||
[self setFrameSize:CGSizeMake(frame.size.width + delta, frame.size.height)];
|
||||
for (var i = 0; i < [_segments count]; i++)
|
||||
widthOfAllSegments += [_segments[i] width];
|
||||
|
||||
[self setFrameSize:CGSizeMake(widthOfAllSegments + dividerExtraSpace, frame.size.height)];
|
||||
|
||||
[self tileWithChangedSegment:0];
|
||||
}
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
@import "CPPlatformWindow.j"
|
||||
@import "CPResponder.j"
|
||||
@import "CPScreen.j"
|
||||
#if PLATFORM(BROWSER)
|
||||
@import "CPPlatformWindow+DOM.j"
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
@@ -1859,9 +1856,16 @@ CPTexturedBackgroundWindowMask
|
||||
*/
|
||||
- (BOOL)canBecomeKeyWindow
|
||||
{
|
||||
// In Cocoa only resizable or titled windows return YES here by default. But the main browser window in Cappuccino
|
||||
// doesn't have these masks even that it's both titled and resizable, so we return YES when isFullPlatformWindow too.
|
||||
return (_styleMask & CPTitledWindowMask) || (_styleMask & CPResizableWindowMask) || [self isFullPlatformWindow];
|
||||
/*
|
||||
In Cocoa only titled windows return YES here by default. But the main browser
|
||||
window in Cappuccino doesn't have a title bar even that it's both titled and
|
||||
resizable, so we return YES when isFullPlatformWindow too.
|
||||
|
||||
Note that Cocoa will return NO for a non-titled, resizable window. The Cocoa documention
|
||||
says it will return YES if there is a "resize bar", but in practice
|
||||
that is not the same as the resizable mask.
|
||||
*/
|
||||
return (_styleMask & CPTitledWindowMask) || [self isFullPlatformWindow];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -2225,11 +2229,12 @@ CPTexturedBackgroundWindowMask
|
||||
*/
|
||||
- (BOOL)canBecomeMainWindow
|
||||
{
|
||||
// FIXME: Also check if we can resize and titlebar.
|
||||
if ([self isVisible])
|
||||
return YES;
|
||||
|
||||
return NO;
|
||||
// Note that the Cocoa documentation says that this method returns YES if
|
||||
// the window is visible and has a title bar or a "resize mechanism". It turns
|
||||
// out a "resize mechanism" is not the same as having the resize mask set.
|
||||
// In practice a window must have a title bar to become main, but we make
|
||||
// an exception for a full platform window.
|
||||
return ([self isVisible] && ((_styleMask & CPTitledWindowMask) || _isFullPlatformWindow));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
|
Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 274 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 84 B After Width: | Height: | Size: 83 B |
|
Before Width: | Height: | Size: 81 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 239 B After Width: | Height: | Size: 224 B |
|
Before Width: | Height: | Size: 325 B After Width: | Height: | Size: 303 B |
|
Before Width: | Height: | Size: 302 B After Width: | Height: | Size: 283 B |
|
Before Width: | Height: | Size: 86 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 84 B After Width: | Height: | Size: 83 B |
|
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 106 B |
|
Before Width: | Height: | Size: 208 B After Width: | Height: | Size: 189 B |
|
Before Width: | Height: | Size: 221 B After Width: | Height: | Size: 196 B |
|
Before Width: | Height: | Size: 223 B After Width: | Height: | Size: 205 B |
|
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 74 B After Width: | Height: | Size: 72 B |
|
Before Width: | Height: | Size: 80 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 86 B |
|
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 416 B After Width: | Height: | Size: 415 B |
|
Before Width: | Height: | Size: 150 B After Width: | Height: | Size: 138 B |
|
Before Width: | Height: | Size: 151 B After Width: | Height: | Size: 129 B |
|
Before Width: | Height: | Size: 151 B After Width: | Height: | Size: 134 B |
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 428 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 804 B |
|
Before Width: | Height: | Size: 175 B After Width: | Height: | Size: 160 B |
|
Before Width: | Height: | Size: 151 B After Width: | Height: | Size: 134 B |
|
Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 173 B |
|
Before Width: | Height: | Size: 123 B After Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 72 B After Width: | Height: | Size: 71 B |
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 92 B |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 232 B After Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 239 B After Width: | Height: | Size: 204 B |
|
Before Width: | Height: | Size: 232 B After Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 97 B After Width: | Height: | Size: 87 B |
|
Before Width: | Height: | Size: 91 B After Width: | Height: | Size: 84 B |
|
Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 122 B |
|
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 170 B After Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 148 B |
|
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 263 B |
|
Before Width: | Height: | Size: 88 B After Width: | Height: | Size: 85 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 76 B |
|
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 76 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 102 B |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 102 B |
|
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 101 B |
|
Before Width: | Height: | Size: 77 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 98 B |
|
Before Width: | Height: | Size: 79 B After Width: | Height: | Size: 76 B |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 102 B |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 102 B |
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 95 B |
|
Before Width: | Height: | Size: 78 B After Width: | Height: | Size: 75 B |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 96 B |
|
Before Width: | Height: | Size: 135 B After Width: | Height: | Size: 121 B |
|
Before Width: | Height: | Size: 78 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 95 B |
|
Before Width: | Height: | Size: 76 B After Width: | Height: | Size: 74 B |
|
Before Width: | Height: | Size: 101 B After Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 75 B After Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 94 B |
|
Before Width: | Height: | Size: 121 B After Width: | Height: | Size: 107 B |
|
Before Width: | Height: | Size: 123 B After Width: | Height: | Size: 107 B |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 75 B After Width: | Height: | Size: 73 B |