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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/client/conf/client_pkg.yaml +8 -8
- data/client/js/chat/speech_bubble/themes/default/speech_bubble.css +3 -3
- data/client/js/controls/button/button.coffee +45 -0
- data/client/js/controls/button/themes/default/button.css +39 -72
- data/client/js/controls/button/themes/default/button.html +14 -4
- data/client/js/controls/checkbox/checkbox.js +9 -8
- data/client/js/controls/checkbox/themes/default/checkbox.css +1 -1
- data/client/js/controls/checkbox/themes/default/checkbox.html +1 -0
- data/client/js/controls/clickbutton/clickbutton.coffee +44 -0
- data/client/js/controls/onoffbutton/themes/default/onoffbutton.css +20 -19
- data/client/js/controls/onoffbutton/themes/default/onoffbutton.html +1 -4
- data/client/js/controls/radiobutton/themes/default/radiobutton.css +1 -1
- data/client/js/controls/radiobutton/themes/default/radiobutton.html +1 -0
- data/client/js/controls/searchfield/searchfield.coffee +1 -1
- data/client/js/controls/searchfield/themes/default/searchfield.css +1 -1
- data/client/js/controls/stringview/themes/default/stringview.css +1 -1
- data/client/js/controls/tab/tab.js +17 -17
- data/client/js/controls/tab/themes/default/tab.css +16 -16
- data/client/js/controls/tab/themes/default/tab.html +1 -1
- data/client/js/controls/textarea/textarea.js +1 -1
- data/client/js/controls/textarea/themes/default/textarea.css +1 -1
- data/client/js/controls/textcontrol/themes/default/textcontrol.css +1 -2
- data/client/js/controls/uploader/themes/default/uploader.css +10 -62
- data/client/js/controls/uploader/themes/default/uploader.html +31 -25
- data/client/js/controls/uploader/uploader.coffee +10 -7
- data/client/js/controls/window/themes/default/window.css +2 -4
- data/client/js/core/elem/elem.coffee +4 -4
- data/client/js/core/event/event.js +11 -11
- data/client/js/datetime/calendar/themes/default/calendar.css +3 -3
- data/client/js/foundation/eventmanager/eventmanager.coffee +44 -1
- data/client/js/foundation/thememanager/thememanager.coffee +30 -17
- data/client/js/foundation/view/view.js +194 -192
- data/client/js/menus/menuitem/themes/default/menuitem.css +1 -1
- data/client/js/menus/minimenu/themes/default/minimenu.css +1 -1
- data/client/js/menus/minimenuitem/themes/default/minimenuitem.css +1 -1
- data/client/js/menus/popupmenu/themes/default/popupmenu.css +1 -1
- data/plugins/client_pkg/lib/client_pkg_build.rb +54 -53
- data/plugins/main/tmpl/index.html +1 -1
- metadata +4 -5
- data/client/js/controls/button/button.js +0 -78
- data/client/js/controls/button/themes/default/button_parts1.png +0 -0
- 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:
|
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:
|
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:
|
26
|
-
background-position:
|
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:
|
33
|
-
background-position:
|
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
|
36
|
+
background-position: -24px 0;
|
37
37
|
}
|
38
38
|
|
39
39
|
.tab_label .edge_right {
|
40
40
|
position: absolute;
|
41
|
-
top:
|
42
|
-
background-position: -12px
|
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
|
45
|
+
background-position: -36px 0;
|
46
46
|
}
|
47
47
|
|
48
48
|
.tab_label .tablabel {
|
49
49
|
position: absolute;
|
50
|
-
top:
|
51
|
-
background-position:
|
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:
|
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:
|
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:
|
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;}
|
@@ -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
|
-
|
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:
|
22
|
-
bottom:
|
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:
|
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
|
-
|
36
|
-
|
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:
|
55
|
-
|
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
|
-
<
|
2
|
-
|
3
|
-
<div
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<div class="
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
<div class="
|
15
|
-
<
|
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
|
-
<
|
22
|
-
|
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
|
-
|
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
|