Subversion Repositories Kolibri OS

Rev

Rev 4088 | Rev 4336 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3853 GerdtR 1
 
4036 GerdtR 2
COLOR_SEL_BUT equ 00F7092Dh
4082 GerdtR 3
MAX_USER_BUTTONS equ 30
4
4036 GerdtR 5
 
3853 GerdtR 6
RButtonWin:
7
       if lang eq ru
4082 GerdtR 8
	mov	[MinRMenuW],18*6+10
4146 GerdtR 9
       else
4082 GerdtR 10
	mov	[MinRMenuW],15*6+10
4146 GerdtR 11
       end if
4082 GerdtR 12
13
 
14
 
15
 
4146 GerdtR 16
	mcall	48,3,sc,40
17
4036 GerdtR 18
 
4146 GerdtR 19
	rol	eax,16
20
	add	al,DELTA_COLOR
21
	jnc	@f
22
	mov	al,0FFh
23
      @@:
4036 GerdtR 24
	rol	eax,16
4146 GerdtR 25
	add	al,DELTA_COLOR
26
	jnc	@f
27
	mov	al,0FFh
28
      @@:
4036 GerdtR 29
	add	ah,DELTA_COLOR
4146 GerdtR 30
	jnc	@f
31
	mov	ah,0FFh
32
      @@:
4036 GerdtR 33
	mov	[sc.workH],eax
4146 GerdtR 34
4036 GerdtR 35
 
4146 GerdtR 36
	rol	eax,16
37
	sub	al,DELTA_COLOR
38
	jnc	@f
39
	mov	al,0FFh
40
      @@:
4036 GerdtR 41
	rol	eax,16
4146 GerdtR 42
	sub	al,DELTA_COLOR
43
	jnc	@f
44
	mov	al,0FFh
45
      @@:
4036 GerdtR 46
	sub	ah,DELTA_COLOR
4146 GerdtR 47
	jnc	@f
48
	mov	ah,0FFh
49
      @@:
4036 GerdtR 50
	mov	[sc.workL],eax
4146 GerdtR 51
4036 GerdtR 52
 
53
 
54
 
4146 GerdtR 55
	mov	[SelIcon],eax
56
3853 GerdtR 57
 
4146 GerdtR 58
	m2m	[RMenuW],[MinRMenuW]
59
4082 GerdtR 60
 
4146 GerdtR 61
	jne	.RBW1
62
;----------- если клик не по иконке ------------------------------------------------
4082 GerdtR 63
	mov	[NumMenuButt],0
4146 GerdtR 64
4082 GerdtR 65
 
4146 GerdtR 66
	mcall	68,12,dword[bufIni+32]	;выделяем память для подписей и путей запуска
67
	mov	[RBMenuCP],eax		;GetUserBut берёт отсюда первоначальный указатель на память
68
	stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut
69
3853 GerdtR 70
 
4146 GerdtR 71
	add	[NumMenuButt],4
72
4082 GerdtR 73
 
4146 GerdtR 74
	mov	[RBMenuCP+ebx*8+8],RMenuAlign
75
	cmp	[bFixIcons],1
76
	je	@f
77
	mov	[RBMenuCP+ebx*8+16],RMenuOffMoving
78
	jmp	.RBW11
79
    @@:
4082 GerdtR 80
	mov	[RBMenuCP+ebx*8+16],RMenuOnMoving
4146 GerdtR 81
    .RBW11:
4082 GerdtR 82
83
 
4146 GerdtR 84
4082 GerdtR 85
 
4146 GerdtR 86
	mov	[RBMenuCP+ebx*8+8+4],0
87
	mov	[RBMenuCP+ebx*8+16+4],0
88
	mov	[RBMenuCP+ebx*8+24+4],0
89
4082 GerdtR 90
 
91
 
4146 GerdtR 92
;----------- если клик по иконке ------------------------------------------------
4082 GerdtR 93
.RBW1:
94
	xor	ebx,ebx
4146 GerdtR 95
	mov	[NumMenuButt],5
96
4082 GerdtR 97
 
4146 GerdtR 98
	mov	[RBMenuCP+ebx*8+8],RMenuAlign
99
	cmp	[bFixIcons],1
100
	je	@f
101
	mov	[RBMenuCP+ebx*8+16],RMenuOffMoving
102
	jmp	.RBW21
103
    @@:
4082 GerdtR 104
	mov	[RBMenuCP+ebx*8+16],RMenuOnMoving
4146 GerdtR 105
    .RBW21:
4082 GerdtR 106
	mov	[RBMenuCP+ebx*8+24],RMenuDel
4146 GerdtR 107
	mov	[RBMenuCP+ebx*8+32],RMenuProp
108
4082 GerdtR 109
 
4146 GerdtR 110
	mov	[RBMenuCP+ebx*8+8+4],0
111
	mov	[RBMenuCP+ebx*8+16+4],0
112
	mov	[RBMenuCP+ebx*8+24+4],0
113
	mov	[RBMenuCP+ebx*8+32+4],0
114
4082 GerdtR 115
 
116
.RBW2:
117
118
 
4146 GerdtR 119
	jne	@f
120
	mov	eax,[NumMenuButt]
121
	shl	eax,4
122
	mov	[RMenuH],ax
123
	jmp	.rbw1
124
      @@:
4036 GerdtR 125
	mov	[RMenuH],16*5
4146 GerdtR 126
    .rbw1:
4036 GerdtR 127
3853 GerdtR 128
 
4146 GerdtR 129
	add	[RMenuH],3		;на рамку
130
4082 GerdtR 131
 
3853 GerdtR 132
	mcall	12,1	;RedrawWinBeg
4146 GerdtR 133
	mov	ebx,[MouseX]
134
	shl	ebx,16
135
	mov	bx,[RMenuW]
136
4082 GerdtR 137
 
4146 GerdtR 138
	shl	ecx,16
139
	mov	cx,[RMenuH]
140
4082 GerdtR 141
 
4146 GerdtR 142
	mov	esi,01000000h
143
	xor	eax,eax
144
	int	40h
145
3853 GerdtR 146
 
4146 GerdtR 147
	inc	bx
148
	and	ecx,0FFFFh
149
	inc	cx
150
	mcall	13,,,[sc.work]
151
4036 GerdtR 152
 
4082 GerdtR 153
	mov	ecx,[NumMenuButt]
4146 GerdtR 154
  .DrawUB:
3853 GerdtR 155
	push	ecx
4146 GerdtR 156
3853 GerdtR 157
 
4146 GerdtR 158
	sub	eax,ecx
159
	mov	edx,eax      ;button ID = от 0 до NumMenuButt
160
	or	edx,60000000h
161
	shl	eax,4+16	  ;*16*10000h
162
	mov	ecx,eax
163
	mov	cx,16
164
3853 GerdtR 165
 
4146 GerdtR 166
	mov	bx,[RMenuW]
167
	mov	esi,[sc.work]
168
	mcall	8			;определили
169
4088 GerdtR 170
 
4146 GerdtR 171
	shr	ecx,16
172
	mov	bx,cx
173
	add	bx,7
174
4088 GerdtR 175
 
4146 GerdtR 176
	or	ecx,80000000h
177
4088 GerdtR 178
 
4146 GerdtR 179
	sub	eax,[esp]
180
	mov	edx,[RBMenuCP+eax*8]
181
	mcall	4
182
4088 GerdtR 183
 
184
 
4146 GerdtR 185
	loop	.DrawUB
186
  ;---------------
4082 GerdtR 187
3853 GerdtR 188
 
4082 GerdtR 189
	xor	ebx,ebx 	   ;верх
4146 GerdtR 190
	mov	bx,[RMenuW]
191
	xor	ecx,ecx
192
	mcall	38,,,[sc.workL]
193
3853 GerdtR 194
 
