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