rsence-pre 3.0.0.5 → 3.0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/client/conf/client_pkg.yaml +8 -8
  4. data/client/js/chat/speech_bubble/themes/default/speech_bubble.css +3 -3
  5. data/client/js/controls/button/button.coffee +45 -0
  6. data/client/js/controls/button/themes/default/button.css +39 -72
  7. data/client/js/controls/button/themes/default/button.html +14 -4
  8. data/client/js/controls/checkbox/checkbox.js +9 -8
  9. data/client/js/controls/checkbox/themes/default/checkbox.css +1 -1
  10. data/client/js/controls/checkbox/themes/default/checkbox.html +1 -0
  11. data/client/js/controls/clickbutton/clickbutton.coffee +44 -0
  12. data/client/js/controls/onoffbutton/themes/default/onoffbutton.css +20 -19
  13. data/client/js/controls/onoffbutton/themes/default/onoffbutton.html +1 -4
  14. data/client/js/controls/radiobutton/themes/default/radiobutton.css +1 -1
  15. data/client/js/controls/radiobutton/themes/default/radiobutton.html +1 -0
  16. data/client/js/controls/searchfield/searchfield.coffee +1 -1
  17. data/client/js/controls/searchfield/themes/default/searchfield.css +1 -1
  18. data/client/js/controls/stringview/themes/default/stringview.css +1 -1
  19. data/client/js/controls/tab/tab.js +17 -17
  20. data/client/js/controls/tab/themes/default/tab.css +16 -16
  21. data/client/js/controls/tab/themes/default/tab.html +1 -1
  22. data/client/js/controls/textarea/textarea.js +1 -1
  23. data/client/js/controls/textarea/themes/default/textarea.css +1 -1
  24. data/client/js/controls/textcontrol/themes/default/textcontrol.css +1 -2
  25. data/client/js/controls/uploader/themes/default/uploader.css +10 -62
  26. data/client/js/controls/uploader/themes/default/uploader.html +31 -25
  27. data/client/js/controls/uploader/uploader.coffee +10 -7
  28. data/client/js/controls/window/themes/default/window.css +2 -4
  29. data/client/js/core/elem/elem.coffee +4 -4
  30. data/client/js/core/event/event.js +11 -11
  31. data/client/js/datetime/calendar/themes/default/calendar.css +3 -3
  32. data/client/js/foundation/eventmanager/eventmanager.coffee +44 -1
  33. data/client/js/foundation/thememanager/thememanager.coffee +30 -17
  34. data/client/js/foundation/view/view.js +194 -192
  35. data/client/js/menus/menuitem/themes/default/menuitem.css +1 -1
  36. data/client/js/menus/minimenu/themes/default/minimenu.css +1 -1
  37. data/client/js/menus/minimenuitem/themes/default/minimenuitem.css +1 -1
  38. data/client/js/menus/popupmenu/themes/default/popupmenu.css +1 -1
  39. data/plugins/client_pkg/lib/client_pkg_build.rb +54 -53
  40. data/plugins/main/tmpl/index.html +1 -1
  41. metadata +4 -5
  42. data/client/js/controls/button/button.js +0 -78
  43. data/client/js/controls/button/themes/default/button_parts1.png +0 -0
  44. data/client/js/foundation/view/markupview/markupview.js +0 -95
@@ -1,7 +1,7 @@
1
1
  /* tab bar */
2
2
  .tab_label {
3
3
  position: absolute;
4
- top: 0px; left: 0px right: 0px; height: 24px;
4
+ top: 0; left: 0; right: 0; height: 24px;
5
5
  cursor: pointer;
6
6
  }
7
7
 
@@ -9,7 +9,7 @@
9
9
  .tab_label .item_fg,
10
10
  .tab_label .item_bg {
11
11
  position: absolute;
12
- top: 0px; height: 24px;
12
+ top: 0; height: 24px;
13
13
  background-repeat: repeat-x;
14
14
  }
15
15
  .tab_label,
@@ -22,33 +22,33 @@
22
22
  }
