forked from KolibriOS/kolibrios
IRCC 0.21: Dont draw vertical separator when scrollbar is active, input textbox always has focus now, CTCP action is now also supported in channels, fixed bug which: caused some usercommands not to work, added usercommand /me for CTCP action.
git-svn-id: svn://kolibrios.org@4659 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f813e5d1d8
commit
0001dc9a16
@ -121,20 +121,22 @@ draw_window: ; Completely redraw the window, recalculate all coordinates and
|
||||
cmp [edi + window.type], WINDOWTYPE_CHANNEL
|
||||
jne .not_channel
|
||||
|
||||
; draw a vertical separator line
|
||||
; TODO: dont draw this if we draw textbox scrollbar ??
|
||||
mov [scroll1.all_redraw], 1
|
||||
call draw_channel_list
|
||||
|
||||
; draw a vertical separator line when there is no scrollbar
|
||||
cmp [scroll2.all_redraw], 1
|
||||
jne .not_channel
|
||||
|
||||
mov ebx, [xsize]
|
||||
sub ebx, USERLIST_WIDTH + SCROLLBAR_WIDTH + 3
|
||||
push bx
|
||||
shl ebx, 16
|
||||
pop bx
|
||||
mov ecx, [ysize]
|
||||
add ecx, TOP_Y SHL 16 -(BOTTOM_Y) ;;;;
|
||||
add ecx, TOP_Y shl 16 - (BOTTOM_Y)
|
||||
mov edx, [colors.work_graph]
|
||||
mcall 38
|
||||
|
||||
mov [scroll1.all_redraw], 1
|
||||
call draw_channel_list
|
||||
.not_channel:
|
||||
|
||||
; draw editbox
|
||||
|
@ -13,7 +13,7 @@
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
version equ '0.20'
|
||||
version equ '0.21'
|
||||
|
||||
; connection status
|
||||
STATUS_DISCONNECTED = 0
|
||||
@ -563,7 +563,7 @@ import boxlib,\
|
||||
scrollbar_mouse,'scrollbar_v_mouse'
|
||||
|
||||
; width, left, top
|
||||
edit1 edit_box 0, 0, 0, 0xffffff, 0x6f9480, 0, 0, 0, USERCMD_MAX_SIZE, usercommand, mouse_dd, ed_focus, 25, 25
|
||||
edit1 edit_box 0, 0, 0, 0xffffff, 0x6f9480, 0, 0, 0, USERCMD_MAX_SIZE, usercommand, mouse_dd, ed_always_focus, 25, 25
|
||||
; xsize, xpos, ysize, ypos, btn_height, max, cur, pos, bgcol, frcol, linecol
|
||||
scroll1 scrollbar SCROLLBAR_WIDTH, 0, 0, TOP_Y, SCROLLBAR_WIDTH, 0, 0, 0, 0, 0, 0, 1
|
||||
scroll2 scrollbar SCROLLBAR_WIDTH, 0, 0, TOP_Y, SCROLLBAR_WIDTH, 0, 0, 0, 0, 0, 0, 1
|
||||
|
@ -257,10 +257,6 @@ cmd_privmsg:
|
||||
jz .fail2
|
||||
pop esi
|
||||
call skip_parameter ; our own nickname
|
||||
|
||||
cmp byte[esi], 1 ; Client to Client protocol?
|
||||
je cmd_ctcp
|
||||
|
||||
jmp .print
|
||||
|
||||
.channel:
|
||||
@ -269,7 +265,9 @@ cmd_privmsg:
|
||||
jz .fail
|
||||
|
||||
.print:
|
||||
; nope, just plain old privmsg, print it using '<nick> message' format
|
||||
cmp byte[esi], 1 ; Client to Client protocol?
|
||||
je cmd_ctcp
|
||||
|
||||
if TIMESTAMP
|
||||
call print_timestamp
|
||||
end if
|
||||
|
@ -117,7 +117,6 @@ user_commands:
|
||||
.number = ($ - user_commands) / 8
|
||||
|
||||
|
||||
|
||||
server_command:
|
||||
|
||||
mov eax, dword[usercommand+1] ; skip '/'
|
||||
@ -126,7 +125,7 @@ server_command:
|
||||
mov edi, user_commands
|
||||
mov ecx, user_commands.number
|
||||
cmp [status], STATUS_CONNECTED
|
||||
jne .loop
|
||||
je .loop
|
||||
mov ecx, user_commands.number2
|
||||
.loop:
|
||||
scasd
|
||||
@ -137,6 +136,10 @@ server_command:
|
||||
|
||||
cmp [status], STATUS_CONNECTED
|
||||
jne .notconnected
|
||||
; Commands shorter then 3 chars are placed here
|
||||
and eax, 0x00ffffff
|
||||
cmp eax, 'me '
|
||||
je cmd_usr_me
|
||||
|
||||
jmp cmd_usr_send ; If none of the previous commands, just send to server
|
||||
|
||||
@ -432,7 +435,6 @@ cmd_usr_part:
|
||||
cmd_usr_close_window:
|
||||
|
||||
mov esi, [window_active]
|
||||
mov [window_print], esi
|
||||
cmp [esi + window.type], WINDOWTYPE_SERVER
|
||||
je .not_channel
|
||||
|
||||
@ -540,6 +542,74 @@ cmd_usr_ctcp:
|
||||
|
||||
|
||||
|
||||
cmd_usr_me:
|
||||
|
||||
; prepare a 'PRIVMSG '
|
||||
mov dword[packetbuf], 'PRIV'
|
||||
mov dword[packetbuf+4], 'MSG '
|
||||
lea edi, [packetbuf+8]
|
||||
|
||||
; append the destination (nickname/channel)
|
||||
mov esi, [window_active]
|
||||
lea esi, [esi + window.name]
|
||||
@@:
|
||||
lodsb
|
||||
test al, al
|
||||
je @f
|
||||
stosb
|
||||
jmp @r
|
||||
@@:
|
||||
|
||||
; Make the CTCP action header
|
||||
mov eax, ' :' + 0x01 shl 16 + 'A' shl 24
|
||||
stosd
|
||||
mov eax, 'CTIO'
|
||||
stosd
|
||||
mov al, 'N'
|
||||
stosb
|
||||
|
||||
; copy the message itself (including first space)
|
||||
mov esi, usercommand+3
|
||||
@@:
|
||||
lodsb
|
||||
cmp al, 13
|
||||
je @f
|
||||
stosb
|
||||
jmp @r
|
||||
@@:
|
||||
|
||||
; end of CTCP message
|
||||
mov al, 0x01
|
||||
stosb
|
||||
mov ax, 0x0a0d
|
||||
stosw
|
||||
|
||||
; now send it to the server
|
||||
lea esi, [edi - packetbuf] ; calculate length
|
||||
mcall send, [socketnum], packetbuf, , 0 ; and finally send to server
|
||||
|
||||
; print to local window
|
||||
if TIMESTAMP
|
||||
call print_timestamp
|
||||
end if
|
||||
|
||||
mov esi, action_header
|
||||
call print_asciiz
|
||||
|
||||
mov esi, user_nick
|
||||
call print_asciiz
|
||||
|
||||
mov esi, usercommand+3
|
||||
mov bl, 13
|
||||
call print_string
|
||||
|
||||
mov al, 10
|
||||
call print_char
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; The user typed some undefined command, just recode it and send to the server
|
||||
cmd_usr_send:
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
user_prefixes db '~&@%+ ', 0 ; in descending order
|
||||
|
||||
; TODO: update selected user if needed
|
||||
; esi is ptr to nick
|
||||
; ebx is ptr to window
|
||||
align 4
|
||||
@ -120,7 +121,7 @@ user_add:
|
||||
|
||||
|
||||
|
||||
|
||||
; TODO: update selected user if needed
|
||||
; esi is ptr to nick
|
||||
; ebx is ptr to window
|
||||
align 4
|
||||
|
Loading…
Reference in New Issue
Block a user