mirror of
https://github.com/greenshot/greenshot
synced 2025-07-16 10:03:44 -07:00
First code analysis changes, this "should" make Greenshot more stable and implement things as is supposed.
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2481 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
3f4d93f2b6
commit
a394904aa3
64 changed files with 514 additions and 343 deletions
|
@ -320,7 +320,9 @@ namespace Greenshot.Drawing {
|
|||
set {
|
||||
drawingMode = value;
|
||||
if (drawingModeChanged != null) {
|
||||
drawingModeChanged.Invoke(this, drawingMode);
|
||||
SurfaceDrawingModeEventArgs eventArgs = new SurfaceDrawingModeEventArgs();
|
||||
eventArgs.DrawingMode = drawingMode;
|
||||
drawingModeChanged.Invoke(this, eventArgs);
|
||||
}
|
||||
DeselectAllElements();
|
||||
CreateUndrawnElement();
|
||||
|
@ -437,28 +439,35 @@ namespace Greenshot.Drawing {
|
|||
/// Will call the GarbageCollector to SuppressFinalize, preventing being cleaned twice
|
||||
/// </summary>
|
||||
public new void Dispose() {
|
||||
Count--;
|
||||
LOG.Debug("Disposing surface!");
|
||||
if (buffer != null) {
|
||||
buffer.Dispose();
|
||||
buffer = null;
|
||||
}
|
||||
if (transparencyBackgroundBrush != null) {
|
||||
transparencyBackgroundBrush.Dispose();
|
||||
transparencyBackgroundBrush = null;
|
||||
}
|
||||
|
||||
// Cleanup undo/redo stacks
|
||||
while (undoStack != null && undoStack.Count > 0) {
|
||||
undoStack.Pop().Dispose();
|
||||
}
|
||||
while (redoStack != null && redoStack.Count > 0) {
|
||||
redoStack.Pop().Dispose();
|
||||
}
|
||||
Dispose(true);
|
||||
base.Dispose();
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing) {
|
||||
Count--;
|
||||
LOG.Debug("Disposing surface!");
|
||||
if (buffer != null) {
|
||||
buffer.Dispose();
|
||||
buffer = null;
|
||||
}
|
||||
if (transparencyBackgroundBrush != null) {
|
||||
transparencyBackgroundBrush.Dispose();
|
||||
transparencyBackgroundBrush = null;
|
||||
}
|
||||
|
||||
// Cleanup undo/redo stacks
|
||||
while (undoStack != null && undoStack.Count > 0) {
|
||||
undoStack.Pop().Dispose();
|
||||
}
|
||||
while (redoStack != null && redoStack.Count > 0) {
|
||||
redoStack.Pop().Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Undo the last action
|
||||
/// </summary>
|
||||
|
@ -833,7 +842,7 @@ namespace Greenshot.Drawing {
|
|||
SetImage(newImage, false);
|
||||
Invalidate();
|
||||
if (surfaceSizeChanged != null && !imageRectangle.Equals(new Rectangle(Point.Empty, newImage.Size))) {
|
||||
surfaceSizeChanged(this);
|
||||
surfaceSizeChanged(this, null);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
|
@ -911,7 +920,7 @@ namespace Greenshot.Drawing {
|
|||
SetImage(tmpImage, false);
|
||||
elements.MoveBy(offset.X, offset.Y);
|
||||
if (surfaceSizeChanged != null && !imageRectangle.Equals(new Rectangle(Point.Empty, tmpImage.Size))) {
|
||||
surfaceSizeChanged(this);
|
||||
surfaceSizeChanged(this, null);
|
||||
}
|
||||
Invalidate();
|
||||
return true;
|
||||
|
@ -929,7 +938,7 @@ namespace Greenshot.Drawing {
|
|||
SetImage(previous, false);
|
||||
elements.MoveBy(offset.X, offset.Y);
|
||||
if (surfaceSizeChanged != null) {
|
||||
surfaceSizeChanged(this);
|
||||
surfaceSizeChanged(this, null);
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
|
@ -1295,7 +1304,9 @@ namespace Greenshot.Drawing {
|
|||
}
|
||||
selectedElements.Clear();
|
||||
if (movingElementChanged != null) {
|
||||
movingElementChanged(this, selectedElements);
|
||||
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
|
||||
eventArgs.Elements = selectedElements;
|
||||
movingElementChanged(this, eventArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1414,7 +1425,9 @@ namespace Greenshot.Drawing {
|
|||
selectedElements.Remove(container);
|
||||
FieldAggregator.UnbindElement(container);
|
||||
if (movingElementChanged != null) {
|
||||
movingElementChanged(this, selectedElements);
|
||||
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
|
||||
eventArgs.Elements = selectedElements;
|
||||
movingElementChanged(this, eventArgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1432,7 +1445,9 @@ namespace Greenshot.Drawing {
|
|||
FieldAggregator.UnbindElement(element);
|
||||
}
|
||||
if (movingElementChanged != null) {
|
||||
movingElementChanged(this, selectedElements);
|
||||
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
|
||||
eventArgs.Elements = selectedElements;
|
||||
movingElementChanged(this, eventArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1448,7 +1463,9 @@ namespace Greenshot.Drawing {
|
|||
container.Selected = true;
|
||||
FieldAggregator.BindElement(container);
|
||||
if (movingElementChanged != null) {
|
||||
movingElementChanged(this, selectedElements);
|
||||
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
|
||||
eventArgs.Elements = selectedElements;
|
||||
movingElementChanged(this, eventArgs);
|
||||
}
|
||||
container.Invalidate();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue