Browse Source

Do not activate list items on selection if the list already has the focus

Nicolas Petton 12 years ago
parent
commit
455832a30a
3 changed files with 96 additions and 60 deletions
  1. 37 21
      js/Helios-Browser.deploy.js
  2. 41 25
      js/Helios-Browser.js
  3. 18 14
      st/Helios-Browser.st

+ 37 - 21
js/Helios-Browser.deploy.js

@@ -492,7 +492,7 @@ smalltalk.method({
 selector: "onClassSelected:",
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aClass);
 $1=aClass;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -501,11 +501,15 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aClass);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aClass);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"]}),
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"]}),
 smalltalk.HLClassesListWidget);
 
 smalltalk.addMethod(
@@ -983,7 +987,7 @@ smalltalk.method({
 selector: "onMethodSelected:",
 fn: function (aMethod){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aMethod);
 $1=aMethod;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -992,11 +996,15 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aMethod);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aMethod);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"]}),
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"]}),
 smalltalk.HLMethodsListWidget);
 
 smalltalk.addMethod(
@@ -1298,13 +1306,17 @@ smalltalk.method({
 selector: "onPackageSelected:",
 fn: function (aPackage){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=self;
-_st($1)._selectedItem_(aPackage);
-_st($1)._activateItem_(aPackage);
-$2=_st($1)._focus();
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+_st(self)._selectedItem_(aPackage);
+$1=_st(self)._hasFocus();
+if(! smalltalk.assert($1)){
+$2=self;
+_st($2)._activateItem_(aPackage);
+$3=_st($2)._focus();
+$3;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onPackageSelected:",{aPackage:aPackage},smalltalk.HLPackagesListWidget)})},
-messageSends: ["selectedItem:", "activateItem:", "focus"]}),
+messageSends: ["selectedItem:", "ifFalse:", "activateItem:", "focus", "hasFocus"]}),
 smalltalk.HLPackagesListWidget);
 
 smalltalk.addMethod(
@@ -1480,7 +1492,7 @@ smalltalk.method({
 selector: "onProtocolSelected:",
 fn: function (aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aString);
 $1=aString;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -1489,11 +1501,15 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aString);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aString);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{aString:aString},smalltalk.HLProtocolsListWidget)})},
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"]}),
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"]}),
 smalltalk.HLProtocolsListWidget);
 
 smalltalk.addMethod(

+ 41 - 25
js/Helios-Browser.js

@@ -653,7 +653,7 @@ selector: "onClassSelected:",
 category: 'reactions',
 fn: function (aClass){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aClass);
 $1=aClass;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -662,13 +662,17 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aClass);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aClass);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onClassSelected:",{aClass:aClass},smalltalk.HLClassesListWidget)})},
 args: ["aClass"],
-source: "onClassSelected: aClass\x0a\x09self selectedItem: aClass.\x0a\x09aClass ifNil: [ ^ self ].\x0a    \x0a\x09self \x0a\x09\x09activateItem: aClass;\x0a\x09\x09focus",
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"],
+source: "onClassSelected: aClass\x0a\x09self selectedItem: aClass.\x0a\x09aClass ifNil: [ ^ self ].\x0a\x0a\x09self hasFocus ifFalse: [\x0a\x09\x09self \x0a\x09\x09\x09activateItem: aClass;\x0a\x09\x09\x09focus ]",
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"],
 referencedClasses: []
 }),
 smalltalk.HLClassesListWidget);
@@ -1279,7 +1283,7 @@ selector: "onMethodSelected:",
 category: 'reactions',
 fn: function (aMethod){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aMethod);
 $1=aMethod;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -1288,13 +1292,17 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aMethod);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aMethod);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onMethodSelected:",{aMethod:aMethod},smalltalk.HLMethodsListWidget)})},
 args: ["aMethod"],
-source: "onMethodSelected: aMethod\x0a\x09self selectedItem: aMethod.\x0a\x09aMethod ifNil: [ ^ self ].\x0a    \x0a    self \x0a\x09\x09activateItem: aMethod;\x0a\x09\x09focus",
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"],
+source: "onMethodSelected: aMethod\x0a\x09self selectedItem: aMethod.\x0a\x09aMethod ifNil: [ ^ self ].\x0a    \x0a\x09self hasFocus ifFalse: [\x0a\x09\x09self \x0a\x09\x09\x09activateItem: aMethod;\x0a\x09\x09\x09focus ]",
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"],
 referencedClasses: []
 }),
 smalltalk.HLMethodsListWidget);
@@ -1689,15 +1697,19 @@ selector: "onPackageSelected:",
 category: 'reactions',
 fn: function (aPackage){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2;
-$1=self;
-_st($1)._selectedItem_(aPackage);
-_st($1)._activateItem_(aPackage);
-$2=_st($1)._focus();
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3;
+_st(self)._selectedItem_(aPackage);
+$1=_st(self)._hasFocus();
+if(! smalltalk.assert($1)){
+$2=self;
+_st($2)._activateItem_(aPackage);
+$3=_st($2)._focus();
+$3;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onPackageSelected:",{aPackage:aPackage},smalltalk.HLPackagesListWidget)})},
 args: ["aPackage"],
-source: "onPackageSelected: aPackage\x0a\x09self \x0a\x09\x09selectedItem: aPackage;\x0a\x09\x09activateItem: aPackage;\x0a\x09\x09focus",
-messageSends: ["selectedItem:", "activateItem:", "focus"],
+source: "onPackageSelected: aPackage\x0a\x09self selectedItem: aPackage.\x0a\x09self hasFocus ifFalse: [\x0a\x09\x09self\x0a\x09\x09\x09activateItem: aPackage;\x0a\x09\x09\x09focus ]",
+messageSends: ["selectedItem:", "ifFalse:", "activateItem:", "focus", "hasFocus"],
 referencedClasses: []
 }),
 smalltalk.HLPackagesListWidget);
@@ -1921,7 +1933,7 @@ selector: "onProtocolSelected:",
 category: 'reactions',
 fn: function (aString){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4;
+return smalltalk.withContext(function($ctx1) { 
var $1,$2,$3,$4,$5;
 _st(self)._selectedItem_(aString);
 $1=aString;
 if(($receiver = $1) == nil || $receiver == undefined){
@@ -1930,13 +1942,17 @@ return $2;
 } else {
 $1;
 };
-$3=self;
-_st($3)._activateItem_(aString);
-$4=_st($3)._focus();
+$3=_st(self)._hasFocus();
+if(! smalltalk.assert($3)){
+$4=self;
+_st($4)._activateItem_(aString);
+$5=_st($4)._focus();
+$5;
+};
 return self}, function($ctx1) {$ctx1.fill(self,"onProtocolSelected:",{aString:aString},smalltalk.HLProtocolsListWidget)})},
 args: ["aString"],
-source: "onProtocolSelected: aString\x0a\x09self selectedItem: aString.\x0a\x09aString ifNil: [ ^ self ].\x0a    \x0a    self \x0a\x09\x09activateItem: aString;\x0a\x09\x09focus",
-messageSends: ["selectedItem:", "ifNil:", "activateItem:", "focus"],
+source: "onProtocolSelected: aString\x0a\x09self selectedItem: aString.\x0a\x09aString ifNil: [ ^ self ].\x0a    \x0a\x09self hasFocus ifFalse: [\x0a\x09\x09self \x0a\x09\x09\x09activateItem: aString;\x0a\x09\x09\x09focus ]",
+messageSends: ["selectedItem:", "ifNil:", "ifFalse:", "activateItem:", "focus", "hasFocus"],
 referencedClasses: []
 }),
 smalltalk.HLProtocolsListWidget);

+ 18 - 14
st/Helios-Browser.st

@@ -243,10 +243,11 @@ onClassRemoved: aClass
 onClassSelected: aClass
 	self selectedItem: aClass.
 	aClass ifNil: [ ^ self ].
-    
-	self 
-		activateItem: aClass;
-		focus
+
+	self hasFocus ifFalse: [
+		self 
+			activateItem: aClass;
+			focus ]
 !
 
 onClassesFocusRequested
@@ -481,9 +482,10 @@ onMethodSelected: aMethod
 	self selectedItem: aMethod.
 	aMethod ifNil: [ ^ self ].
     
-    self 
-		activateItem: aMethod;
-		focus
+	self hasFocus ifFalse: [
+		self 
+			activateItem: aMethod;
+			focus ]
 !
 
 onMethodsFocusRequested
@@ -581,10 +583,11 @@ selectItem: aPackage
 !HLPackagesListWidget methodsFor: 'reactions'!
 
 onPackageSelected: aPackage
-	self 
-		selectedItem: aPackage;
-		activateItem: aPackage;
-		focus
+	self selectedItem: aPackage.
+	self hasFocus ifFalse: [
+		self
+			activateItem: aPackage;
+			focus ]
 !
 
 onPackagesFocusRequested
@@ -699,9 +702,10 @@ onProtocolSelected: aString
 	self selectedItem: aString.
 	aString ifNil: [ ^ self ].
     
-    self 
-		activateItem: aString;
-		focus
+	self hasFocus ifFalse: [
+		self 
+			activateItem: aString;
+			focus ]
 !
 
 onProtocolsFocusRequested