internal override void DrawReversibleRectangle(IntPtr handle, Rectangle rect, int line_width) {
Rectangle size_rect = rect;
int new_x = 0;
int new_y = 0;
if (ReverseWindowMapped) {
HideWindow (ReverseWindow);
ReverseWindowMapped = false;
} else {
ClientToScreen(handle, ref new_x, ref new_y);
size_rect.X += new_x;
size_rect.Y += new_y;
SizeWindow (size_rect, ReverseWindow);
ShowWindow (ReverseWindow);
rect.X = 0;
rect.Y = 0;
rect.Width -= 1;
rect.Height -= 1;
Graphics g = Graphics.FromHwnd (HIViewGetRoot (ReverseWindow));
for (int i = 0; i < line_width; i++) {
g.DrawRectangle (ThemeEngine.Current.ResPool.GetPen (Color.Black), rect);
rect.X += 1;
rect.Y += 1;
rect.Width -= 1;
rect.Height -= 1;
}
g.Flush ();
g.Dispose ();
ReverseWindowMapped = true;
}
}
#endregion