Browse Source

Keyboard short-cuts work in fullscreen (SD2-707);

Disabled unimplemented fullscreen features;

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1273 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
f7b2d83551
  1. 4
      src/Main/Base/Project/Resources/FullscreenPanel.xfrm
  2. 126
      src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideContainer.cs
  3. 37
      src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideMenuStripContainer.cs
  4. 10
      src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideStatusStripContainer.cs
  5. 14
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs

4
src/Main/Base/Project/Resources/FullscreenPanel.xfrm

@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
<TabIndex value="4" />
<Size value="{Width=340, Height=20}" />
<Anchor value="Top, Left, Right" />
<Enabled value="False" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="HideVerticalScrollbarCheckBox" />
@ -50,6 +51,7 @@ @@ -50,6 +51,7 @@
<TabIndex value="5" />
<Size value="{Width=340, Height=20}" />
<Anchor value="Top, Left, Right" />
<Enabled value="False" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="HideHorizontalScrollbarCheckBox" />
@ -58,6 +60,7 @@ @@ -58,6 +60,7 @@
<TabIndex value="6" />
<Size value="{Width=340, Height=20}" />
<Anchor value="Top, Left, Right" />
<Enabled value="False" />
</System.Windows.Forms.CheckBox>
<System.Windows.Forms.CheckBox>
<Name value="HideStatusBarCheckBox" />
@ -82,6 +85,7 @@ @@ -82,6 +85,7 @@
<TabIndex value="9" />
<Size value="{Width=340, Height=24}" />
<Anchor value="Top, Left, Right" />
<Enabled value="False" />
</System.Windows.Forms.CheckBox>
</Controls>
</System.Windows.Forms.UserControl>

126
src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideContainer.cs

@ -16,10 +16,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -16,10 +16,11 @@ namespace ICSharpCode.SharpDevelop.Gui
{
protected Control control;
protected bool autoHide = true;
protected bool showOnMouseMove = true;
protected bool showOnMouseDown = true;
protected int activatorHeight = 1;
bool autoHide = true;
bool showOverlay = false;
bool showOnMouseMove = true;
bool showOnMouseDown = true;
int activatorHeight = 1;
protected bool mouseIn;
@ -29,16 +30,45 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -29,16 +30,45 @@ namespace ICSharpCode.SharpDevelop.Gui
}
set {
autoHide = value;
RefreshSize();
Reformat();
}
}
protected virtual void RefreshSize()
public bool ShowOverlay {
get {
return showOverlay;
}
set {
showOverlay = value;
Reformat();
}
}
protected virtual void Reformat()
{
if (autoHide) {
this.Height = activatorHeight;
this.Controls.Clear();
if (showOverlay) {
// Show as overlay
this.Height = activatorHeight;
control.Dock = DockStyle.None;
control.Size = new Size(this.Width, control.PreferredSize.Height);
if (this.Dock != DockStyle.Bottom) {
control.Location = new Point(this.Left, this.Top);
} else {
control.Location = new Point(this.Left, this.Top - control.PreferredSize.Height + 1);
}
Parent.Controls.Add(control);
control.BringToFront();
} else {
// Hidden
this.Height = activatorHeight;
control.Dock = DockStyle.None;
control.Size = new Size(this.Width, 1);
control.Location = new Point(0, activatorHeight);
this.Controls.Add(control);
}
} else {
// Permanently shown
this.Height = PreferredHeight;
control.Dock = DockStyle.Fill;
this.Controls.Add(control);
@ -51,6 +81,28 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -51,6 +81,28 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public AutoHideContainer(Control control)
{
if (control == null) throw new ArgumentNullException("control");
this.control = control;
this.MouseMove += delegate { if (showOnMouseMove) ShowOverlay = true; };
this.MouseDown += delegate { if (showOnMouseDown) ShowOverlay = true; };
control.MouseEnter += OnControlMouseEnter;
control.MouseLeave += OnControlMouseLeave;
Reformat();
}
protected virtual void OnControlMouseEnter(object sender, EventArgs e)
{
mouseIn = true;
}
protected virtual void OnControlMouseLeave(object sender, EventArgs e)
{
mouseIn = false;
ShowOverlay = false;
}
public bool ShowOnMouseMove {
get {
return showOnMouseMove;
@ -86,63 +138,5 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -86,63 +138,5 @@ namespace ICSharpCode.SharpDevelop.Gui
activatorHeight = value;
}
}
public AutoHideContainer(Control control)
{
if (control == null) {
throw new ArgumentNullException("control");
}
this.control = control;
RefreshSize();
this.MouseMove += OnPanelMouseMove;
this.MouseDown += OnPanelMouseDown;
control.MouseEnter += OnControlMouseEnter;
control.MouseLeave += OnControlMouseLeave;
}
protected virtual void OnPanelMouseMove(object sender, MouseEventArgs e)
{
if (showOnMouseMove && autoHide) {
ShowOverlay();
}
}
protected virtual void OnPanelMouseDown(object sender, MouseEventArgs e)
{
if (showOnMouseDown && autoHide) {
ShowOverlay();
}
}
protected virtual void OnControlMouseEnter(object sender, EventArgs e)
{
mouseIn = true;
}
protected virtual void OnControlMouseLeave(object sender, EventArgs e)
{
mouseIn = false;
HideOverlay();
}
public virtual void ShowOverlay()
{
control.Dock = DockStyle.None;
control.Size = new Size(this.Width, control.PreferredSize.Height);
if (this.Dock != DockStyle.Bottom) {
control.Location = new Point(this.Left, this.Top);
} else {
control.Location = new Point(this.Left, this.Top - control.PreferredSize.Height + 1);
}
Parent.Controls.Add(control);
control.BringToFront();
}
public virtual void HideOverlay()
{
if (Parent.Controls.Contains(control)) {
Parent.Controls.Remove(control);
}
}
}
}

