Esempio n. 1
0
		public void InternalOnMouseDown(MouseEventArgs e)
		{
			HideToolTip();
			if(this.HasNavigationBox && m_TabSystemBox.Visible && m_TabSystemBox.DisplayRectangle.Contains(e.X,e.Y))
			{
				m_TabSystemBox.MouseDown(e);
				return;
			}
            _MouseDownPoint = new Point(e.X, e.Y);
			if(e.Button==MouseButtons.Left)
			{
				Rectangle rSelected=this.GetSelectedTabRectangle();
				foreach(TabItem tab in m_Tabs)
				{
					if((tab.DisplayRectangle.Contains(new Point(e.X,e.Y)) || rSelected.Contains(e.X,e.Y)) && tab.Visible)
					{
						TabItem newSelected=tab;
						if(rSelected.Contains(e.X,e.Y))
							newSelected=m_SelectedTab;
                        
						if(m_SelectedTab!=newSelected)
						{
							TabItem oldTab=m_SelectedTab;
							if(SelectedTabChanging!=null)
							{
								TabStripTabChangingEventArgs eventData=new TabStripTabChangingEventArgs(m_SelectedTab,newSelected,eEventSource.Mouse);
								SelectedTabChanging(this,eventData);
								if(eventData.Cancel)
									break;
							}
							
							this.InvokeBeforeTabDisplay(newSelected);
							
							if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null && ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Focused)
							{
								this.Focus();
							}
							if(m_SelectedTab.AttachedItem!=null)
								m_SelectedTab.AttachedItem.Displayed=false;
							else if(m_SelectedTab.AttachedControl!=null && !m_MdiTabbedDocuments)
							{
								//if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel))
									m_SelectedTab.AttachedControl.Visible=false;
							}
							m_SelectedTab=newSelected;
							m_NeedRecalcSize=true;
							EnsureVisible(m_SelectedTab);
							if(m_SelectedTab.AttachedItem!=null)
							{
								m_SelectedTab.AttachedItem.Displayed=true;
								if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null)
								{
                                    if(m_AutoSelectAttachedControl)
									    ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select();
								}
							}
							else if(m_SelectedTab.AttachedControl!=null)
							{
								if(!m_MdiTabbedDocuments)
								{
									//if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel))
										m_SelectedTab.AttachedControl.Visible=true;
                                    if (m_AutoSelectAttachedControl)
										m_SelectedTab.AttachedControl.Select();

								}
								else if(m_SelectedTab.AttachedControl is Form)
								{
									MdiClient client=this.GetMdiClient(m_MdiForm);
									bool bSetRedraw=false;
									Form oldActive=m_MdiForm.ActiveMdiChild;

									if(client!=null && m_MdiNoFormActivateFlicker && m_SelectedTab.AttachedControl is Form && (((Form)m_SelectedTab.AttachedControl).WindowState==FormWindowState.Maximized || oldActive!=null && oldActive.WindowState==FormWindowState.Maximized))
									{
										NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,0,0);
										bSetRedraw=true;
									}

									((Form)m_SelectedTab.AttachedControl).Activate();
									//if(m_TabSystemBox!=null)
									//	m_TabSystemBox.CloseVisible=((Form)m_SelectedTab.AttachedControl).ControlBox;

									if(bSetRedraw)
									{
										NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,1,0);
										client.Refresh();
									}

									if(oldActive!=null && oldActive.WindowState==FormWindowState.Normal)
									{
										if(BarFunctions.ThemedOS)
										{
											// This will force repaint of Title bar since there were some repainting issues with it...
                                            string s = oldActive.Text; // GetFormText(oldActive);
											oldActive.Text=s+" ";
											oldActive.Text=s;
										}
									}
								}
							}

							this.Invalidate();

							if(SelectedTabChanged!=null)
							{
								TabStripTabChangedEventArgs eventData=new TabStripTabChangedEventArgs(oldTab,m_SelectedTab,eEventSource.Mouse);
								SelectedTabChanged(this,eventData);
							}
						}
                        else if (m_SelectedTab != null && m_SelectedTab.AttachedItem is DockContainerItem && m_SelectedTab.AttachedItem.ContainerControl is Bar && ((Bar)m_SelectedTab.AttachedItem.ContainerControl).DockSide == eDockSide.Document &&
                            ((DockContainerItem)m_SelectedTab.AttachedItem).Control != null)
                        {
                            if (m_AutoSelectAttachedControl)
                                ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select();
                        }
                        
						break;
					}
				}
			}

            // Invoke TabItem events.
            TabItem tabAt = HitTest(e.X, e.Y);
            if (tabAt != null)
            {
                tabAt.InvokeMouseDown(e);
            }
		}