4146 GerdtR 195
	shl	ebx,16
196
	mov	bx,[RMenuW]
197
	xor	ecx,ecx
198
	mov	cx,[RMenuH]
199
	mcall
200
4082 GerdtR 201
 
4146 GerdtR 202
	mov	bx,[RMenuW]
203
	mov	cx,[RMenuH]
204
	shl	ecx,16
205
	mov	cx,[RMenuH]
206
	mcall
207
3853 GerdtR 208
 
4146 GerdtR 209
	xor	ecx,ecx
210
	mov	cx,[RMenuH]
211
	mcall
212
3853 GerdtR 213
 
4036 GerdtR 214
 
4082 GerdtR 215
	xor	ebx,ebx
4146 GerdtR 216
	mov	bx,[RMenuW]
217
	add	ebx,1*10000h-1
218
	mov	ecx,00010001h
219
	mcall	 ,,,[sc.workH]
220
4036 GerdtR 221
 
4146 GerdtR 222
	xor	ecx,ecx
223
	mov	cx,[RMenuH]
224
	add	ecx,1*10000h-1
225
	mcall
226
3853 GerdtR 227
 
228
 
4082 GerdtR 229
	mcall	12,2	;RedrawWinEnd
4146 GerdtR 230
;-------------------------------------------------------------------
4082 GerdtR 231
3853 GerdtR 232
 
4146 GerdtR 233
	mcall	18,21,dword[RBProcInfo+30]
234
	m2m	dword[RBSlot],eax
235
3853 GerdtR 236
 
237
	mcall	10		;WaitMessage
4146 GerdtR 238
	dec	eax
239
	jz	RBWRedraw
240
	sub	eax,2
241
	jz	RBWButton
242
	sub	eax,3
243
	jz	RBWMouse
244
	jmp	RBWMessages
245
3853 GerdtR 246
 
247
	mcall	17		;GetButtonPressed
4146 GerdtR 248
	shr	eax,8
249
4082 GerdtR 250
 
4146 GerdtR 251
	mov	eax,[RBMenuCP+ebx*8+4] ;если сдесь 0, то клик по стандартной кнопке(которая не в ini)
252
	test	eax,eax
253
	jnz	.RBWB
254
	mov	eax,[RBMenuCP+ebx*8]  ;смотрим, указатель на какую надпись в подписи
255
	cmp	eax,RMenuRedrawFon		    ; и по ней выбираем действие
256
	jz	RBRedrawFon
257
	cmp	eax,RMenuAlign
258
	jz	RBAlign
259
	cmp	eax,RMenuOffMoving
260
	jz	RBFixIcons
261
	cmp	eax,RMenuOnMoving
262
	jz	RBFixIcons
263
	cmp	eax,RMenuAdd
264
	jz	RBAdd
265
	cmp	eax,RMenuDel
266
	jz	RBDelete
267
	cmp	eax,RMenuProp
268
	jz	RBPropeties
269
3853 GerdtR 270
 
4146 GerdtR 271
   .RBWB:
4082 GerdtR 272
	mov	dword[fiRunProg+8],0
4146 GerdtR 273
	mov	dword[fiRunProg+21],eax
274
	mcall	70,fiRunProg
275
4082 GerdtR 276
 
4146 GerdtR 277
3853 GerdtR 278
 
279
	call	MouseInWin
4146 GerdtR 280
	jnc	.RBWMnoInWin	      ;если вне окна, то просто восстанавливаем предыдущую кнопку
281
4082 GerdtR 282
 
4146 GerdtR 283
	and	eax,0FFF0h	;нужен только Y, причём округлённый до верхней точки кратной 16(высота кнопки)
284
	cmp	[PredItem],eax
285
	je	.RBWMendLightBut
286
4082 GerdtR 287
 
4146 GerdtR 288
	cmp	eax,[NumMenuButt]
289
	jae	.RBWMnoInWin
290
4082 GerdtR 291
 
4146 GerdtR 292
	je	@f