37
src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideMenuStripContainer.cs

@ -22,17 +22,13 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -22,17 +22,13 @@ namespace ICSharpCode.SharpDevelop.Gui
Padding? defaultPadding;
public override bool AutoHide {
get {
return base.AutoHide;
}
set {
if (defaultPadding == null) {
defaultPadding = ((MenuStrip)control).Padding;
}
((MenuStrip)control).Padding = value?Padding.Empty:(Padding)defaultPadding;
base.AutoHide = value;
protected override void Reformat()
{
if (defaultPadding == null) {
defaultPadding = ((MenuStrip)control).Padding;
}
((MenuStrip)control).Padding = AutoHide ? Padding.Empty : (Padding)defaultPadding;
base.Reformat();
}
public AutoHideMenuStripContainer(MenuStrip menuStrip):base(menuStrip)
@ -51,29 +47,14 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -51,29 +47,14 @@ namespace ICSharpCode.SharpDevelop.Gui
void AddEventHandlersForItem(ToolStripMenuItem menuItem)
{
menuItem.DropDownOpened += OnDropDownOpened;
menuItem.DropDownClosed += OnDropDownClosed;
}
void OnDropDownOpened(object sender, EventArgs e)
{
dropDownOpened = true;
}
void OnDropDownClosed(object sender, EventArgs e)
{
dropDownOpened = false;
if (!mouseIn) {
HideOverlay();
}
menuItem.DropDownOpened += delegate { dropDownOpened = true; };
menuItem.DropDownClosed += delegate { dropDownOpened = false; if (!mouseIn) ShowOverlay = false; };
}
protected override void OnControlMouseLeave(object sender, EventArgs e)
{
mouseIn = false;
if (!dropDownOpened) {
HideOverlay();
}
if (!dropDownOpened) ShowOverlay = false;
}
}
}

10
src/Main/Base/Project/Src/Gui/Components/AutoHide/AutoHideStatusStripContainer.cs

@ -22,12 +22,18 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -22,12 +22,18 @@ namespace ICSharpCode.SharpDevelop.Gui
{
statusStrip.AutoSize = false;
statusStrip.MouseMove += StatusStripMouseMove;
statusStrip.ItemAdded += delegate(object sender, ToolStripItemEventArgs e) {
e.Item.MouseMove += StatusStripMouseMove;
};
foreach(ToolStripItem i in statusStrip.Items) {
i.MouseMove += StatusStripMouseMove;
}
}
void StatusStripMouseMove(object sender, MouseEventArgs e)
{
if (e.Y < control.Height - 3) {
HideOverlay();
if (e.Y < control.Height / 2) {
ShowOverlay = false;
}
}
}

14
src/Main/Base/Project/Src/Gui/Workbench/Layouts/SdiWorkspaceLayout.cs

@ -118,13 +118,23 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -118,13 +118,23 @@ namespace ICSharpCode.SharpDevelop.Gui
void TrackFullscreenPropertyChanges(object sender, PropertyChangedEventArgs e)
{
if (e.OldValue != e.NewValue && wbForm.FullScreen) {
if (!Boolean.Equals(e.OldValue, e.NewValue) && wbForm.FullScreen) {
switch (e.Key) {
case "HideMainMenu":
case "ShowMainMenuOnMouseMove":
RedrawMainMenu();
break;
case "HideToolbars":
RedrawToolbars();
break;
//case "HideTabs":
//case "HideVerticalScrollbar":
//case "HideHorizontalScrollbar":
case "HideStatusBar":
RedrawAllComponents();
case "ShowStatusBarOnMouseMove":
RedrawStatusBar();
break;
//case "HideWindowsTaskbar":
}
}
}

Loading…
Cancel
Save