Esempio n. 2
0
 private void TabStripTabChanging(object sender, TabStripTabChangingEventArgs e)
 {
     if (m_RefreshingDockTab)
         return;
     e.Cancel = InvokeDockTabChange((e.OldTab == null ? null : e.OldTab.AttachedItem), (e.NewTab == null ? null : e.NewTab.AttachedItem));
 }
Esempio n. 3
0
		private void SelectTab(TabItem value, eEventSource eventSource)
		{
			if(m_SelectedTab==value)
				return;
			TabItem oldTab=m_SelectedTab;

			if(SelectedTabChanging!=null)
			{
                TabStripTabChangingEventArgs eventData = new TabStripTabChangingEventArgs(m_SelectedTab, value, eventSource);
				SelectedTabChanging(this,eventData);
				if(eventData.Cancel)
					return;
			}

			InvokeBeforeTabDisplay(value);

			Control hideControl=null;

			if(m_SelectedTab!=null && m_SelectedTab.AttachedItem!=null)
				m_SelectedTab.AttachedItem.Displayed=false;
			else if(m_SelectedTab!=null && m_SelectedTab.AttachedControl!=null)
			{
				if(!m_MdiTabbedDocuments)
					hideControl=m_SelectedTab.AttachedControl;
			}
					
			m_SelectedTab=value;
			m_NeedRecalcSize=true;

			EnsureVisible(m_SelectedTab);

			if(m_SelectedTab!=null && m_SelectedTab.AttachedItem!=null)
			{
				m_SelectedTab.AttachedItem.Displayed=true;
				if(m_SelectedTab.AttachedItem is DockContainerItem && ((DockContainerItem)m_SelectedTab.AttachedItem).Control!=null)
				{
                    if(m_AutoSelectAttachedControl)
					    ((DockContainerItem)m_SelectedTab.AttachedItem).Control.Select();
				}
			}
			else if(m_SelectedTab!=null && m_SelectedTab.AttachedControl!=null)
			{
				if(!m_MdiTabbedDocuments)
				{
					//if(!(this.IsDesignMode && m_SelectedTab.AttachedControl is TabControlPanel))
						m_SelectedTab.AttachedControl.Visible=true;
                        if (m_AutoSelectAttachedControl && !(this.TabStop && this.Parent is TabControl && this.Focused && eventSource == eEventSource.Keyboard))
                            m_SelectedTab.AttachedControl.Select();
					if(hideControl==m_SelectedTab.AttachedControl)
						hideControl=null;
				}
				else if(m_SelectedTab.AttachedControl is Form)
				{
					MdiClient client=this.GetMdiClient(m_MdiForm);
					bool bSetRedraw=false;
					Form oldActive=m_MdiForm.ActiveMdiChild;

					if(client!=null && m_MdiNoFormActivateFlicker && m_SelectedTab.AttachedControl is Form && (((Form)m_SelectedTab.AttachedControl).WindowState==FormWindowState.Maximized || oldActive!=null && oldActive.WindowState==FormWindowState.Maximized))
					{
						NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,0,0);
						bSetRedraw=true;
					}

					((Form)m_SelectedTab.AttachedControl).Activate();
					//if(m_TabSystemBox!=null)
					//	m_TabSystemBox.CloseVisible=((Form)m_SelectedTab.AttachedControl).ControlBox;

					if(bSetRedraw)
					{
						NativeFunctions.SendMessage(client.Handle,NativeFunctions.WM_SETREDRAW,1,0);
						client.Refresh();
					}

					if(oldActive!=null && oldActive.WindowState==FormWindowState.Normal)
					{
						if(BarFunctions.ThemedOS)
						{
							// This will force repaint of Title bar since there were some repainting issues with it...
                            string s = oldActive.Text; // GetFormText(oldActive);
							oldActive.Text=s+" ";
							oldActive.Text=s;
						}
					}
				}
			}
			if(hideControl!=null)
			{
				//if(!(this.IsDesignMode && hideControl is TabControlPanel))
					hideControl.Visible=false;
			}
			this.Invalidate();
			
			if(SelectedTabChanged!=null)
			{
                TabStripTabChangedEventArgs eventData = new TabStripTabChangedEventArgs(oldTab, m_SelectedTab, eventSource);
				SelectedTabChanged(this,eventData);
			}
		}