[BUG_FIXED] Fix a crash issue while launch Fin in file (regression since the last svn commit).

[BUG_FIXED] Fix a crash issue while deleting the last line.
[BUG_FIXED] Fix a bug of plugin message NPPM_GETPLUGINSCONFIGDIR (regression since the last svn commit).
[NEW_FEATURE] User can define different size of TAB by each language (in progress).
[NEW_FEATURE] Add new plugin notification NPPN_DOCORDERCHANGED to notify plugins that document order is changed.

git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@518 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
Don Ho 2009-08-08 13:30:13 +00:00
parent 846a96e4a3
commit dd70030c5c
16 changed files with 133 additions and 48 deletions

View File

@ -462,3 +462,25 @@ TCHAR *BuildMenuFileName(TCHAR *buffer, int len, int pos, const TCHAR *filename)
} }
return buffer; return buffer;
} }
generic_string PathRemoveFileSpec(generic_string & path)
{
generic_string::size_type lastBackslash = path.find_last_of(TEXT('\\'));
if (lastBackslash == generic_string::npos)
{
if (path.size() >= 2 && path[1] == TEXT(':')) // "C:foo.bar" becomes "C:"
path.erase(2);
else
path.erase();
}
else
{
if (lastBackslash == 2 && path[1] == TEXT(':') && path.size() >= 3) // "C:\foo.exe" becomes "C:\"
path.erase(3);
else if (lastBackslash == 0 && path.size() > 1) // "\foo.exe" becomes "\"
path.erase(1);
else
path.erase(lastBackslash);
}
return path;
}

View File

@ -138,5 +138,7 @@ private:
#define REBARBAND_SIZE sizeof(REBARBANDINFO) #define REBARBAND_SIZE sizeof(REBARBANDINFO)
#endif #endif
generic_string PathRemoveFileSpec(generic_string & path);
#endif //M30_IDE_COMMUN_H #endif //M30_IDE_COMMUN_H

View File