23
23
  .tab_label_fill_bg {
24
24
  position: absolute;
25
- top: 0px; left: 0px; right: 0px; height: 24px;
26
- background-position: 0px -96px;
25
+ top: 0; left: 0; right: 0; height: 24px;
26
+ background-position: 0 -96px;
27
27
  background-repeat: repeat-x;
28
28
  }
29
29
 
30
30
  .tab_label .edge_left {
31
31
  position: absolute;
32
- top: 0px; left: 0px; width: 12px; height: 24px;
33
- background-position: 0px 0px;
32
+ top: 0; left: 0; width: 12px; height: 24px;
33
+ background-position: 0 0;
34
34
  }
35
35
  .tab_label .item_bg .edge_left {
36
- background-position: -24px 0px;
36
+ background-position: -24px 0;
37
37
  }
38
38
 
39
39
  .tab_label .edge_right {
40
40
  position: absolute;
41
- top: 0px; right: 0px; width: 9px; height: 24px;
42
- background-position: -12px 0px;
41
+ top: 0; right: 0; width: 9px; height: 24px;
42
+ background-position: -12px 0;
43
43
  }
44
44
  .tab_label .item_bg .edge_right {
45
- background-position: -36px 0px;
45
+ background-position: -36px 0;
46
46
  }
47
47
 
48
48
  .tab_label .tablabel {
49
49
  position: absolute;
50
- top: 0px; left: 12px; right: 9px; height: 24px;
51
- background-position: 0px -24px;
50
+ top: 0; left: 12px; right: 9px; height: 24px;
51
+ background-position: 0 -24px;
52
52
  background-repeat: repeat-x;
53
53
  vertical-align: middle;
54
54
  text-align: center;
@@ -56,24 +56,24 @@
56
56
  line-height: 26px;
57
57
  overflow: hidden;
58
58
  text-align: center; vertical-align: middle;
59
- font-family: Arial, sans-serif;
59
+ font-family: Helvetica, Arial, sans-serif;
60
60
  font-size: 12px; font-weight: bold;
61
61
  color: #333;
62
62
  }
63
63
  .tab_label .item_bg .tablabel {
64
- background-position: 0px -48px;
64
+ background-position: 0 -48px;
65
65
  color: #666;
66
66
  }
67
67
 
68
68
  .tab_bg {
69
69
  position: absolute;
70
- top: 24px; left: 0px; right: 0px; bottom: 0px;
70
+ top: 24px; left: 0; right: 0; bottom: 0;
71
71
  border-radius: 0 0 3px 3px;
72
72
  background-image: #{this.getCssFilePath('tab_border_pattern.png')};
73
73
  }
74
74
  .tab_fg {
75
75
  position: absolute;
76
- top: 0px; left: 1px; right: 1px; bottom: 1px;
76
+ top: 0; left: 1px; right: 1px; bottom: 1px;
77
77
  border-radius: 0 0 3px 3px;
78
78
  background-image: #{this.getCssFilePath('tab_bg_color.png')};
79
79
  }
@@ -3,4 +3,4 @@
3
3
  </div>
4
4
  <div class="tab_label" id="label]I["></div>
5
5
  <div class="tab_label_fill_bg" id="state]I["></div>
6
- ${this.tabLabelLeftEdge=12;this.tabLabelRightEdge=9;this.tabLabelHeight=24;this.fontStyle='font-family:Arial,sans-serif;font-size:12px;font-weight:bold;';this.tabLabelFillBg=true;}
6
+ ${this.tabLabelLeftEdge=12;this.tabLabelRightEdge=9;this.tabLabelHeight=24;this.fontStyle='font-family: Helvetica, Arial, sans-serif;font-size:12px;font-weight:bold;';this.tabLabelFillBg=true;}
@@ -11,6 +11,6 @@ var//RSence.Controls
11
11
  HTextArea = HTextControl.extend({
12
12
 
13
13
  componentName: "textarea",
14
- defaultKey: function(){return true;} // bypass handler for return presses
14
+ defaultKey: function(){return false;} // bypass handler for return presses
15
15
 
16
16
  });
