Page 2 of 2

Posted: Sun Feb 20, 2011 5:07 pm
by Xephon
Тестовая
Все пришло в норму.
...обновление SearchReplace.js и LinesFilter.js для поддержки масштаба отличного от 96 dpi
Аааа! Наконец-то, спасибо большое!

Posted: Sun Feb 20, 2011 5:18 pm
by Infocatcher
Instructor wrote:А также внимание бонус - обновление SearchReplace.js и LinesFilter.js для поддержки масштаба отличного от 96 dpi :)
Не проще было заменить все вызовы oSys.Call("user32::CreateWindowEx" + _TCHAR, ...) на вызовы вспомогательной функции со ScaleX() и ScaleY() внутри?

Code: Select all

var scale = new Scale(0, hMainWnd);

hWndDialog = createWindowEx(
	0,             //dwExStyle
	pClassName,    //lpClassName
	0,             //lpWindowName
	0x90CE0000,    //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME
	0,             //x
	0,             //y
	392,           //nWidth
	230,           //nHeight
	hMainWnd,      //hWndParent
	0,             //ID
	hInstanceDLL,  //hInstance
	DialogCallback //Script function callback. To use it class must be registered by WindowRegisterClass.
);

function createWindowEx(dwExStyle, lpClassName, lpWindowName, styles, x, y, w, h, hWndParent, id, hInstance, callback) {
	return oSys.Call(
		"user32::CreateWindowEx" + _TCHAR,
		dwExStyle,
		lpClassName,
		lpWindowName,
		styles,
		scale.x(x),
		scale.y(y),
		scale.x(w),
		scale.y(h),
		hWndParent,
		id,
		hInstance,
		callback
	);
}
function Scale(hDC, hWnd) {
	var hNewDC = hDC || oSys.Call("user32::GetDC", hWnd);
	if(hNewDC) {
		this._x = oSys.Call("gdi32::GetDeviceCaps", hNewDC, 88 /*LOGPIXELSX*/);
		this._y = oSys.Call("gdi32::GetDeviceCaps", hNewDC, 90 /*LOGPIXELSY*/);

		//Align to 16 pixel
		this._x += this._x % 16;
		this._y += this._y % 16;

		if(!hDC) oSys.Call("user32::ReleaseDC", hWnd, hNewDC);

		this.x = function(x) {
			return oSys.Call("kernel32::MulDiv", x, this._x, 96);
		};
		this.y = function(y) {
			return oSys.Call("kernel32::MulDiv", y, this._y, 96);
		};
	}
	else {
		this.x = this.y = function(n) {
			return n;
		};
	}
}


[Upd]
И еще бы как-нибудь ширину границы окна учитывать. =/

[Upd – 2]
Или оно не нужно. Хм.

Posted: Mon Feb 21, 2011 3:24 pm
by Instructor
Lenchik
Тестовая.

Infocatcher
С какой стороны не смотри на горшок - все равно горшок :)

Posted: Mon Feb 21, 2011 4:37 pm
by Lenchik
Instructor wrote: Тестовая.
Успешно убралось исчезание содержимого страницы при откате назад.
Однако выделение всего файла (и соответственно съезжание всего курсора и положения окна на конец файла) - осталось по-прежнему.

Добавлю ещё один баг к меню замены:
Выделяем кусок текста. Вызываем меню замены. В этом меню выбираем "В выделении". Записываем что и на что заменить и тыкаем "заменить". После этого сбрасывается выделение ранее выделенного куска текста и стоит выделение первого найденного текста (Кстати, после этого "find next" тоже уже не работает). Тыкаем "заменить" ещё раз и получаем треньканье о завершении поиска и собственно замену первого текущего слова.
Хотя по-идее мы должны были бы при помощи "найти далее" и "заменить" ходить и перебирать и при необходимости заменять слова внутри изначально выделенного (на момент вызова диалога поиска) куска текста. Что-то в этих связанных багах связано с запоминанием состояний и области выделения и предпочтения текущей области. Возможна еще ситуация, когда при старте поиска в выделении, возвращаться назад при помощи установки соответствующего переключателя. (То есть область выделения желательно помнить в течение всего времени существования этой копии диалога)
Надеюсь, я понятно изложил свои мысли и домыслы.

Posted: Mon Feb 21, 2011 5:09 pm
by Infocatcher
Instructor wrote:С какой стороны не смотри на горшок - все равно горшок :)
Может быть, но горшками поменьше проще орудовать. :)

Posted: Mon Feb 21, 2011 5:12 pm
by Instructor
Немного поломалось обновление вертикальной прокрутки обновил тестовую.
Lenchik wrote:Однако выделение всего файла (и соответственно съезжание всего курсора и положения окна на конец файла) - осталось по-прежнему.
Это ожидаемое поведение редактора, чтобы этого избежать включаем "Scroll::NoScroll".
Добавлю ещё один баг к меню замены:
Это ожидаемое поведение редактора - запоминание области поиска не реализовано.

Posted: Mon Feb 21, 2011 5:52 pm
by VladSh
Instructor wrote:Это ожидаемое поведение редактора - запоминание области поиска не реализовано.
Да, и тема такая даже была.

Posted: Mon Feb 21, 2011 6:19 pm
by Lenchik
Instructor wrote:
Lenchik wrote:Однако выделение всего файла (и соответственно съезжание всего курсора и положения окна на конец файла) - осталось по-прежнему.
Это ожидаемое поведение редактора, чтобы этого избежать включаем "Scroll::NoScroll".
Выделение всего содержимого тоже ожидаемое поведение?!
NoScroll помог, спасибо.

Мне кажется, что кнопку Cancel/Отмена в диалоге замены стоит переименовать в Close/Закрыть поскольку она не отменяет действий в этом диалоге, а закрывает его. Во всяком случае заметной мне как пользователю отмены чего-либо или незапоминания сделанных настроек не происходит. Что при закрытии крестиком в правом вверхнем углу, что при "отмене" запоминается положение radio элементов, но не запоминается выбор того, что искать и чем заменить (сам поиск/замена не производился - были выбраны другие значения из списка в целях теста поведения).

Re: Релиз AkelPad 4.5.4

Posted: Fri Mar 04, 2011 12:54 am
by Infocatcher
Instructor wrote:Добавлено: при закрытии программы, в сообщение о сохранении документа добавлен вариант "Нет для всех".
Мне кажется, нехорошо при последовательном закрытии вкладок менять размер диалога – под курсором может оказаться уже другая кнопка.
Допустим, есть несколько несохраненных вкладок. Закрываем окно. Видим Да/Нет/Нет для всех/Отмена (оно еще и по Ctrl+C как стандартные диалоги не копируется, что не есть хорошо). Смотрим на текст, мышкой жмем на Нет. И так для нескольких файлов. А в последний раз нам под курсор подло подсовывают Да. :)

Posted: Fri Mar 04, 2011 4:12 pm
by Instructor
Infocatcher
Про Ctrl+C не знал :) В 4.5.6 не будет "подло подсовываться ".

Posted: Fri Mar 04, 2011 4:57 pm
by Infocatcher
Instructor
Неужели переписывали, если требовалось? :D
Впрочем, HyperSnap, например, может текст захватывать.