HACONFIG: correct processing of an empty string
git-svn-id: svn://kolibrios.org@7412 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
be8f12a959
commit
44b96e0b6d
@ -2,7 +2,7 @@
|
||||
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Compile with FASM
|
||||
; Version 0.3.1: Sep 23, 2018
|
||||
; Version 0.3.2: Sep 24, 2018
|
||||
|
||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||
; All rights reserved.
|
||||
@ -150,6 +150,15 @@ defaultDataSize = 48+19
|
||||
copyParam: ;копирует параметр(команду запуска) в буфер (см. дальше)
|
||||
push esi ebx ecx
|
||||
mov ecx, dword[ebx] ;читаем размер строки
|
||||
|
||||
cmp ecx, 0 ;пуста ли строка?
|
||||
jne copyParam.copy ;если нет, то переходим к копированию содержимого строки (к циклу)
|
||||
|
||||
mov byte[eax], '-' ;если же пусто, то заменяем символом минус '-'
|
||||
inc eax
|
||||
;jmp copyParam.copyEnd ;и выходим
|
||||
;далее в начале цикла произойдёт сравнение и выход
|
||||
|
||||
.copy: ;копируем символы
|
||||
cmp ecx, 0
|
||||
je copyParam.copyEnd
|
||||
@ -183,6 +192,25 @@ applyButton:
|
||||
add ecx, dword[editLD.size]
|
||||
add ecx, dword[editRU.size]
|
||||
add ecx, dword[editRD.size] ;dataBuffer.size4]
|
||||
|
||||
;если заданы пустые строки, то мы автоматически добавляем знак минус, значит размер +1 байт
|
||||
cmp dword[editLU.size], 0
|
||||
jne @f
|
||||
inc ecx
|
||||
@@:
|
||||
cmp dword[editLD.size], 0
|
||||
jne @f
|
||||
inc ecx
|
||||
@@:
|
||||
cmp dword[editRU.size], 0
|
||||
jne @f
|
||||
inc ecx
|
||||
@@:
|
||||
cmp dword[editRD.size], 0
|
||||
jne @f
|
||||
inc ecx
|
||||
@@:
|
||||
|
||||
;теперь размер файла конфигурации в ecx
|
||||
mov dword[createFile.size], ecx ;положим размер байт в структуру создания/перезаписи файла
|
||||
mcall 68, 12, ecx ;выделяем блок памяти под буфер содержимого
|
||||
@ -230,7 +258,10 @@ applyButton:
|
||||
;иначе здесь нужно вывести окно с ошибкой !!!
|
||||
.end:
|
||||
mcall 68, 13, dword[createFile.data_adr] ;освобождаем память под буфер
|
||||
call restartHotAnglesApp ;ïåðåçàïóñêàåì @HOTANGLES
|
||||
call finishHotAnglesApp ;завершаем работу всех копий сервиса @HOTANGLES
|
||||
call loadConfig ;перезагружаем файл конфига
|
||||
call draw_window ;перерисовываем окно
|
||||
call startHotAnglesApp ;перезапускаем @HOTANGLES
|
||||
pop ecx ebx eax
|
||||
ret
|
||||
|
||||
@ -260,7 +291,7 @@ compareBytes2:
|
||||
ret
|
||||
|
||||
|
||||
restartHotAnglesApp:
|
||||
finishHotAnglesApp:
|
||||
;находим все копии приложения по имени и завершаем их
|
||||
push eax ebx ecx esi edi
|
||||
;указатели, которые никогда не меняются:
|
||||
@ -275,7 +306,7 @@ restartHotAnglesApp:
|
||||
|
||||
call compareBytes2 ;сравниваем имя
|
||||
cmp eax, 0
|
||||
jne restartHotAnglesApp.next ;åñëè íå ñîâïàëî, òî ïåðåõîäèì íà ñëåäóþùèé ñëîò
|
||||
jne finishHotAnglesApp.next ;если не совпало, то переходим на следующий слот
|
||||
|
||||
;push eax ebx ecx
|
||||
mcall 18, 2, ecx ;иначе завершаем слот
|
||||
@ -288,7 +319,9 @@ restartHotAnglesApp:
|
||||
jmp @b
|
||||
@@:
|
||||
pop edi esi ecx ebx eax
|
||||
ret
|
||||
|
||||
startHotAnglesApp:
|
||||
;запускаем приложение заново
|
||||
push eax ebx
|
||||
mcall 70, startAppData
|
||||
|
@ -35,10 +35,11 @@ Hot Angles
|
||||
[-] используется маленький шрифт текста;
|
||||
[-] нет возможности запуска приложения с параметрами;
|
||||
[-] знак минус не влияет на попытку запуска в конкретном углу;
|
||||
[-] пустое поле в конфигураторе и пустая строка в конфигурационном файле неверно обрабатываются;
|
||||
[+] пустое поле в конфигураторе и пустая строка в конфигурационном файле неверно обрабатываются;
|
||||
[-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles;
|
||||
[-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция;
|
||||
[-] режим жеста/направления: зажимаем активирующую клавишу, после этого приложение анализирует мышь, в зависимости от направления движения мыши (от начальных координат в момент активации опции) выбирается активируемый угол - происходит реакция;
|
||||
[-] добавить диалог выбора пути OpenDialog в конфигураторе;
|
||||
[+] переход на EditBox из библиотеки box_lib;
|
||||
[+] размазывание текста или его наслоение при вводе в поле EditBox'а;
|
||||
[+] после запуска приложения, все поля находятся в фокусе (это фича из-за бага в компоненте EditBox);
|
||||
|
Loading…
Reference in New Issue
Block a user