293
4082 GerdtR 294
 
4146 GerdtR 295
4082 GerdtR 296
 
4036 GerdtR 297
4082 GerdtR 298
 
4146 GerdtR 299
	jnc	@f
300
	mcall	37,1	      ;положение мыши относительно окна
301
	and	eax,0FFF0h	;нужен только Y, причём округлённый до верхней точки кратной 16(высота кнопки)
302
	mov	[PredItem],eax
303
	stdcall DrawRBLine,eax,1
304
4082 GerdtR 305
 
4036 GerdtR 306
	jmp	.RBWMendLightBut
4146 GerdtR 307
4036 GerdtR 308
 
309
 
4082 GerdtR 310
	cmp	[PredItem],-1	   ;восстановление предыдущей кнопки
4146 GerdtR 311
	je	.RBWMendLightBut
312
4082 GerdtR 313
 
4146 GerdtR 314
	mov	[PredItem],-1
315
4082 GerdtR 316
 
317
	mcall	37,2		;GetMouseKey
4146 GerdtR 318
	test	eax,111b
319
	jz	RBWMessages
320
3853 GerdtR 321
 
4146 GerdtR 322
	jc	RBWMessages
323
3853 GerdtR 324
 
325
	cmp	[SelIcon],-1
4146 GerdtR 326
	jne	@f
327
	mcall	68,13,[RBMenuCP]			;освобождаем память с подписями и путями к прогам
328
      @@:
4082 GerdtR 329
	mov	[RButtonActiv],0
4146 GerdtR 330
	mcall	-1	;ExitProcess
331
3853 GerdtR 332
 
333
 
334
	mcall	15,3
4146 GerdtR 335
	jmp	RBWExit
336
3853 GerdtR 337
 
338
	call	AlignIcons
4146 GerdtR 339
3853 GerdtR 340
 
4146 GerdtR 341
	stdcall [ini_enum_sections],IconIni,Ini_SavePos
342
3853 GerdtR 343
 
4146 GerdtR 344
	mov	dword[fiRunProg+21],pthNotify
345
	mcall	70,fiRunProg
346
	mov	[bNotSave],0
347
3853 GerdtR 348
 
4146 GerdtR 349
3853 GerdtR 350
 
351
	xor	dword[bFixIcons],1
4146 GerdtR 352
3853 GerdtR 353
 
4146 GerdtR 354
	je	@f
355
3853 GerdtR 356
 
4146 GerdtR 357
	mov	dword[fiRunProg+21],pthNotify
358
	mcall	70,fiRunProg
359
	mov	[bNotSave],0
360
3853 GerdtR 361
 
362
	jmp	RBWExit
4146 GerdtR 363
3853 GerdtR 364
 
365
	cmp	[DlgAddActiv],1
4146 GerdtR 366
	je	RBWSetActivWin
367
	mov	[DlgAddActiv],1
368
3921 mario79 369
 
4146 GerdtR 370
	jmp	RBWExit
371
3853 GerdtR 372
 
373
	mov	eax,[SelIcon]
4146 GerdtR 374
	mov	eax,[IconsOffs+eax*4]
375
	stdcall [ini_del_section],IconIni,eax
376
3853 GerdtR 377
 
4146 GerdtR 378
3853 GerdtR 379
 
4146 GerdtR 380
	mov	dword[fiRunProg+21],pthNotify
381
	mcall	70,fiRunProg
382
	mov	[bNotSave],0
383
3853 GerdtR 384
 
4146 GerdtR 385
3853 GerdtR 386
 
387
	cmp	[DlgAddActiv],1
4146 GerdtR 388
	je	RBWSetActivWin
389
	mov	[DlgAddActiv],1
390
3921 mario79 391
 
4146 GerdtR 392
	jmp	RBWExit
393
3853 GerdtR 394
 
3921 mario79 395
	mcall	18,3,[slotDlgAdd]
4146 GerdtR 396
	jmp	RBWExit