@@ -1,7 +1,7 @@
1
1
  .default .textarea_input {
2
2
  position: absolute;
3
3
  display: block;
4
- font-family: Arial, sans-serif;
4
+ font-family: Helvetica, Arial, sans-serif;
5
5
  font-size: 13px;
6
6
  color: #000;
7
7
  background-color: transparent;
@@ -2,7 +2,7 @@
2
2
  .default .textcontrol_input {
3
3
  position: absolute;
4
4
  display: block;
5
- font-family: Arial, sans-serif;
5
+ font-family: Helvetica, Arial, sans-serif;
6
6
  font-size: 13px;
7
7
  color: #000;
8
8
  background-color: transparent;
@@ -54,7 +54,6 @@
54
54
 
55
55
  .default .active>.textcontrol_bg {
56
56
  left: 0; top: 0; right: 0; bottom: 0;
57
- -moz-box-shadow: 0 0 3px #333;
58
57
  -webkit-box-shadow: 0 0 3px #333;
59
58
  box-shadow: 0 0 3px #333;
60
59
  }
@@ -1,59 +1,44 @@
1
1
  .uploader_iframe {
2
- visibility: hidden;
3
- width: 0px;
4
- height: 0px;
5
- border-width: 0px;
2
+ visibility: hidden; width: 0; height: 0; border-width: 0;
6
3
  }
7
4
 
8
5
  .uploader_form {
9
- visibility: hidden;
10
- position: absolute;
11
- display: block;
12
- left: 0px;
13
- top: 0px;
14
- right: 0px;
15
- bottom: 0px;
16
- cursor: pointer;
6
+ visibility: hidden; position: absolute; display: block;
7
+ left: 0; top: 0; right: 0; bottom: 0; cursor: pointer;
17
8
  }
18
9
 
19
10
  .uploader_file_wrap {
20
11
  position: absolute;
21
- left: -350px; top: 0px;
22
- bottom: 0px; right: 0px;
12
+ left: -350px; top: 0;
13
+ bottom: 0; right: 0;
23
14
  line-height: 200px;
24
15
  font-size: 200px;
25
16
  }
26
17
 
27
18
  .uploader_file {
28
19
  position: absolute;
29
- right: 0px; top: 0px;
20
+ right: 0; top: 0;
30
21
  display: block;
31
22
  line-height: 200px;
32
23
  font-size: 200px;
33
24
  width: 1000px;
34
25
  height: 200px;
35
- -moz-opacity:0;
36
- filter:alpha(opacity: 0);
37
- opacity: 0.0;
26
+ /*filter:alpha(opacity: 0);*/
27
+ opacity: 0.001;
38
28
  text-align: right;
39
29
  cursor: pointer;
40
30
  z-index: 100;
41
31
  }
42
- .uploader_file:hover {
43
- background-color: #ff0;
44
- }
45
32
 
46
33
  .ack_button {
47
34
  visibility: hidden;
48
- left: auto; right: 0px; width: 48px;
49
35
  }
50
36
 
51
37
  .upload_progress {
52
38
  visibility: hidden;
53
39
  position: absolute;
54
- left: 0px; top: 0px;
55
- right: 0px; height: 24px;
56
- font-family: Arial, sans-serif;
40
+ left: 0; top: 0; right: 0; height: 24px;
41
+ font-family: Helvetica, Arial, sans-serif;
57
42
  line-height: 24px;
58
43
  vertical-align: middle;
59
44
  font-size: 12px;
@@ -69,40 +54,3 @@
69
54
  right: 0px; top: 4px; width: 16px; height: 16px;
70
55
  background-image: #{this.getCssFilePath('upload_progress.gif')};
71
56
  }
72
-
73
- .disabled > .uploader > .button_control > .button_edge_left {
74
- background-position: 0px -144px;
75
- }
76
- .enabled > .uploader:hover > .button_control > .button_edge_left {
77
- background-position: 0px -48px;
78
- }
79
- .enabled > .uploader:active > .button_control > .button_edge_left {
80
- background-position: 0px -96px;
81
- }
82
- .disabled > .uploader > .button_control > .button_edge_right {
83
- background-position: -42px -144px;
84
- }
85
- .enabled > .uploader:hover > .button_control > .button_edge_right {
86
- background-position: -42px -48px;
87
- }
88
- .enabled > .uploader:active > .button_control > .button_edge_right {
89
- background-position: -42px -96px;
90
- }
91
- .disabled > .uploader > .button_control > .button_center {
92
- background-position: 0px -168px;
93
- }
94
- .enabled > .uploader:hover > .button_control > .button_center {
95
- background-position: 0px -72px;
96
- }
97
- .enabled > .uploader:active > .button_control > .button_center {
98
- background-position: 0px -120px;
99
- }
100
- .disabled > .uploader > .button_control > .button_label {
101
- color: #999;
102
- }
103
- .enabled > .uploader:hover > .button_control > .button_label {
104
- color: #000;
105
- }
106
- .enabled > .uploader:active > .button_control > .button_label {
107
- color: #000;
108
- }
@@ -1,27 +1,33 @@
1
- <div class="uploader">
2
- <iframe id="iframe#{this.elemId}" name="upload_target_#{this.elemId}" src="/U/iframe_html" class="uploader_iframe"></iframe>
3
- <div class="upload_progress" id="upload_progress#{this.elemId}">
4
- <div id="progress_label#{this.elemId}" class="progress_message">#{this.label}</div>
5
- <div id="progress_indicator#{this.elemId}" class="progress_indicator"></div>
6
- </div>
7
- <div class="button_control" id="button#{this.elemId}">
8
- <div class="button_edge_left"></div>
9
- <div class="button_center"></div>
10
- <div class="button_edge_right"></div>
11
- <div class="button_label" id="button_label]I[">#{this.label}</div>
12
- <div class="button_antiselect"></div>
13
- </div>
14
- <div class="button_control ack_button" id="ack_button#{this.elemId}">
15
- <div class="button_edge_left"></div>
16
- <div class="button_center"></div>
17
- <div class="button_edge_right"></div>
18
- <div class="button_label">#{this.getLocaleString('HUploader.strings.ok')}</div>
19
- <div class="button_antiselect"></div>
1
+ <iframe id="iframe]I[" name="upload_target_]I[" src="/U/iframe_html" class="uploader_iframe"></iframe>
2
+ <div class="upload_progress" id="upload_progress]I[">
3
+ <div id="progress_label]I[" class="progress_message">#{this.label}</div>
4
+ <div id="progress_indicator]I[" class="progress_indicator"></div>
5
+ </div>
6
+ <div class="button_control ack_button" id="ack_button]I[" style="left: auto; right: 0; width: 48px;">
7
+ <div class="button_bg" id="ack_bg]I["></div>
8
+ <div class="button_label" id="ack_button_label]I[">#{this.getLocaleString('HUploader.strings.ok')}</div>
9
+ </div>
10
+ <div class="button_control" id="button]I[">
11
+ <div class="button_bg" id="bg]I["></div>
12
+ <div class="button_label" id="button_label]I[">#{this.label}</div>
13
+ <form id="form]I[" name="upload_form_]I[" enctype="multipart/form-data" method="POST" action="/U/NoUploadKey" target="upload_target_]I[" class="uploader_form">
14
+ <div class="uploader_file_wrap">
15
+ <input align="right" id="file]I[" name="file_data" type="file" onchange="HSystem.views[#{this.viewId}].upload();" class="uploader_file" size="1" />
20
16
  </div>
21
- <form id="form#{this.elemId}" name="upload_form_#{this.elemId}" enctype="multipart/form-data" method="POST" action="/U/NoUploadKey" target="upload_target_#{this.elemId}" class="uploader_form">
22
- <div class="uploader_file_wrap">
23
- <input align="right" id="file#{this.elemId}" name="file_data" type="file" onchange="HSystem.views[#{this.viewId}].upload();" class="uploader_file" size="1" />
24
- </div>
25
- <input id="value#{this.elemId}" name="value_id" type="hidden" value="NoUploadValue" />
26
- </form>
17
+ <input id="value]I[" name="value_id" type="hidden" value="NoUploadValue" />
18
+ </form>
27
19
  </div>
20
+ ${#!coffee
21
+ @themeStyle = ->
22
+ _labelHeight = (@rect.height-4)+'px'
23
+ _fontSize = Math.floor(@rect.height*0.5)+'px'
24
+ for [_key,_value] in [
25
+ ['height',_labelHeight],
26
+ ['lineHeight',_labelHeight],
27
+ ['fontSize',_fontSize] ]
28
+ for _labelElem in ['progress_label','ack_button_label','button_label']
29
+ @setStyleOfPart(_labelElem,_key,_value)
30
+ _radius = Math.floor(@rect.height / 6)+'px'
31
+ for _bgElem in ['bg','ack_bg']
32
+ @setStyleOfPart(_bgElem,'borderRadius',_radius)
33
+ }
@@ -22,6 +22,7 @@ HUploader = HControl.extend
22
22
  uploadState: false
23
23
  uploadKey: false
24
24
  markupElemNames: [
25
+ 'bg',
25
26
  'form',
26
27
  'file',
27
28
  'iframe',
@@ -31,12 +32,14 @@ HUploader = HControl.extend
31
32
  'button',
32
33
  'button_label',
33
34
  'value',
34
- 'ack_button'
35
+ 'ack_button',
36
+ 'ack_bg',
37
+ 'ack_button_label'
35
38
  ]
36
39
 
37
40
  defaultEvents:
38
41
  click: true
39
-
42
+
40
43
  setUploadKey: (_uploadKey, _label)->
41
44
  @setStyleOfPart( 'upload_progress', 'visibility', 'hidden' )
42
45
  @setStyleOfPart( 'progress_indicator', 'visibility', 'hidden' )
@@ -47,7 +50,7 @@ HUploader = HControl.extend
47
50
  @setAttrOfPart( 'form', 'action', '/U/'+_uploadKey, true )
48
51
  @setAttrOfPart( 'file', 'value', '', true )
49
52
  @uploadKey = _uploadKey
50
-
53
+
51
54
  setProgressState: (_state, _label)->
52
55
  @setStyleOfPart( 'upload_progress', 'visibility', 'inherit' )
53
56
  if _state == 3
@@ -61,7 +64,7 @@ HUploader = HControl.extend
61
64
  @setStyleOfPart( 'form', 'visibility', 'hidden' )
62
65
  if _state == 1
63
66
  @elemOfPart( 'form' ).submit()
64
-
67
+
65
68
  setErrorState: (_label)->
66
69
  @setStyleOfPart( 'progress_indicator', 'visibility', 'hidden' )
67
70
  @setStyleOfPart( 'ack_button', 'visibility', 'inherit' )
@@ -83,7 +86,7 @@ HUploader = HControl.extend
83
86
  @setProgressState( _state, _label )
84
87
  else if _state < 0
85
88
  @setErrorState( _label )
86
-
89
+
87
90
  refreshValue: ->
88
91
  return unless typeof @value == 'string'
89
92
  return unless ~@value.indexOf(':::')
@@ -95,9 +98,9 @@ HUploader = HControl.extend
95
98
  )
96
99
  upload: ->
97
100
  @setValue( '1:::'+@uploadKey )
98
-
101
+
99
102
  getNewUploadKey: ->
100
103
  @setValue( '4:::'+@uploadKey )
101
-
104
+
102
105
  click: ->
103
106
  @getNewUploadKey() if @uploadState == 3 or @uploadState < 0
@@ -1,7 +1,7 @@
1
1
 
2
2
  .window_shadow,
3
3
  .window_titlebar,
4
- .window_titlebar_edge_left,
4
+ .window_titlebar_edge_left,
5
5
  .window_titlebar_center,
6
6
  .window_titlebar_edge_right,
7
7
  .window_bg,
@@ -36,13 +36,11 @@
36
36
  .window_shadow {
37
37
  left: 4px; right: 4px; top: 4px; bottom: 4px;
38
38
  overflow: visible;
39
- -moz-box-shadow: 3px 3px 20px #333, 3px 3px 10px #000;
40
39
  -webkit-box-shadow: 3px 3px 20px #333, 3px 3px 10px #000;
41
40
  box-shadow: 3px 3px 20px #333, 3px 3px 10px #000;
42
41
  }
43
42
 
44
43
  .inactive > .window_shadow {
45
- -moz-box-shadow: 3px 3px 13px #333;
46
44
  -webkit-box-shadow: 3px 3px 13px #333;
47
45
  box-shadow: 3px 3px 13px #333;
48
46
  }
@@ -160,7 +158,7 @@
160
158
  line-height: 26px;
161
159
  text-align: center;
162
160
  vertical-align: middle;
163
- font-family: Arial, sans-serif;
161
+ font-family: Helvetica, Arial, sans-serif;
164
162
  font-size: 13px;
165
163
  font-weight: bold;
166
164
  color: #000;
@@ -805,7 +805,7 @@ ELEM = HClass.extend
805
805
  _key = 'filter'
806
806
  _value = "progid:DXImageTransform.Microsoft.gradient( startColorstr='#{_gradient.start}', endColorstr='#{_gradient.end}',GradientType=0 )"
807
807
  # IE9
808
- else if BROWSER_TYPE.ie9 or BROWSER_TYPE.ie10
808
+ else if BROWSER_TYPE.ie9 # or BROWSER_TYPE.ie10
809
809
  # IE9 SVG, needs conditional override of 'filter' to 'none'
810
810
  # Also static white-shaded svg, needs a svg source to base64 utility
811
811
  _key = 'background'
@@ -816,7 +816,7 @@ ELEM = HClass.extend
816
816
  for _step in _gradient.steps
817
817
  _svg += """<stop offset="#{_step[0]}%" stop-color="##{_step[1]}" />"""
818
818
  _svg += """<stop offset="100%" stop-color="##{_gradient.end}" />"""
819
- _svg += _svgSteps.join('')
819
+ # _svg += _svgSteps.join('')
820
820
  _svg += '</linearGradient>'
821
821
  _svg += '<rect x="0" y="0" width="1" height="1" fill="url(#gradientie9)" />'
822
822
  _svg += '</svg>'
@@ -843,7 +843,7 @@ ELEM = HClass.extend
843
843
  else if BROWSER_TYPE.opera
844
844
  _key = 'background'
845
845
  _steps = @_standardGradientSteps(_gradient.start,_gradient.steps,_gradient.end).join(',')
846
- _value = "-o-linear-gradient(top, )"
846
+ _value = "-o-linear-gradient(top, #{_steps})"
847
847
  else
848
848
  # Old browsers
849
849
  _key = 'background'
@@ -875,7 +875,7 @@ ELEM = HClass.extend
875
875
  _browserType.ie10 = !!~_ua.indexOf('MSIE 10')
876
876
  unless _browserType.ie9
877
877
  @sha = SHA.new(8) # SHA1 needed for IE9/10 SVG base64 encoding
878
- _browserType.ie9 = _browserType.ie10 # IE 10 is treated like IE 9
878
+ # _browserType.ie9 = _browserType.ie10 # IE 10 is treated like IE 9
879
879
  _browserType.mac = !!~_ua.indexOf('Macintosh')
880
880
  _browserType.win = !!~_ua.indexOf('Windows')
881
881
  _browserType.firefox = !!~_ua.indexOf('Firefox')
@@ -4,13 +4,13 @@
4
4
  ***/
5
5
  var//RSence.Core
6
6
  Event = {
7
-
7
+
8
8
  /** Returns the element of the event.
9
9
  **/
10
10
  element: function(e) {
11
11
  return e.target || e.srcElement;
12
12
  },
13
-
13
+
14
14
  /** Returns the mouse cursor x -coordinate of the event.
15
15
  **/
16
16
  pointerX: function(e) {
@@ -35,23 +35,23 @@ Event = {
35
35
  e.cancelBubble = true;
36
36
  }
37
37
  },
38
-
38
+
39
39
  /** Returns true if the left mouse butten was clicked.
40
40
  **/
41
41
  isLeftClick: function(e) {
42
42
  // IE: left 1, middle 4, right 2
43
- if (BROWSER_TYPE.ie && !BROWSER_TYPE.ie9) {
43
+ if (BROWSER_TYPE.ie && !BROWSER_TYPE.ie9 && !BROWSER_TYPE.ie10) {
44
44
  return (e.button === 1 || e.button === 3 || e.button === 5);
45
45
  }
46
46
  else {
47
47
  return (e.button === 0);
48
48
  }
49
49
  },
50
-
50
+
51
51
  /** List of event observers
52
52
  **/
53
53
  observers: false,
54
-
54
+
55
55
  /* Implementation of observe */
56
56
  _observeAndCache: function(_elem, _name, _function, _useCapture) {
57
57
  if (!Event.observers) {
@@ -66,7 +66,7 @@ Event = {
66
66
  _elem.attachEvent("on" + _name, _function);
67
67
  }
68
68
  },
69
-
69
+
70
70
  /** Flushes the event observer cache.
71
71
  **/
72
72
  unloadCache: function() {
@@ -83,7 +83,7 @@ Event = {
83
83
  }
84
84
  Event.observers = false;
85
85
  },
86
-
86
+
87
87
  /** Starts observing the named event of the element and
88
88
  * specifies a callback function.
89
89
  **/
@@ -92,7 +92,7 @@ Event = {
92
92
  Event._observeAndCache(_elem, _name, _function, _useCapture);
93
93
  return _function;
94
94
  },
95
-
95
+
96
96
  /** Stops observing the named event of the element and
97
97
  * removes the callback function.
98
98
  **/
@@ -120,7 +120,7 @@ Event = {
120
120
  }
121
121
  }
122
122
  },
123
-
123
+
124
124
  // List of ASCII "special characters":
125
125
  KEY_BACKSPACE: 8,
126
126
  KEY_TAB: 9,
@@ -135,7 +135,7 @@ Event = {
135
135
  KEY_END: 35,
136
136
  KEY_PAGEUP: 33,
137
137
  KEY_PAGEDOWN: 34
138
-
138
+
139
139
  };
140
140
 
141
141
  // Activates the garbage collector of Internet Explorer
@@ -36,7 +36,7 @@
36
36
  position: absolute;
37
37
  top: 0px; left: 20px; right: 20px; height: 20px;
38
38
  color: #000;
39
- font-family: Arial, sans-serif;
39
+ font-family: Helvetica, Arial, sans-serif;
40
40
  font-weight: normal;
41
41
  font-size: 13px;
42
42
  line-height: 20px;
@@ -51,7 +51,7 @@
51
51
  position: absolute;
52
52
  top: 0px; height: 15px; width: 25px;
53
53
  color: #000;
54
- font-family: Arial, sans-serif;
54
+ font-family: Helvetica, Arial, sans-serif;
55
55
  font-size: 11px;
56
56
  line-height: 16px;
57
57
  vertical-align: middle;
@@ -73,7 +73,7 @@
73
73
  position: absolute;
74
74
  text-decoration: none;
75
75
  top: 0px;
76
- font-family: Arial, sans-serif;
76
+ font-family: Helvetica, Arial, sans-serif;
77
77
  font-size: 15px;
78
78
  vertical-align: middle;
79
79
  text-align: center;
@@ -784,6 +784,40 @@ EventManagerApp = HApplication.extend
784
784
  # Remove possible selections.
785
785
  ELEM.get(0).focus()
786
786
  #
787
+ # Patches IE classes that match css :active with .ieActive classes
788
+ _ieClassNamePatched: []
789
+ _ieClassNamePatch: (_viewId)->
790
+ _elemId = @_views[_viewId].elemId
791
+ _elem = ELEM.get( _elemId )
792
+ _ieClassNamePatched = @_ieClassNamePatched
793
+ _ieClassNames = HThemeManager._ieActiveCssClassMatch
794
+ _hasClassName = (_elem,_className)->
795
+ ~_elem.className.split(' ').indexOf(_className)
796
+ _addClassName = (_elem)->
797
+ _classNames = _elem.className.trim().split(' ')
798
+ _classNames.push('ieActive')
799
+ _elem.className = _classNames.join(' ')
800
+ _ieClassNamePatched.push(_elem)
801
+ _level = 0
802
+ _patcher = (_elem)->
803
+ return if _level > 10
804
+ for _child in _elem.childNodes
805
+ for _className in _ieClassNames
806
+ _addClassName(_elem) if _hasClassName(_elem,_className) and not _hasClassName(_elem,'ieActive')
807
+ _level += 1
808
+ _patcher(_child)
809
+ _level -= 1
810
+ _patcher(_elem)
811
+ _ieClassNameUnPatch: ->
812
+ _ieClassNamePatched = @_ieClassNamePatched
813
+ @_ieClassNamePatched = []
814
+ _delClassName = (_elem)->
815
+ _classNames = _elem.className.split(' ')
816
+ _classNames.splice( _classNames.indexOf( 'ieActive' ), 1 )
817
+ _elem.className = _classNames.join(' ')
818
+ for _elem in _ieClassNamePatched
819
+ _delClassName(_elem)
820
+ #
787
821
  # Mouse button press manager. Triggered by the global mouseDown event.
788
822
  # Delegates the following event responder methods to active HControl instances:
789
823
  # - mouseDown
@@ -825,6 +859,9 @@ EventManagerApp = HApplication.extend
825
859
  _dragged.unshift( _viewId )
826
860
  _stop = true if _ctrl.startDrag( x, y, _leftClick )
827
861
  @_cancelTextSelection() unless _startDragIds.length == 0 and _mouseDownIds.length == 0
862
+ if BROWSER_TYPE.ie
863
+ for _viewId in _focused
864
+ @_ieClassNamePatch(_viewId)
828
865
  Event.stop(e) if _stop
829
866
  #
830
867
  # Mouse button press manager. Triggered by the global mouseDown event.
@@ -877,6 +914,7 @@ EventManagerApp = HApplication.extend
877
914
  @_listeners.hovered = []
878
915
  @_listeners.dragged = []
879
916
  @_cancelTextSelection() unless _endDragIds.length == 0 and _mouseUpIds.length == 0
917
+ @_ieClassNameUnPatch() if BROWSER_TYPE.ie and @_ieClassNamePatched.length
880
918
  Event.stop(e) if _stop
881
919
  #
882
920
  # Handles mouse button clicks
@@ -1082,11 +1120,16 @@ EventManagerApp = HApplication.extend
1082
1120
  return null unless @_listeners.active
1083
1121
  _ctrl = @_views[@_listeners.active[0]]
1084
1122
  return true if _ctrl[_methodName]? and _ctrl[_methodName]()
1123
+ _stop = null
1085
1124
  for _viewId in _ctrl.parent.views
1086
1125
  continue if _ctrl.viewId == _viewId
1087
1126
  _ctrl = @_views[_viewId]
1088
1127
  if _ctrl[_methodName]?
1089
- return true if _ctrl[_methodName]()
1128
+ _stopStatus = _ctrl[_methodName]()
1129
+ if _stopStatus == false or _stopStatus == true
1130
+ _stop = _stopStatus unless _stop
1131
+ if _stop != null
1132
+ return _stop
1090
1133
  if _ctrl.parent?
1091
1134
  return true if @defaultKey(_methodName,_ctrl.parent)
1092
1135
  return null