rsence-pre 3.0.0.5 → 3.0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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