397
3853 GerdtR 398
 
4082 GerdtR 399
400
 
4146 GerdtR 401
	mov	bx,[RMenuW]
402
	add	ebx,2*10000h-3
403
	mov	ecx,[y]
404
	add	ecx,2
405
	shl	ecx,16
406
	mov	cx,16;-1-2
407
	cmp	[active],1
408
	jne	@f
409
	mov	edx,[sc.work_button]
410
	jmp	.L1
411
       @@:
4082 GerdtR 412
	mov	edx,[sc.work]
4146 GerdtR 413
      .L1:
4082 GerdtR 414
	mcall	13
4146 GerdtR 415
4082 GerdtR 416
 
417
	xor	ebx,ebx 	   ;верх
4146 GerdtR 418
	mov	bx,[RMenuW]
419
	add	ebx,2*10000h-3
420
	mov	cx,word[y]
421
	shl	ecx,16
422
	mov	cx,word[y]
423
	add	ecx,00020002h
424
4082 GerdtR 425
 
4146 GerdtR 426
	jne	@f
427
	mov	edx,[sc.workL]
428
	jmp	.L3
429
       @@:
4082 GerdtR 430
	mov	edx,[sc.work]
4146 GerdtR 431
      .L3:
4082 GerdtR 432
433
 
4146 GerdtR 434
4082 GerdtR 435
 
4146 GerdtR 436
	mov	cx,word[y]
437
	shl	ecx,16
438
	mov	cx,word[y]
439
	add	ecx,00020002h+16
440
4082 GerdtR 441
 
4146 GerdtR 442
	jne	@f
443
	mov	edx,[sc.workL]
444
4082 GerdtR 445
 
446
447
 
4146 GerdtR 448
4082 GerdtR 449
 
4146 GerdtR 450
	mov	bx,[RMenuW]
451
	add	ebx,2*10000h-3
452
	mov	cx,word[y]
453
	shl	ecx,16
454
	mov	cx,word[y]
455
	add	ecx,16*10000h+16+00020002h
456
4082 GerdtR 457
 
4146 GerdtR 458
	jne	@f
459
	mov	edx,[sc.workH]
460
       @@:
4082 GerdtR 461
462
 
4146 GerdtR 463
4082 GerdtR 464
 
4146 GerdtR 465
	shl	ebx,16
466
	mov	bx,[RMenuW]
467
	add	ebx,-2*10000h-2
468
	mov	cx,word[y]
469
	shl	ecx,16
470
	mov	cx,word[y]
471
	add	ecx,00020002h+16
472
4082 GerdtR 473
 
4146 GerdtR 474
	jne	@f
475
	mov	edx,[sc.workH]
476
       @@:
4082 GerdtR 477
478
 
4146 GerdtR 479
4082 GerdtR 480
 
4146 GerdtR 481
	shr	eax,4
482
	mov	edx,[RBMenuCP+eax*8]
483
4082 GerdtR 484
 
4146 GerdtR 485
	mov	ebx,[y]
486
	add	ebx,7*10000h+7
487
4082 GerdtR 488
 
4146 GerdtR 489
	jne	@f
490
	mov	ecx,[sc.work_button_text]
491
	jmp	.L2
492
       @@:
4082 GerdtR 493
	mov	ecx,[sc.work_text]
4146 GerdtR 494
      .L2:
4082 GerdtR 495
496
 
4146 GerdtR 497
4082 GerdtR 498
 
4146 GerdtR 499
4082 GerdtR 500
 
4146 GerdtR 501
endp
4082 GerdtR 502
503
 
504
 
505
	mcall	37,0		;GetMousePos
4146 GerdtR 506
	xor	ebx,ebx
507
	mov	bx,ax		;y
508
	shr	eax,16		;x
509
3853 GerdtR 510
 
4146 GerdtR 511
	mov	cx,bx
512
	mov	bx,ax
513
4036 GerdtR 514
 