@ -267,6 +267,7 @@ enum winVer{WV_UNKNOWN, WV_WIN32S, WV_95, WV_98, WV_ME, WV_NT, WV_W2K, WV_XP, WV
// BOOL NPPM_ADDREBAR(INT ID, 0) // BOOL NPPM_ADDREBAR(INT ID, 0)
//Use ID assigned with NPPM_ADDREBAR //Use ID assigned with NPPM_ADDREBAR
*/ */
#define NPPM_HIDETOOLBAR (NPPMSG + 70) #define NPPM_HIDETOOLBAR (NPPMSG + 70)
// BOOL NPPM_HIDETOOLBAR(0, BOOL hideOrNot) // BOOL NPPM_HIDETOOLBAR(0, BOOL hideOrNot)
// if hideOrNot is set as TRUE then tool bar will be hidden // if hideOrNot is set as TRUE then tool bar will be hidden
@ -435,4 +436,9 @@ enum winVer{WV_UNKNOWN, WV_WIN32S, WV_95, WV_98, WV_ME, WV_NT, WV_W2K, WV_XP, WV
#define DOCSTAUS_READONLY 1 #define DOCSTAUS_READONLY 1
#define DOCSTAUS_BUFFERDIRTY 2 #define DOCSTAUS_BUFFERDIRTY 2
#define NPPN_DOCORDERCHANGED (NPPN_FIRST + 16) // To notify plugins that document order is changed
//scnNotification->nmhdr.code = NPPN_DOCORDERCHANGED;
//scnNotification->nmhdr.hwndFrom = newIndex;
//scnNotification->nmhdr.idFrom = BufferID;
#endif //NOTEPAD_PLUS_MSGS_H #endif //NOTEPAD_PLUS_MSGS_H

View File

@ -271,10 +271,6 @@ void Notepad_plus::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLine, CmdL
else else
::MoveWindow(_hSelf, newUpperLeft.x, newUpperLeft.y, nppGUI._appPos.right, nppGUI._appPos.bottom, TRUE); ::MoveWindow(_hSelf, newUpperLeft.x, newUpperLeft.y, nppGUI._appPos.right, nppGUI._appPos.bottom, TRUE);
TCHAR nppBinPath[MAX_PATH*4];
::GetModuleFileName(NULL, nppBinPath, MAX_PATH*4);
_nppPath = nppBinPath;
if (nppGUI._tabStatus & TAB_MULTILINE) if (nppGUI._tabStatus & TAB_MULTILINE)
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_DRAWTABBAR_MULTILINE, 0); ::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_DRAWTABBAR_MULTILINE, 0);
@ -305,12 +301,12 @@ void Notepad_plus::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLine, CmdL
vector<generic_string> patterns; vector<generic_string> patterns;
patterns.push_back(TEXT("*.xml")); patterns.push_back(TEXT("*.xml"));
generic_string nppDir(_nppPath); generic_string nppDir(pNppParams->getNppPath());
::PathRemoveFileSpec((TCHAR *)nppDir.c_str()); // <- nppDir is modified via the string pointer ::PathRemoveFileSpec(nppDir);
#ifdef UNICODE #ifdef UNICODE
LocalizationSwitcher & localizationSwitcher = pNppParams->getLocalizationSwitcher(); LocalizationSwitcher & localizationSwitcher = pNppParams->getLocalizationSwitcher();
wstring localizationDir = nppDir.c_str(); // <- should use the pointer to avoid the constructor of copy wstring localizationDir = nppDir.c_str();
localizationDir += TEXT("\\localization\\"); localizationDir += TEXT("\\localization\\");
getMatchedFileNames(localizationDir.c_str(), patterns, fileNames, false, false); getMatchedFileNames(localizationDir.c_str(), patterns, fileNames, false, false);
@ -720,7 +716,7 @@ BufferID Notepad_plus::doOpen(const TCHAR *fileName, bool isReadOnly)
{ {
TCHAR str2display[MAX_PATH*2]; TCHAR str2display[MAX_PATH*2];
generic_string longFileDir(longFileName); generic_string longFileDir(longFileName);
PathRemoveFileSpec((TCHAR *)longFileDir.c_str()); // <- Modify std::string via pointer PathRemoveFileSpec(longFileDir);
if (PathFileExists(longFileDir.c_str())) if (PathFileExists(longFileDir.c_str()))
{ {
@ -1146,8 +1142,8 @@ bool Notepad_plus::fileSave(BufferID id)
// std::string path should be a temp throwable variable // std::string path should be a temp throwable variable
generic_string path = fn; generic_string path = fn;
::PathRemoveFileSpec((LPTSTR)path.c_str()); // <- here we modify its data w/o using its interface ::PathRemoveFileSpec(path);
fn_dateTime_bak = path.c_str(); // <- here it must be path.c_str() but not path. Because the constructor of copy processes differently string and char * fn_dateTime_bak = path.c_str();
fn_dateTime_bak += TEXT("\\"); fn_dateTime_bak += TEXT("\\");
@ -3091,7 +3087,7 @@ void Notepad_plus::specialCmd(int id, int param)
void Notepad_plus::command(int id) void Notepad_plus::command(int id)
{ {
NppParameters *pNppParam = NppParameters::getInstance(); //NppParameters *pNppParam = NppParameters::getInstance();
switch (id) switch (id)
{ {
case IDM_FILE_NEW: case IDM_FILE_NEW:
@ -3286,7 +3282,7 @@ void Notepad_plus::command(int id)
else if (id == IDM_EDIT_CURRENTDIRTOCLIP) else if (id == IDM_EDIT_CURRENTDIRTOCLIP)
{ {
generic_string dir(buf->getFullPathName()); generic_string dir(buf->getFullPathName());
PathRemoveFileSpec((TCHAR *)dir.c_str()); PathRemoveFileSpec(dir);
str2Cliboard(dir.c_str()); str2Cliboard(dir.c_str());
} }
else if (id == IDM_EDIT_FILENAMETOCLIP) else if (id == IDM_EDIT_FILENAMETOCLIP)
@ -4131,7 +4127,7 @@ void Notepad_plus::command(int id)
case IDM_SETTING_TAB_REPLCESPACE: case IDM_SETTING_TAB_REPLCESPACE:
{ {
NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI()); NppGUI & nppgui = (NppGUI &)((NppParameters::getInstance())->getNppGUI());
nppgui._tabReplacedBySpace = !nppgui._tabReplacedBySpace; nppgui._tabReplacedBySpace = !nppgui._tabReplacedBySpace;
_pEditView->execute(SCI_SETUSETABS, !nppgui._tabReplacedBySpace); _pEditView->execute(SCI_SETUSETABS, !nppgui._tabReplacedBySpace);
//checkMenuItem(IDM_SETTING_TAB_REPLCESPACE, nppgui._tabReplacedBySpace); //checkMenuItem(IDM_SETTING_TAB_REPLCESPACE, nppgui._tabReplacedBySpace);
@ -4141,7 +4137,7 @@ void Notepad_plus::command(int id)
case IDM_SETTING_TAB_SIZE: case IDM_SETTING_TAB_SIZE:
{ {
ValueDlg tabSizeDlg; ValueDlg tabSizeDlg;
NppGUI & nppgui = (NppGUI &)(pNppParam->getNppGUI()); NppGUI & nppgui = (NppGUI &)((NppParameters::getInstance())->getNppGUI());
tabSizeDlg.init(_hInst, _preference.getHSelf(), nppgui._tabSize, TEXT("Tab Size : ")); tabSizeDlg.init(_hInst, _preference.getHSelf(), nppgui._tabSize, TEXT("Tab Size : "));
POINT p; POINT p;
::GetCursorPos(&p); ::GetCursorPos(&p);
@ -4290,8 +4286,8 @@ void Notepad_plus::command(int id)
case IDM_HELP : case IDM_HELP :
{ {
generic_string tmp(_nppPath); generic_string tmp((NppParameters::getInstance())->getNppPath());
::PathRemoveFileSpec((TCHAR *)tmp.c_str()); ::PathRemoveFileSpec(tmp);
generic_string nppHelpPath = tmp.c_str(); generic_string nppHelpPath = tmp.c_str();
nppHelpPath += TEXT("\\NppHelp.chm"); nppHelpPath += TEXT("\\NppHelp.chm");
@ -4343,7 +4339,7 @@ void Notepad_plus::command(int id)
case IDM_UPDATE_NPP : case IDM_UPDATE_NPP :
{ {
generic_string updaterDir = _nppPath; generic_string updaterDir = (NppParameters::getInstance())->getNppPath();
updaterDir += TEXT("\\updater\\"); updaterDir += TEXT("\\updater\\");
generic_string updaterFullPath = updaterDir + TEXT("gup.exe"); generic_string updaterFullPath = updaterDir + TEXT("gup.exe");
generic_string param = TEXT("-verbose -v"); generic_string param = TEXT("-verbose -v");
@ -4520,7 +4516,7 @@ void Notepad_plus::command(int id)
else if ((id >= ID_MACRO) && (id < ID_MACRO_LIMIT)) else if ((id >= ID_MACRO) && (id < ID_MACRO_LIMIT))
{ {
int i = id - ID_MACRO; int i = id - ID_MACRO;
vector<MacroShortcut> & theMacros = pNppParam->getMacroList(); vector<MacroShortcut> & theMacros = (NppParameters::getInstance())->getMacroList();
Macro macro = theMacros[i].getMacro(); Macro macro = theMacros[i].getMacro();
_pEditView->execute(SCI_BEGINUNDOACTION); _pEditView->execute(SCI_BEGINUNDOACTION);
@ -4533,7 +4529,7 @@ void Notepad_plus::command(int id)
else if ((id >= ID_USER_CMD) && (id < ID_USER_CMD_LIMIT)) else if ((id >= ID_USER_CMD) && (id < ID_USER_CMD_LIMIT))
{ {
int i = id - ID_USER_CMD; int i = id - ID_USER_CMD;
vector<UserCommand> & theUserCommands = pNppParam->getUserCommandList(); vector<UserCommand> & theUserCommands = (NppParameters::getInstance())->getUserCommandList();
UserCommand ucmd = theUserCommands[i]; UserCommand ucmd = theUserCommands[i];
Command cmd(ucmd.getCmd()); Command cmd(ucmd.getCmd());
@ -7690,6 +7686,20 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
} }
break; break;
case NPPM_INTERNAL_DOCORDERCHANGED :
{
BufferID id = _pEditView->getCurrentBufferID();
// Notify plugins that current file is about to be closed
SCNotification scnN;
scnN.nmhdr.code = NPPN_DOCORDERCHANGED;
scnN.nmhdr.hwndFrom = (void *)lParam;
scnN.nmhdr.idFrom = (uptr_t)id;
_pluginsManager.notify(&scnN);
return TRUE;
}
break;
case WM_SIZE: case WM_SIZE:
{ {
RECT rc; RECT rc;
@ -8833,7 +8843,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
generic_string pluginsConfigDirPrefix = pNppParam->getAppDataNppDir(); generic_string pluginsConfigDirPrefix = pNppParam->getAppDataNppDir();
if (pluginsConfigDirPrefix == TEXT("")) if (pluginsConfigDirPrefix == TEXT(""))
pluginsConfigDirPrefix = _nppPath; pluginsConfigDirPrefix = pNppParam->getNppPath();
const TCHAR *secondPart = TEXT("plugins\\Config"); const TCHAR *secondPart = TEXT("plugins\\Config");
@ -9759,7 +9769,7 @@ void Notepad_plus::notifyBufferChanged(Buffer * buffer, int mask) {
checkDocState(); checkDocState();
setTitle(); setTitle();
generic_string dir(buffer->getFullPathName()); generic_string dir(buffer->getFullPathName());
PathRemoveFileSpec((TCHAR *)dir.c_str()); PathRemoveFileSpec(dir);
setWorkingDir(dir.c_str()); setWorkingDir(dir.c_str());
} }
@ -9812,7 +9822,7 @@ void Notepad_plus::notifyBufferActivated(BufferID bufid, int view) {
setDisplayFormat(buf->getFormat()); setDisplayFormat(buf->getFormat());
enableConvertMenuItems(buf->getFormat()); enableConvertMenuItems(buf->getFormat());
generic_string dir(buf->getFullPathName()); generic_string dir(buf->getFullPathName());
PathRemoveFileSpec((TCHAR *)dir.c_str()); PathRemoveFileSpec(dir);
setWorkingDir(dir.c_str()); setWorkingDir(dir.c_str());
setTitle(); setTitle();
//Make sure the colors of the tab controls match //Make sure the colors of the tab controls match

View File

@ -66,6 +66,7 @@ enum WindowStatus { //bitwise mask
WindowMask = 0x07 WindowMask = 0x07
}; };
/* /*
//Plugins rely on #define's //Plugins rely on #define's
enum Views { enum Views {
@ -223,7 +224,6 @@ public:
static HWND gNppHWND; //static handle to Notepad++ window, NULL if non-existant static HWND gNppHWND; //static handle to Notepad++ window, NULL if non-existant
private: private:
static const TCHAR _className[32]; static const TCHAR _className[32];
generic_string _nppPath;
Window *_pMainWindow; Window *_pMainWindow;
DockingManager _dockingManager; DockingManager _dockingManager;

View File

@ -630,6 +630,10 @@ const int NB_MAX_FINDHISTORY_REPLACE = 30;
const int NB_MAX_FINDHISTORY_PATH = 30; const int NB_MAX_FINDHISTORY_PATH = 30;
const int NB_MAX_FINDHISTORY_FILTER = 20; const int NB_MAX_FINDHISTORY_FILTER = 20;
const int MASK_ReplaceBySpc = 0x80;
const int MASK_TabSize = 0x7F;
struct Lang struct Lang
{ {
LangType _langID; LangType _langID;
@ -640,8 +644,16 @@ struct Lang
const TCHAR *_pCommentStart; const TCHAR *_pCommentStart;
const TCHAR *_pCommentEnd; const TCHAR *_pCommentEnd;
Lang() {for (int i = 0 ; i < NB_LIST ; _langKeyWordList[i] = NULL ,i++);}; bool _isTabReplacedBySpace;
Lang(LangType langID, const TCHAR *name) : _langID(langID), _langName(name?name:TEXT("")){ int _tabSize;
Lang(): _langID(L_TXT), _langName(TEXT("")), _defaultExtList(NULL), _pCommentLineSymbol(NULL), _pCommentStart(NULL),
_pCommentEnd(NULL), _isTabReplacedBySpace(false), _tabSize(-1) {
for (int i = 0 ; i < NB_LIST ; _langKeyWordList[i] = NULL ,i++);
};
Lang(LangType langID, const TCHAR *name) : _langID(langID), _langName(name?name:TEXT("")),\
_defaultExtList(NULL), _pCommentLineSymbol(NULL), _pCommentStart(NULL),\
_pCommentEnd(NULL), _isTabReplacedBySpace(false), _tabSize(-1) {
for (int i = 0 ; i < NB_LIST ; _langKeyWordList[i] = NULL ,i++); for (int i = 0 ; i < NB_LIST ; _langKeyWordList[i] = NULL ,i++);
}; };
~Lang() {}; ~Lang() {};
@ -661,6 +673,12 @@ struct Lang
_pCommentEnd = commentEnd; _pCommentEnd = commentEnd;
}; };
void setTabInfo(int tabInfo) {
if (tabInfo == -1 || tabInfo == 0) return;
_isTabReplacedBySpace = (tabInfo & MASK_ReplaceBySpc) != 0;
_tabSize = tabInfo & MASK_TabSize;
};
const TCHAR * getDefaultExtList() const { const TCHAR * getDefaultExtList() const {
return _defaultExtList; return _defaultExtList;
}; };
@ -675,6 +693,11 @@ struct Lang
LangType getLangID() const {return _langID;}; LangType getLangID() const {return _langID;};
const TCHAR * getLangName() const {return _langName.c_str();}; const TCHAR * getLangName() const {return _langName.c_str();};
int getTabInfo() const {
if (_tabSize == -1) return -1;
return _isTabReplacedBySpace?0x80:0x00 | _tabSize;
};
}; };
class UserLangContainer class UserLangContainer

View File

@ -333,6 +333,7 @@ public :
return _pManager->docLength(_id); return _pManager->docLength(_id);
}; };
Lang * getCurrentLang() const;
private : private :
FileManager * _pManager; FileManager * _pManager;
bool _canNotify; bool _canNotify;
@ -368,7 +369,6 @@ private :
static long _recentTagCtr; static long _recentTagCtr;
void updateTimeStamp(); void updateTimeStamp();
Lang * getCurrentLang() const;
int indexOfReference(ScintillaEditView * identifier) const; int indexOfReference(ScintillaEditView * identifier) const;

View File

@ -1447,6 +1447,7 @@ void ScintillaEditView::activateBuffer(BufferID buffer)
// Due to execute(SCI_CLEARDOCUMENTSTYLE); in defineDocType() function // Due to execute(SCI_CLEARDOCUMENTSTYLE); in defineDocType() function
// defineDocType() function should be called here, but not be after the fold info loop // defineDocType() function should be called here, but not be after the fold info loop
defineDocType(_currentBuffer->getLangType()); defineDocType(_currentBuffer->getLangType());
setTabSettings(_currentBuffer->getCurrentLang());
if (_currentBuffer->getNeedsLexing()) { if (_currentBuffer->getNeedsLexing()) {
restyleBuffer(); restyleBuffer();
@ -2579,3 +2580,19 @@ void ScintillaEditView::runMarkers(bool doHide, int searchStart, bool endOfDoc,
} }
} }
} }
void ScintillaEditView::setTabSettings(Lang *lang)
{
if (lang->_tabSize != -1 && lang->_tabSize != 0)
{
execute(SCI_SETTABWIDTH, lang->_tabSize);
execute(SCI_SETUSETABS, lang->_isTabReplacedBySpace);
}
else
{
const NppGUI & nppgui = (NppParameters::getInstance())->getNppGUI();
execute(SCI_SETTABWIDTH, nppgui._tabSize);
execute(SCI_SETUSETABS, nppgui._tabReplacedBySpace);
}
}

View File

@ -805,6 +805,7 @@ protected:
} }
}; };
void setTabSettings(Lang *lang);
bool expandWordSelection(); bool expandWordSelection();
}; };

View File

@ -594,18 +594,20 @@ void WordStyleDlg::switchToTheme()
_themeName.clear(); _themeName.clear();
_themeName.assign( (TCHAR *)::SendMessage(_hSwitch2ThemeCombo, CB_GETITEMDATA, iSel, 0) ); _themeName.assign( (TCHAR *)::SendMessage(_hSwitch2ThemeCombo, CB_GETITEMDATA, iSel, 0) );
if ( _isThemeDirty ) { if (_isThemeDirty)
{
TCHAR themeFileName[MAX_PATH]; TCHAR themeFileName[MAX_PATH];
lstrcpy(themeFileName, prevThemeName.c_str()); lstrcpy(themeFileName, prevThemeName.c_str());
PathStripPath( themeFileName ); PathStripPath(themeFileName);
PathRemoveExtension( themeFileName ); PathRemoveExtension(themeFileName);
int mb_response = int mb_response =
::MessageBox( _hSelf, ::MessageBox( _hSelf,
TEXT(" Unsaved changes are about to be discarded!\n") TEXT(" Unsaved changes are about to be discarded!\n")
TEXT(" Do you want to save your changes before switching themes?"), TEXT(" Do you want to save your changes before switching themes?"),
themeFileName, themeFileName,
MB_ICONWARNING | MB_YESNO | MB_APPLMODAL | MB_SETFOREGROUND ); MB_ICONWARNING | MB_YESNO | MB_APPLMODAL | MB_SETFOREGROUND );
if ( mb_response == IDYES ) (NppParameters::getInstance())->writeStyles(_lsArray, _globalStyles); if ( mb_response == IDYES )
(NppParameters::getInstance())->writeStyles(_lsArray, _globalStyles);
} }

View File

@ -36,14 +36,16 @@ public:
virtual void init(HINSTANCE hInst, HWND parent) virtual void init(HINSTANCE hInst, HWND parent)
{ {
StaticDialog::init(hInst, parent); StaticDialog::init(hInst, parent);
::GetModuleFileName((HMODULE)hInst, (TCHAR *)_moduleName.c_str(), MAX_PATH); TCHAR temp[MAX_PATH];
_moduleName = PathFindFileName(_moduleName.c_str()); ::GetModuleFileName((HMODULE)hInst, temp, MAX_PATH);
_moduleName = PathFindFileName(temp);
} }
void create(tTbData * data, bool isRTL = false){ void create(tTbData * data, bool isRTL = false){
StaticDialog::create(_dlgID, isRTL); StaticDialog::create(_dlgID, isRTL);
::GetWindowText(_hSelf, (LPTSTR)_pluginName.c_str(), MAX_PATH); TCHAR temp[MAX_PATH];
::GetWindowText(_hSelf, temp, MAX_PATH);
_pluginName = temp;
// user information // user information
data->hClient = _hSelf; data->hClient = _hSelf;
data->pszName = (TCHAR *)_pluginName.c_str(); data->pszName = (TCHAR *)_pluginName.c_str();

View File

@ -62,8 +62,8 @@ public :
_splitter.display(toShow); _splitter.display(toShow);
}; };
virtual void redraw() const { virtual void redraw() const {
_pWin0->redraw(); _pWin0->redraw(true);
_pWin1->redraw(); _pWin1->redraw(true);
}; };
void setWin0(Window *pWin) { void setWin0(Window *pWin) {

View File

@ -17,6 +17,7 @@
#include "TabBar.h" #include "TabBar.h"
#include "Common.h" #include "Common.h"
//#include "Notepad_plus_msgs.h"
const COLORREF blue = RGB(0, 0, 0xFF); const COLORREF blue = RGB(0, 0, 0xFF);
const COLORREF black = RGB(0, 0, 0); const COLORREF black = RGB(0, 0, 0);
@ -798,12 +799,13 @@ void TabBarPlus::exchangeItemData(POINT point)
::SendMessage(_hSelf, TCM_SETITEM, i, reinterpret_cast<LPARAM>(&itemData_shift)); ::SendMessage(_hSelf, TCM_SETITEM, i, reinterpret_cast<LPARAM>(&itemData_shift));
} }
} }
//
::SendMessage(_hSelf, TCM_SETITEM, nTab, reinterpret_cast<LPARAM>(&itemData_nDraggedTab)); ::SendMessage(_hSelf, TCM_SETITEM, nTab, reinterpret_cast<LPARAM>(&itemData_nDraggedTab));
//3. update the current index //3. update the current index
_nTabDragged = nTab; _nTabDragged = nTab;
// Tell Notepad_plus to notifiy plugins that a D&D operation was done (so doc index has been changed)
::SendMessage(_hParent, NPPM_INTERNAL_DOCORDERCHANGED, 0, _nTabDragged);
} }
} }
else else

View File

@ -50,9 +50,10 @@ public:
redraw(); redraw();
}; };
virtual void redraw() const { virtual void redraw(bool forceUpdate = false) const {
::InvalidateRect(_hSelf, NULL, TRUE); ::InvalidateRect(_hSelf, NULL, TRUE);
::UpdateWindow(_hSelf); if (forceUpdate)
::UpdateWindow(_hSelf);
}; };
virtual void getClientRect(RECT & rc) const { virtual void getClientRect(RECT & rc) const {

View File

@ -309,7 +309,10 @@
#define NPPM_INTERNAL_SEARCH_GOTOPREVFOUND (NOTEPADPLUS_USER_INTERNAL + 29) #define NPPM_INTERNAL_SEARCH_GOTOPREVFOUND (NOTEPADPLUS_USER_INTERNAL + 29)
#define NPPM_INTERNAL_FOCUS_ON_FOUND_RESULTS (NOTEPADPLUS_USER_INTERNAL + 30) #define NPPM_INTERNAL_FOCUS_ON_FOUND_RESULTS (NOTEPADPLUS_USER_INTERNAL + 30)
#define NPPM_INTERNAL_RELOADSTYLERS (NOTEPADPLUS_USER_INTERNAL + 31) #define NPPM_INTERNAL_RELOADSTYLERS (NOTEPADPLUS_USER_INTERNAL + 31)
#define NPPM_INTERNAL_DOCORDERCHANGED (NOTEPADPLUS_USER_INTERNAL + 32)
//wParam: 0
//lParam: document new index
// See Notepad_plus_msgs.h // See Notepad_plus_msgs.h
//#define NOTEPADPLUS_USER (WM_USER + 1000) //#define NOTEPADPLUS_USER (WM_USER + 1000)
@ -342,6 +345,8 @@
//lParam: name to set (TCHAR*) //lParam: name to set (TCHAR*)
//Buffer must have been previously unnamed (eg "new 1" document types) //Buffer must have been previously unnamed (eg "new 1" document types)
#define SCINTILLA_USER (WM_USER + 2000) #define SCINTILLA_USER (WM_USER + 2000)

View File

@ -633,14 +633,6 @@
RelativePath="..\src\resource.h" RelativePath="..\src\resource.h"
> >
</File> </File>
<File
RelativePath="..\src\WinControls\ColourPicker\resource.h"
>
</File>
<File
RelativePath="..\src\WinControls\Preference\resource.h"
>
</File>
<File <File
RelativePath="..\src\WinControls\StaticDialog\RunDlg\RunDlg.h" RelativePath="..\src\WinControls\StaticDialog\RunDlg\RunDlg.h"
> >