[RELEASE_4_72] Fix the regression that the native language doesn't show in the menu.
Enhance the full screen feature (F11). git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@97 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
fae88016e9
commit
9d134b4cd4
@ -5561,6 +5561,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
NppGUI & nppGUI = (NppGUI &)pNppParam->getNppGUI();
|
NppGUI & nppGUI = (NppGUI &)pNppParam->getNppGUI();
|
||||||
|
|
||||||
// Menu
|
// Menu
|
||||||
|
_mainMenuHandle = ::GetMenu(_hSelf);
|
||||||
string pluginsTrans, windowTrans;
|
string pluginsTrans, windowTrans;
|
||||||
changeMenuLang(pluginsTrans, windowTrans);
|
changeMenuLang(pluginsTrans, windowTrans);
|
||||||
|
|
||||||
@ -5573,7 +5574,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
changeMenuShortcut(shortcuts[i].getID(), shortcuts[i].toString().c_str());
|
changeMenuShortcut(shortcuts[i].getID(), shortcuts[i].toString().c_str());
|
||||||
}
|
}
|
||||||
//::DrawMenuBar(_hSelf);
|
//::DrawMenuBar(_hSelf);
|
||||||
_mainMenuHandle = ::GetMenu(_hSelf);
|
|
||||||
|
|
||||||
_pDocTab = &_mainDocTab;
|
_pDocTab = &_mainDocTab;
|
||||||
_pEditView = &_mainEditView;
|
_pEditView = &_mainEditView;
|
||||||
@ -5883,6 +5884,33 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
::InsertMenu(hMenu, pos + i, MF_BYPOSITION, IDM_LANG_USER + i + 1, userLangContainer.getName());
|
::InsertMenu(hMenu, pos + i, MF_BYPOSITION, IDM_LANG_USER + i + 1, userLangContainer.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update context menu strings
|
||||||
|
vector<MenuItemUnit> & tmp = pNppParam->getContextMenuItems();
|
||||||
|
size_t len = tmp.size();
|
||||||
|
char menuName[64];
|
||||||
|
*menuName = 0;
|
||||||
|
size_t j, stlen;
|
||||||
|
for (size_t i = 0 ; i < len ; i++)
|
||||||
|
{
|
||||||
|
if (tmp[i]._itemName == "") {
|
||||||
|
::GetMenuString(_mainMenuHandle, tmp[i]._cmdID, menuName, 64, MF_BYCOMMAND);
|
||||||
|
stlen = strlen(menuName);
|
||||||
|
j = 0;
|
||||||
|
for(size_t k = 0; k < stlen; k++) {
|
||||||
|
if (menuName[k] == '\t') {
|
||||||
|
menuName[k] = 0;
|
||||||
|
break;
|
||||||
|
} else if (menuName[k] == '&') {
|
||||||
|
//skip
|
||||||
|
} else {
|
||||||
|
menuName[j] = menuName[k];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
menuName[j] = 0;
|
||||||
|
tmp[i]._itemName = menuName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-- Tool Bar Section --//
|
//-- Tool Bar Section --//
|
||||||
toolBarStatusType tbStatus = nppGUI._toolBarStatus;
|
toolBarStatusType tbStatus = nppGUI._toolBarStatus;
|
||||||
@ -6099,7 +6127,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
case WM_GETMINMAXINFO:
|
case WM_GETMINMAXINFO:
|
||||||
{
|
{
|
||||||
MINMAXINFO *pmmi = reinterpret_cast<MINMAXINFO *>(lParam);
|
MINMAXINFO *pmmi = reinterpret_cast<MINMAXINFO *>(lParam);
|
||||||
|
/*
|
||||||
if (_isfullScreen)
|
if (_isfullScreen)
|
||||||
{
|
{
|
||||||
pmmi->ptMaxSize.x = ::GetSystemMetrics(SM_CXSCREEN) + 2 * ::GetSystemMetrics(SM_CXSIZEFRAME) + 2;
|
pmmi->ptMaxSize.x = ::GetSystemMetrics(SM_CXSCREEN) + 2 * ::GetSystemMetrics(SM_CXSIZEFRAME) + 2;
|
||||||
@ -6116,8 +6144,9 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
*/
|
||||||
result = ::DefWindowProc(_hSelf, Message, wParam, lParam);
|
result = ::DefWindowProc(_hSelf, Message, wParam, lParam);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -6853,13 +6882,11 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
POINT p;
|
POINT p;
|
||||||
::GetCursorPos(&p);
|
::GetCursorPos(&p);
|
||||||
ContextMenu scintillaContextmenu;
|
ContextMenu scintillaContextmenu;
|
||||||
vector<MenuItemUnit> tmp = pNppParam->getContextMenuItems();
|
vector<MenuItemUnit> & tmp = pNppParam->getContextMenuItems();
|
||||||
vector<bool> isEnable;
|
vector<bool> isEnable;
|
||||||
for (size_t i = 0 ; i < tmp.size() ; i++)
|
for (size_t i = 0 ; i < tmp.size() ; i++)
|
||||||
{
|
{
|
||||||
if (tmp[i]._itemName == "")
|
isEnable.push_back((::GetMenuState(_mainMenuHandle, tmp[i]._cmdID, MF_BYCOMMAND)&MF_DISABLED) == 0);
|
||||||
getNameStrFromCmd(tmp[i]._cmdID, tmp[i]._itemName);
|
|
||||||
isEnable.push_back((::GetMenuState(::GetMenu(_hSelf), tmp[i]._cmdID, MF_BYCOMMAND)&MF_DISABLED) == 0);
|
|
||||||
}
|
}
|
||||||
scintillaContextmenu.create(_hSelf, tmp);
|
scintillaContextmenu.create(_hSelf, tmp);
|
||||||
for (size_t i = 0 ; i < isEnable.size() ; i++)
|
for (size_t i = 0 ; i < isEnable.size() ; i++)
|
||||||
@ -7086,7 +7113,7 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
|
|
||||||
case NPPM_SETMENUITEMCHECK:
|
case NPPM_SETMENUITEMCHECK:
|
||||||
{
|
{
|
||||||
::CheckMenuItem(::GetMenu(_hSelf), (UINT)wParam, MF_BYCOMMAND | ((BOOL)lParam ? MF_CHECKED : MF_UNCHECKED));
|
::CheckMenuItem(_mainMenuHandle, (UINT)wParam, MF_BYCOMMAND | ((BOOL)lParam ? MF_CHECKED : MF_UNCHECKED));
|
||||||
_toolBar.setCheck((int)wParam, bool(lParam != 0));
|
_toolBar.setCheck((int)wParam, bool(lParam != 0));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -7251,30 +7278,59 @@ void Notepad_plus::fullScreenToggle()
|
|||||||
_isfullScreen = !_isfullScreen;
|
_isfullScreen = !_isfullScreen;
|
||||||
if (_isfullScreen)
|
if (_isfullScreen)
|
||||||
{
|
{
|
||||||
::SystemParametersInfo(SPI_GETWORKAREA, 0, &_rcWorkArea, 0);
|
|
||||||
::SystemParametersInfo(SPI_SETWORKAREA, 0, 0, SPIF_SENDCHANGE);
|
|
||||||
::ShowWindow(wTaskBar, SW_HIDE);
|
|
||||||
|
|
||||||
_winPlace.length = sizeof(_winPlace);
|
_winPlace.length = sizeof(_winPlace);
|
||||||
::GetWindowPlacement(_hSelf, &_winPlace);
|
::GetWindowPlacement(_hSelf, &_winPlace);
|
||||||
|
|
||||||
int topStuff = ::GetSystemMetrics(SM_CYMENU) + ::GetSystemMetrics(SM_CYEDGE);
|
//Hide menu
|
||||||
topStuff += ::GetSystemMetrics(SM_CYCAPTION);
|
::SetMenu(_hSelf, NULL);
|
||||||
topStuff += _toolBar.getHeight() + 2;
|
|
||||||
|
|
||||||
::SetWindowPos(_hSelf, HWND_TOP,
|
//Hide window so windows can properly update it
|
||||||
-::GetSystemMetrics(SM_CXSIZEFRAME) - 1,
|
::ShowWindow(_hSelf, SW_HIDE);
|
||||||
-topStuff - 2,
|
|
||||||
::GetSystemMetrics(SM_CXSCREEN) + 2 * ::GetSystemMetrics(SM_CXSIZEFRAME) + 2,
|
//Get state of toolbar and hide it
|
||||||
::GetSystemMetrics(SM_CYSCREEN) + topStuff + ::GetSystemMetrics(SM_CYSIZEFRAME) + 3,
|
_prevTBState = _toolBar.getState();
|
||||||
0);
|
SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_TOOLBAR_HIDE, 0);
|
||||||
|
|
||||||
|
//Set popup style for fullscreen window and store the old style
|
||||||
|
_prevStyles = ::SetWindowLongPtr( _hSelf, GWL_STYLE, WS_POPUP );
|
||||||
|
if (!_prevStyles) { //something went wrong, use default settings
|
||||||
|
_prevStyles = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set topmost window, show the window and redraw it
|
||||||
|
::SetWindowPos(_hSelf, HWND_TOPMOST,0,0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),0);
|
||||||
|
::ShowWindow(_hSelf, SW_SHOW);
|
||||||
|
::SendMessage(_hSelf, WM_SIZE, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
::ShowWindow(wTaskBar, SW_SHOW);
|
//Hide window for updating, restore style and menu then restore position and Z-Order
|
||||||
|
::ShowWindow(_hSelf, SW_HIDE);
|
||||||
|
::SetMenu(_hSelf, _mainMenuHandle);
|
||||||
|
::SetWindowLongPtr( _hSelf, GWL_STYLE, _prevStyles);
|
||||||
|
::SetWindowPos(_hSelf, HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOREDRAW);
|
||||||
|
|
||||||
|
//Restore the toolbar to its previous state
|
||||||
|
int cmdToSend = 0;
|
||||||
|
switch(_prevTBState) {
|
||||||
|
case TB_HIDE:
|
||||||
|
cmdToSend = IDM_VIEW_TOOLBAR_HIDE;
|
||||||
|
break;
|
||||||
|
case TB_SMALL:
|
||||||
|
cmdToSend = IDM_VIEW_TOOLBAR_REDUCE;
|
||||||
|
break;
|
||||||
|
case TB_LARGE:
|
||||||
|
cmdToSend = IDM_VIEW_TOOLBAR_ENLARGE;
|
||||||
|
break;
|
||||||
|
case TB_STANDARD:
|
||||||
|
cmdToSend = IDM_VIEW_TOOLBAR_STANDARD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SendMessage(_hSelf, WM_COMMAND, cmdToSend, 0);
|
||||||
|
|
||||||
if (_winPlace.length)
|
if (_winPlace.length)
|
||||||
{
|
{
|
||||||
::SystemParametersInfo(SPI_SETWORKAREA, 0, &_rcWorkArea, 0);
|
|
||||||
if (_winPlace.showCmd == SW_SHOWMAXIMIZED)
|
if (_winPlace.showCmd == SW_SHOWMAXIMIZED)
|
||||||
{
|
{
|
||||||
::ShowWindow(_hSelf, SW_RESTORE);
|
::ShowWindow(_hSelf, SW_RESTORE);
|
||||||
@ -7283,8 +7339,13 @@ void Notepad_plus::fullScreenToggle()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
::SetWindowPlacement(_hSelf, &_winPlace);
|
::SetWindowPlacement(_hSelf, &_winPlace);
|
||||||
|
::SendMessage(_hSelf, WM_SIZE, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else //fallback
|
||||||
|
{
|
||||||
|
::ShowWindow(_hSelf, SW_SHOW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
::SetForegroundWindow(_hSelf);
|
::SetForegroundWindow(_hSelf);
|
||||||
}
|
}
|
||||||
|
@ -401,6 +401,8 @@ private:
|
|||||||
|
|
||||||
WindowsMenu _windowsMenu;
|
WindowsMenu _windowsMenu;
|
||||||
HMENU _mainMenuHandle;
|
HMENU _mainMenuHandle;
|
||||||
|
LONG_PTR _prevStyles;
|
||||||
|
toolBarStatusType _prevTBState;
|
||||||
|
|
||||||
// For FullScreen feature
|
// For FullScreen feature
|
||||||
bool _isfullScreen;
|
bool _isfullScreen;
|
||||||
|
Loading…
Reference in New Issue
Block a user