4146 GerdtR 515
	cmp	eax,[RBSlot]
516
	jne	@f
517
	stc
518
	ret
519
      @@:
4036 GerdtR 520
	clc
4146 GerdtR 521
	ret
522
endp
4036 GerdtR 523
524
 
525
 
3853 GerdtR 526
local posX:WORD,\
527
      posY:WORD,\
528
      negatX:WORD,\
529
      negatY:WORD
530
531
 
4146 GerdtR 532
3853 GerdtR 533
 
4146 GerdtR 534
	test	ecx,ecx
535
	jnz	.AlignIco
536
	ret
537
 .AlignIco:
3853 GerdtR 538
	push	ecx
4146 GerdtR 539
	or	ecx,-1
540
	mov	edi,dword[IconsOffs+ebx]
541
	xor	eax,eax
542
	repne	scasb
543
	repne	scasb
544
	repne	scasb
545
	repne	scasb
546
3853 GerdtR 547
 
4146 GerdtR 548
3853 GerdtR 549
 
550
	mov	ax,[edi+2]
4146 GerdtR 551
	test	ax,8000h
552
	jz	@f
553
	neg	ax
554
	mov	word[negatX],1
555
      @@:
3853 GerdtR 556
	mov	[posX],ax
4146 GerdtR 557
3853 GerdtR 558
 
4146 GerdtR 559
	test	ax,8000h
560
	jz	@f
561
	neg	ax
562
	mov	word[negatY],1
563
      @@:
3853 GerdtR 564
	mov	[posY],ax
4146 GerdtR 565
3853 GerdtR 566
 
567
	mov	ax,[posY]
4146 GerdtR 568
	mov	dx,ALIGN_SIZE
569
3853 GerdtR 570
 
4146 GerdtR 571
	jb	.AI0
572
    @@: sub	ax,dx
573
	cmp	ax,dx
574
	jae	@b
575
    .AI0:
3853 GerdtR 576
577
 
4146 GerdtR 578
	cmp	dx,ALIGN_SIZE/2
579
	jb	.AI1
580
3853 GerdtR 581
 
4146 GerdtR 582
	sub	ax,dx
583
	add	[posY],ax
584
3853 GerdtR 585
 
4146 GerdtR 586
     .AI1:
3853 GerdtR 587
	sub	[posY],dx
4146 GerdtR 588
     .AI2:
3853 GerdtR 589
     ;-----
590
	mov	ax,[posX]
4146 GerdtR 591
	mov	dx,ALIGN_SIZE
592
3853 GerdtR 593
 
4146 GerdtR 594
	jb	.AI3
595
    @@: sub	ax,dx
596
	cmp	ax,dx
597
	jae	@b
598
    .AI3:
3853 GerdtR 599
600
 
4146 GerdtR 601
	cmp	dx,ALIGN_SIZE/2
602
	jb	.AI4
603
3853 GerdtR 604
 
4146 GerdtR 605
	sub	ax,dx
606
	add	[posX],ax
607
3853 GerdtR 608
 
4146 GerdtR 609
     .AI4:
3853 GerdtR 610
	sub	[posX],dx
4146 GerdtR 611
     .AI5:
3853 GerdtR 612
613
 
614
	mov	ax,[posX]
4146 GerdtR 615
3853 GerdtR 616
 
4146 GerdtR 617
	jne	@f
618
	neg	ax
619
	inc	ax
620
	jmp	.AI6
621
      @@:
3853 GerdtR 622
623
 
4146 GerdtR 624
	shr	dx,1
625
	add	dx,[wsX]
626
	cmp	ax,dx
627
	jbe	.AI6
628
	sub	ax,[wsW]
629
      .AI6:
3853 GerdtR 630
	mov	word[edi+2],ax
4146 GerdtR 631
3853 GerdtR 632
 
633
 
4146 GerdtR 634
	cmp	[negatY],1
635
	jne	@f
636
	neg	ax
637
	inc	ax
638
	jmp	.AI7
