Selaa lähdekoodia

Add "modKey"+tab support to switch to last file

Ronny Otto 6 vuotta sitten
vanhempi
commit
3d5e10d415
2 muutettua tiedostoa jossa 48 lisäystä ja 1 poistoa
  1. 1 0
      default.language.ini
  2. 47 1
      maxide.bmx

+ 1 - 0
default.language.ini

@@ -250,6 +250,7 @@ menu_file_saveas                             = "Save &As"
 menu_file_saveall                            = "Save A&ll"
 menu_file_nexttab                            = "&Next Tab"
 menu_file_prevtab                            = "&Previous Tab"
+menu_file_lasttab                            = "Last Tab"
 menu_file_importbb                           = "Import BB Project..."
 menu_file_ideoptions                         = "IDE Options"
 menu_file_projectmanager                     = "&Project Manager"

+ 47 - 1
maxide.bmx

@@ -209,6 +209,7 @@ Const MENUARM64ENABLED=100
 
 Const MENUMISC=140
 Const MENUUPXENABLED=141
+Const MENULAST=142
 
 Const MENUAPPSTUB=160
 
@@ -236,6 +237,10 @@ Const TB_CONTINUE=20
 Const TAB$=Chr(9)
 Const QUOTES$=Chr(34)
 
+'values assigned for the shortcut (OS specific)
+Global lastTabKey:int
+Global lastTabMod:int
+
 Global TEMPCOUNT
 Global codeplay:TCodePlay
 
@@ -5145,6 +5150,12 @@ Type TOpenCode Extends TToolPanel
 ?MacOS
 		If key=25 And mods=MODIFIER_SHIFT key=KEY_TAB
 ?
+		'ignore panel-tabbing
+		If id=EVENT_KEYCHAR And this And key=lastTabKey And mods=lastTabMod
+			this.host.SwitchPanel()
+			Return 0
+		EndIf
+		
 		If id=EVENT_KEYCHAR And this And key=KEY_TAB And Not TextAreaHasBlockIndent(this.textarea) And TextAreaSelLen( this.textarea,TEXTAREA_CHARS )
 			Select mods
 				Case MODIFIER_NONE
@@ -5688,6 +5699,7 @@ Type TCodePlay
 	Field panels:TToolPanel[]
 	Field helppanel:THelpPanel
 	Field currentpanel:TToolPanel
+	Field lastPanel:TToolPanel
 	Field output:TOutputPanel
 	Field lockedpanel:TToolPanel
 	Field activepanel:TToolPanel
@@ -6479,8 +6491,29 @@ Type TCodePlay
 		SetGadgetText window,"MaxIDE"+title
 	End Method
 
+
+	Method SwitchPanel()
+		If Not currentpanel Then Return
+
+		'if there was no panel selected before, use the previous one 
+		If Not lastPanel or lastPanel = currentPanel
+			print "find last Panel"
+			Local prevIndex:int = currentpanel.index - 1
+			'do not tab to "help" (= 0)
+			If prevIndex < 0 Then prevIndex = panels.length-1
+			lastPanel = panels[prevIndex]
+		EndIf
+
+		If lastPanel Then SelectPanel(lastPanel)
+	End Method
+
 	Method SelectPanel(panel:TToolPanel)
-		Local	curr:TToolPanel = currentpanel
+		Local curr:TToolPanel = currentpanel
+
+		If Not lastPanel Or lastPanel <> currentpanel
+			lastPanel = currentpanel
+		EndIf
+
 		currentpanel=panel
 		If curr And curr<>currentpanel
 			SelectGadgetItem tabbar,panel.index
@@ -6838,14 +6871,24 @@ Type TCodePlay
 ?MacOS
 			CreateMenu "{{menu_file_nexttab}}",MENUNEXT,file,KEY_RIGHT,MENUMOD
 			CreateMenu "{{menu_file_prevtab}}",MENUPREV,file,KEY_LEFT,MENUMOD
+			lastTabKey = KEY_TAB
+			lastTabMod = MENUMOD
 ?Not MacOS
 			CreateMenu "{{menu_file_nexttab}}",MENUNEXT,file,KEY_RIGHT,MODIFIER_ALT
 			CreateMenu "{{menu_file_prevtab}}",MENUPREV,file,KEY_LEFT,MODIFIER_ALT
+			lastTabKey = KEY_TAB
+			lastTabMod = MODIFIER_CONTROL
 ?
 		Else
 			CreateMenu "{{menu_file_nexttab}}",MENUNEXT,file,KEY_RIGHT,MENUMOD
 			CreateMenu "{{menu_file_prevtab}}",MENUPREV,file,KEY_LEFT,MENUMOD
+			CreateMenu "{{menu_file_lasttab}}",MENULAST,file,KEY_TAB,MENUMOD
+			lastTabKey = KEY_TAB
+			lastTabMod = MENUMOD
 		EndIf
+		CreateMenu "{{menu_file_lasttab}}",MENULAST,file,lastTabKey,lastTabMod
+
+
 		CreateMenu "",0,file
 		CreateMenu "{{menu_file_importbb}}",MENUIMPORTBB,file
 		CreateMenu "",0,file
@@ -7386,6 +7429,9 @@ Type TCodePlay
 				If index<0 index=panels.length-1
 				SelectPanel panels[index]
 
+			Case MENULAST
+				SwitchPanel()
+
 			Case MENUQUICKHELP
 				currentpanel.invoke TOOLHELP