فهرست منبع

changes the cursor in the editor on ctrl to make it more obvious that it
is clickable.

Nicolas Petton 10 سال پیش
والد
کامیت
a81de26c46
4فایلهای تغییر یافته به همراه62 افزوده شده و 6 حذف شده
  1. 3 0
      css/helios.css
  2. 4 0
      css/helios.less
  3. 40 5
      src/Helios-Core.js
  4. 15 1
      src/Helios-Core.st

+ 3 - 0
css/helios.css

@@ -15,6 +15,9 @@ html[xmlns] .clearfix {
 * html .clearfix {
   height: 1%;
 }
+body.navigation .CodeMirror pre {
+  cursor: pointer !important;
+}
 .cm-s-helios.CodeMirror {
   font-family: Consolas, "Liberation Mono", Courier, monospace;
   line-height: 16px;

+ 4 - 0
css/helios.less

@@ -19,6 +19,10 @@ html[xmlns] .clearfix {
 	height: 1%;
 }
 
+body.navigation .CodeMirror pre {
+	cursor: pointer !important;
+}
+
 .cm-s-helios {
 	&.CodeMirror {
 		font-family: Consolas, "Liberation Mono", Courier, monospace;

+ 40 - 5
src/Helios-Core.js

@@ -3954,19 +3954,54 @@ protocol: 'initialization',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1,$2;
+var $1,$2,$3;
 self._registerServices();
-$1=self._keyBinder();
-_st($1)._setupEvents();
-$2=_st($1)._setupHelper();
+$1=self._setupEvents();
+$ctx1.sendIdx["setupEvents"]=1;
+$2=self._keyBinder();
+_st($2)._setupEvents();
+$3=_st($2)._setupHelper();
 return self}, function($ctx1) {$ctx1.fill(self,"setup",{},globals.HLManager)})},
 args: [],
-source: "setup\x0a\x09self registerServices.\x0a    self keyBinder \x0a\x09\x09setupEvents;\x0a\x09\x09setupHelper",
+source: "setup\x0a\x09self \x0a\x09\x09registerServices;\x0a\x09\x09setupEvents.\x0a    self keyBinder \x0a\x09\x09setupEvents;\x0a\x09\x09setupHelper",
 messageSends: ["registerServices", "setupEvents", "keyBinder", "setupHelper"],
 referencedClasses: []
 }),
 globals.HLManager);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "setupEvents",
+protocol: 'private',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3,$4;
+$1="body"._asJQuery();
+$ctx1.sendIdx["asJQuery"]=1;
+_st($1)._keydown_((function(event){
+return smalltalk.withContext(function($ctx2) {
+$2=_st(event)._ctrlKey();
+if(smalltalk.assert($2)){
+$3="body"._asJQuery();
+$ctx2.sendIdx["asJQuery"]=2;
+return _st($3)._addClass_("navigation");
+};
+}, function($ctx2) {$ctx2.fillBlock({event:event},$ctx1,1)})}));
+$4="body"._asJQuery();
+$ctx1.sendIdx["asJQuery"]=3;
+_st($4)._keyup_((function(event){
+return smalltalk.withContext(function($ctx2) {
+return _st("body"._asJQuery())._removeClass_("navigation");
+}, function($ctx2) {$ctx2.fillBlock({event:event},$ctx1,3)})}));
+return self}, function($ctx1) {$ctx1.fill(self,"setupEvents",{},globals.HLManager)})},
+args: [],
+source: "setupEvents\x0a\x09\x22on ctrl keydown, adds a 'navigation' css class to <body>\x0a\x09for the CodeMirror navigation links. See `HLCodeWidget`.\x22\x0a\x09\x0a\x09'body' asJQuery keydown: [ :event |\x0a\x09\x09event ctrlKey ifTrue: [\x0a\x09\x09\x09'body' asJQuery addClass: 'navigation' ] ].\x0a\x09\x09\x09\x0a\x09'body' asJQuery keyup: [ :event |\x0a\x09\x09'body' asJQuery removeClass: 'navigation' ]",
+messageSends: ["keydown:", "asJQuery", "ifTrue:", "ctrlKey", "addClass:", "keyup:", "removeClass:"],
+referencedClasses: []
+}),
+globals.HLManager);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "show:",

+ 15 - 1
src/Helios-Core.st

@@ -1245,7 +1245,9 @@ defaultEnvironment
 !HLManager methodsFor: 'initialization'!
 
 setup
-	self registerServices.
+	self 
+		registerServices;
+		setupEvents.
     self keyBinder 
 		setupEvents;
 		setupHelper
@@ -1259,6 +1261,18 @@ registerServices
 		registerErrorHandler;
 		registerProgressHandler;
 		registerTranscript
+!
+
+setupEvents
+	"on ctrl keydown, adds a 'navigation' css class to <body>
+	for the CodeMirror navigation links. See `HLCodeWidget`."
+	
+	'body' asJQuery keydown: [ :event |
+		event ctrlKey ifTrue: [
+			'body' asJQuery addClass: 'navigation' ] ].
+			
+	'body' asJQuery keyup: [ :event |
+		'body' asJQuery removeClass: 'navigation' ]
 ! !
 
 !HLManager methodsFor: 'rendering'!