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

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

@ -16,10 +16,11 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
protected Control control; protected Control control;
protected bool autoHide = true; bool autoHide = true;
protected bool showOnMouseMove = true; bool showOverlay = false;
protected bool showOnMouseDown = true; bool showOnMouseMove = true;
protected int activatorHeight = 1; bool showOnMouseDown = true;
int activatorHeight = 1;
protected bool mouseIn; protected bool mouseIn;
@ -29,16 +30,45 @@ namespace ICSharpCode.SharpDevelop.Gui
} }
set { set {
autoHide = value; autoHide = value;
RefreshSize(); Reformat();
} }
} }
protected virtual void RefreshSize() public bool ShowOverlay {
get {
return showOverlay;
}
set {
showOverlay = value;
Reformat();
}
}
protected virtual void Reformat()
{ {
if (autoHide) { if (autoHide) {
this.Height = activatorHeight; if (showOverlay) {
this.Controls.Clear(); // 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 { } else {
// Permanently shown
this.Height = PreferredHeight; this.Height = PreferredHeight;
control.Dock = DockStyle.Fill; control.Dock = DockStyle.Fill;
this.Controls.Add(control); this.Controls.Add(control);
@ -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 { public bool ShowOnMouseMove {
get { get {
return showOnMouseMove; return showOnMouseMove;
@ -86,63 +138,5 @@ namespace ICSharpCode.SharpDevelop.Gui
activatorHeight = value; 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
Padding? defaultPadding; Padding? defaultPadding;
public override bool AutoHide { protected override void Reformat()
get { {
return base.AutoHide; if (defaultPadding == null) {
} defaultPadding = ((MenuStrip)control).Padding;
set {
if (defaultPadding == null) {
defaultPadding = ((MenuStrip)control).Padding;
}
((MenuStrip)control).Padding = value?Padding.Empty:(Padding)defaultPadding;
base.AutoHide = value;
} }
((MenuStrip)control).Padding = AutoHide ? Padding.Empty : (Padding)defaultPadding;
base.Reformat();
} }
public AutoHideMenuStripContainer(MenuStrip menuStrip):base(menuStrip) public AutoHideMenuStripContainer(MenuStrip menuStrip):base(menuStrip)
@ -51,29 +47,14 @@ namespace ICSharpCode.SharpDevelop.Gui
void AddEventHandlersForItem(ToolStripMenuItem menuItem) void AddEventHandlersForItem(ToolStripMenuItem menuItem)
{ {
menuItem.DropDownOpened += OnDropDownOpened; menuItem.DropDownOpened += delegate { dropDownOpened = true; };
menuItem.DropDownClosed += OnDropDownClosed; menuItem.DropDownClosed += delegate { dropDownOpened = false; if (!mouseIn) ShowOverlay = false; };
}
void OnDropDownOpened(object sender, EventArgs e)
{
dropDownOpened = true;
}
void OnDropDownClosed(object sender, EventArgs e)
{
dropDownOpened = false;
if (!mouseIn) {
HideOverlay();
}
} }
protected override void OnControlMouseLeave(object sender, EventArgs e) protected override void OnControlMouseLeave(object sender, EventArgs e)
{ {
mouseIn = false; mouseIn = false;
if (!dropDownOpened) { if (!dropDownOpened) ShowOverlay = false;
HideOverlay();
}
} }
} }
} }

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

@ -22,12 +22,18 @@ namespace ICSharpCode.SharpDevelop.Gui
{ {
statusStrip.AutoSize = false; statusStrip.AutoSize = false;
statusStrip.MouseMove += StatusStripMouseMove; 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) void StatusStripMouseMove(object sender, MouseEventArgs e)
{ {
if (e.Y < control.Height - 3) { if (e.Y < control.Height / 2) {
HideOverlay(); ShowOverlay = false;
} }
} }
} }

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

@ -118,13 +118,23 @@ namespace ICSharpCode.SharpDevelop.Gui
void TrackFullscreenPropertyChanges(object sender, PropertyChangedEventArgs e) 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) { switch (e.Key) {
case "HideMainMenu": case "HideMainMenu":
case "ShowMainMenuOnMouseMove":
RedrawMainMenu();
break;
case "HideToolbars": case "HideToolbars":
RedrawToolbars();
break;
//case "HideTabs":
//case "HideVerticalScrollbar":
//case "HideHorizontalScrollbar":
case "HideStatusBar": case "HideStatusBar":
RedrawAllComponents(); case "ShowStatusBarOnMouseMove":
RedrawStatusBar();
break; break;
//case "HideWindowsTaskbar":
} }
} }
} }

Loading…
Cancel
Save