639
      @@:
3853 GerdtR 640
641
 
4146 GerdtR 642
	shr	dx,1
643
	add	dx,[wsY]
644
	cmp	ax,dx
645
	jbe	.AI7
646
	sub	ax,[wsH]
647
      .AI7:
3853 GerdtR 648
	 mov	 word[edi],ax
4146 GerdtR 649
3853 GerdtR 650
 
651
652
 
653
 
654
 
4146 GerdtR 655
	add	ebx,4
656
	dec	ecx
657
	jnz	.AlignIco
658
;        loop    .AlignIco
3853 GerdtR 659
660
 
661
 
662
;        mcall   70,fInfo
663
	ret
4146 GerdtR 664
endp
3853 GerdtR 665
666
 
667
proc GetUserBut stdcall,f_name,sec_name,key_name,key_value
668
	cmp	[NumMenuButt],MAX_USER_BUTTONS
4146 GerdtR 669
	jne	@f
670
	ret
671
     @@:
3853 GerdtR 672
673
 
4146 GerdtR 674
3853 GerdtR 675
 
4146 GerdtR 676
	xor	eax,eax
677
	or	ecx,-1
678
	repne	scasb
679
	sub	edi,[key_name]
680
	mov	eax,edi
681
	shl	eax,1
682
	lea	eax,[eax*2+eax+5*2]
683
	cmp	ax,[RMenuW]
684
	jbe	@f
685
	mov	[RMenuW],ax
686
     @@:
3853 GerdtR 687
688
 
4146 GerdtR 689
3853 GerdtR 690
 
4146 GerdtR 691
	mov	edi,[RBMenuCP+ebx*8]
692
    @@: lodsb
3853 GerdtR 693
	stosb
4146 GerdtR 694
	test	al,al
695
	jnz	@b
696
3853 GerdtR 697
 
698
 
4146 GerdtR 699
	mov	esi,[key_value]
700
    @@: lodsb
3853 GerdtR 701
	stosb
4146 GerdtR 702
	test	al,al
703
	jnz	@b
704
3853 GerdtR 705
 
4146 GerdtR 706
3853 GerdtR 707
 
4146 GerdtR 708
3853 GerdtR 709
 
4146 GerdtR 710
	mov	eax,1
711
	ret
712
endp
3853 GerdtR 713
714
 
715
	push	ebx edi esi
4146 GerdtR 716
3921 mario79 717
 
4146 GerdtR 718
  .SearchSect:
3853 GerdtR 719
	mov	edi,[IconsOffs+ebx*4]
4146 GerdtR 720
	mov	esi,[sec_name]
721
      @@:
3853 GerdtR 722
	lodsb
4146 GerdtR 723
	scasb
724
	jne	@f
725
	test	al,al
726
	jnz	@b
727
3853 GerdtR 728
 
4146 GerdtR 729
      @@:
3853 GerdtR 730
731
 
4146 GerdtR 732
	cmp	ebx,[MaxNumIcon]
733
	jb	.SearchSect
734
3853 GerdtR 735
 
4146 GerdtR 736
	pop	esi edi ebx
737
	ret
738
3853 GerdtR 739
 
740
	or	ecx,-1
4146 GerdtR 741
	repne	scasb
742
	repne	scasb
743
	repne	scasb
744
3853 GerdtR 745
 
3921 mario79 746
	movzx	eax,word[edi+2]
4146 GerdtR 747
	test	eax,8000h
748
	jz	@f
749
	or	eax,0FFFF0000h
750
     @@:
3853 GerdtR 751
752
 
4146 GerdtR 753
3853 GerdtR 754
 
4146 GerdtR 755
	test	eax,8000h
756
	jz	@f
757
	or	eax,0FFFF0000h
758
     @@:
3853 GerdtR 759
760
 
4146 GerdtR 761
3853 GerdtR 762
 
4146 GerdtR 763
	pop	esi edi ebx
764
	ret
765
endp
3853 GerdtR 766