Optimize SIGWINCH Shell notification

Fixes issue with missed SIGWINCH shell notification in case the
Terminal frame was resized by using any of "Settings"->"Window size"
menu items.

Fixes #9293 - original problem was pointed out by Ziusudra. Thank you!
This commit is contained in:
Siarzhuk Zharski
2013-03-17 16:45:38 +01:00
parent 1dd3b537c3
commit c2577509f9
3 changed files with 9 additions and 7 deletions
+6 -5
View File
@@ -551,7 +551,7 @@ TermView::Columns() const
//! Set number of rows and columns in terminal
BRect
TermView::SetTermSize(int rows, int columns)
TermView::SetTermSize(int rows, int columns, bool notifyShell)
{
//debug_printf("TermView::SetTermSize(%d, %d)\n", rows, columns);
if (rows > 0)
@@ -591,6 +591,9 @@ TermView::SetTermSize(int rows, int columns)
offset + rows + 2);
}
if (notifyShell)
fFrameResized = true;
return rect;
}
@@ -602,7 +605,7 @@ TermView::SetTermSize(BRect rect)
int columns;
GetTermSizeFromRect(rect, &rows, &columns);
SetTermSize(rows, columns);
SetTermSize(rows, columns, false);
}
@@ -1575,9 +1578,7 @@ TermView::FrameResized(float width, float height)
if (fResizeViewDisableCount > 0)
fResizeViewDisableCount--;
SetTermSize(rows, columns);
fFrameResized = true;
SetTermSize(rows, columns, true);
}
+2 -1
View File
@@ -72,7 +72,8 @@ public:
void GetFontSize(int* width, int* height);
int Rows() const;
int Columns() const;
BRect SetTermSize(int rows, int cols);
BRect SetTermSize(int rows, int cols,
bool notifyShell);
void SetTermSize(BRect rect);
void GetTermSizeFromRect(const BRect &rect,
int *rows, int *columns);
+1 -1
View File
@@ -817,7 +817,7 @@ TermWindow::MessageReceived(BMessage *message)
for (int32 i = 0; i < fTabView->CountTabs(); i++) {
TermView* view = _TermViewAt(i);
view->SetTermSize(rows, columns);
view->SetTermSize(rows, columns, true);
_ResizeView(view);
}
break;