diff --git a/ChangeLog b/ChangeLog index d3f604c5..0a4ab9cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2017-12-30 Markus Gans * Refactoring of the FListBox mouse event handler + * Replace the switch-case in the calculator example by an STL map + with method pointers 2017-12-29 Markus Gans * Refactoring of the FDialog mouse event handler diff --git a/examples/calculator.cpp b/examples/calculator.cpp index 281d4360..146a2f8d 100644 --- a/examples/calculator.cpp +++ b/examples/calculator.cpp @@ -125,7 +125,9 @@ class Calc : public FDialog void cb_buttonClicked (FWidget*, data_ptr); private: - // Enumeration + // Typedef and Enumeration + typedef void (Calc::*keyFunction)(lDouble&); // Method pointer + enum button { Sine, @@ -166,50 +168,52 @@ class Calc : public FDialog }; // Methods - void drawDispay(); - virtual void draw(); - void clear(); - void zero(); - void one(); - void two(); - void three(); - void four(); - void five(); - void six(); - void seven(); - void eight(); - void nine(); - void add(); - void subtract(); - void multiply(); - void divide(); - void equals(); - void change_sign (lDouble&); - void radix_point(); - void reciprocal (lDouble&); - void percent (lDouble&); - void pi (lDouble&); - void open_bracket(); - void close_bracket(); - void log_e (lDouble&); - void power_e (lDouble&); - void log_10 (lDouble&); - void power_10 (lDouble&); - void power (lDouble&); - void square_root (lDouble&); - void hyperbolic (lDouble&); - void arcus (lDouble&); - void sine (lDouble&); - void cosine (lDouble&); - void tangent (lDouble&); - bool isDataEntryKey (int); - bool isOperatorKey (int); - lDouble& getValue(); - void setDisplay (lDouble); - void setInfixOperator (char); - void clearInfixOperator(); - void calcInfixOperator(); - void adjustSize(); + void drawDispay(); + virtual void draw(); + void clear (lDouble&); + void zero (lDouble&); + void one (lDouble&); + void two (lDouble&); + void three (lDouble&); + void four (lDouble&); + void five (lDouble&); + void six (lDouble&); + void seven (lDouble&); + void eight (lDouble&); + void nine (lDouble&); + void add (lDouble&); + void subtract (lDouble&); + void multiply (lDouble&); + void divide (lDouble&); + void equals (lDouble&); + void change_sign (lDouble&); + void radix_point(lDouble&); + void reciprocal (lDouble&); + void percent (lDouble&); + void pi (lDouble&); + void open_bracket (lDouble&); + void close_bracket (lDouble&); + void log_e (lDouble&); + void power_e (lDouble&); + void log_10 (lDouble&); + void power_10 (lDouble&); + void power (lDouble&); + void square_root (lDouble&); + void hyperbolic (lDouble&); + void arcus (lDouble&); + void sine (lDouble&); + void cosine (lDouble&); + void tangent (lDouble&); + bool isDataEntryKey (int); + bool isOperatorKey (int); + lDouble& getValue(); + void setDisplay (lDouble); + void setInfixOperator (char); + void clearInfixOperator(); + void calcInfixOperator(); + void adjustSize(); + const wchar_t* getButtonText (int); + void mapKeyFunctions(); // Data Members bool error; @@ -233,6 +237,7 @@ class Calc : public FDialog std::stack bracket_stack; std::map calculator_buttons; + std::map key_map; }; #pragma pack(pop) @@ -252,47 +257,10 @@ Calc::Calc (FWidget* parent) , input("") , bracket_stack() , calculator_buttons() + , key_map() { + mapKeyFunctions(); clearInfixOperator(); - - const wchar_t* const button_text[Calc::NUM_OF_BUTTONS] = - { - L"&Sin", - L"&Cos", - L"&Tan", - L"1/&x", - L"&On", - L"L&n", - L"&e\x02e3", - L"&y\x02e3", - L"Sq&r", - L"&\xf7", - L"&Lg", - L"10&\x02e3", - L"&(", - L"&)", - L"&\xd7", - L"&Hyp", - L"&7", - L"&8", - L"&9", - L"&-", - L"&Arc", - L"&4", - L"&5", - L"&6", - L"&+", - L"&\x03c0", - L"&1", - L"&2", - L"&3", - L"&%", - L"&0", - L"&.", - L"&±", - L"&=" - }; - std::setlocale(LC_NUMERIC, "C"); setText ("Calculator"); setGeometry (19, 6, 37, 18); @@ -316,7 +284,7 @@ Calc::Calc (FWidget* parent) btn->setFlat(); btn->setNoUnderline(); - btn->setText(button_text[key]); + btn->setText(getButtonText(key)); btn->setDoubleFlatLine(fc::top); btn->setDoubleFlatLine(fc::bottom); @@ -419,7 +387,7 @@ void Calc::drawDispay() } //---------------------------------------------------------------------- -void Calc::clear() +void Calc::clear (lDouble&) { error = false; arcus_mode = false; @@ -433,7 +401,7 @@ void Calc::clear() } //---------------------------------------------------------------------- -void Calc::zero() +void Calc::zero (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -446,7 +414,7 @@ void Calc::zero() } //---------------------------------------------------------------------- -void Calc::one() +void Calc::one (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -458,7 +426,7 @@ void Calc::one() } //---------------------------------------------------------------------- -void Calc::two() +void Calc::two (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -470,7 +438,7 @@ void Calc::two() } //---------------------------------------------------------------------- -void Calc::three() +void Calc::three (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -482,7 +450,7 @@ void Calc::three() } //---------------------------------------------------------------------- -void Calc::four() +void Calc::four (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -494,7 +462,7 @@ void Calc::four() } //---------------------------------------------------------------------- -void Calc::five() +void Calc::five (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -506,7 +474,7 @@ void Calc::five() } //---------------------------------------------------------------------- -void Calc::six() +void Calc::six (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -518,7 +486,7 @@ void Calc::six() } //---------------------------------------------------------------------- -void Calc::seven() +void Calc::seven (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -530,7 +498,7 @@ void Calc::seven() } //---------------------------------------------------------------------- -void Calc::eight() +void Calc::eight (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -542,7 +510,7 @@ void Calc::eight() } //---------------------------------------------------------------------- -void Calc::nine() +void Calc::nine (lDouble&) { if ( input.getLength() >= max_char ) return; @@ -554,7 +522,7 @@ void Calc::nine() } //---------------------------------------------------------------------- -void Calc::add() +void Calc::add (lDouble&) { if ( ! isOperatorKey(last_key) ) calcInfixOperator(); @@ -564,7 +532,7 @@ void Calc::add() } //---------------------------------------------------------------------- -void Calc::subtract() +void Calc::subtract (lDouble&) { if ( ! isOperatorKey(last_key) ) calcInfixOperator(); @@ -574,7 +542,7 @@ void Calc::subtract() } //---------------------------------------------------------------------- -void Calc::multiply() +void Calc::multiply (lDouble&) { if ( ! isOperatorKey(last_key) ) calcInfixOperator(); @@ -584,7 +552,7 @@ void Calc::multiply() } //---------------------------------------------------------------------- -void Calc::divide() +void Calc::divide (lDouble&) { if ( ! isOperatorKey(last_key) ) calcInfixOperator(); @@ -594,7 +562,7 @@ void Calc::divide() } //---------------------------------------------------------------------- -void Calc::equals() +void Calc::equals (lDouble&) { infix_operator = last_infix_operator; calcInfixOperator(); @@ -609,10 +577,18 @@ void Calc::change_sign (lDouble& x) } //---------------------------------------------------------------------- -void Calc::radix_point() +void Calc::radix_point (lDouble&) { - if ( ! input.includes('.') ) + if ( input.getLength() >= max_char ) + return; + + if ( isDataEntryKey(last_key) + && ! input.isNull() + && ! input.isEmpty() + && ! input.includes('.') ) input += '.'; + else + input = "0."; } //---------------------------------------------------------------------- @@ -643,7 +619,7 @@ void Calc::pi (lDouble& x) } //---------------------------------------------------------------------- -void Calc::open_bracket() +void Calc::open_bracket (lDouble&) { stack_data d = { a, infix_operator }; bracket_stack.push(d); @@ -654,7 +630,7 @@ void Calc::open_bracket() } //---------------------------------------------------------------------- -void Calc::close_bracket() +void Calc::close_bracket (lDouble&) { if ( bracket_stack.empty() ) return; @@ -1017,6 +993,7 @@ void Calc::calcInfixOperator() default: break; } + clearInfixOperator(); } @@ -1032,13 +1009,19 @@ void Calc::onKeyPress (FKeyEvent* ev) case fc::Fkey_backspace: if ( len > 0 ) { - if ( len == 1 ) - input = ""; - else - input = input.left(input.getLength() - 1); - lDouble& x = getValue(); - x = lDouble(std::atof(input.c_str())); + + if ( len == 1 ) + { + input = ""; + x = 0.0L; + } + else + { + input = input.left(input.getLength() - 1); + x = lDouble(std::atof(input.c_str())); + } + drawDispay(); updateTerminal(); } @@ -1078,149 +1061,10 @@ void Calc::onClose (FCloseEvent* ev) void Calc::cb_buttonClicked (FWidget*, data_ptr data) { lDouble& x = getValue(); - int key = *(static_cast(data)); + Calc::button key = *(static_cast(data)); - switch ( key ) - { - case Sine: - sine(x); // sin - break; - - case Cosine: - cosine(x); // cos - break; - - case Tangent: - tangent(x); // tan - break; - - case Reciprocal: - reciprocal(x); // 1 / x - break; - - case On: - clear(); - break; - - case Natural_logarithm: - log_e(x); // ln - break; - - case Powers_of_e: - power_e(x); // eˣ - break; - - case Power: - power(x); // yˣ - break; - - case Square_root: - square_root(x); // sqrt - break; - - case Divide: - divide(); // ÷ - break; - - case Common_logarithm: - log_10(x); // lg - break; - - case Powers_of_ten: - power_10(x); // 10ˣ - break; - - case Parenthese_l: - open_bracket(); // ( - break; - - case Parenthese_r: - close_bracket(); // ) - break; - - case Multiply: - multiply(); // * - break; - - case Hyperbolic: - hyperbolic(x); // hyp - break; - - case Seven: - seven(); // 7 - break; - - case Eight: - eight(); // 8 - break; - - case Nine: - nine(); // 9 - break; - - case Subtract: - subtract(); // - - break; - - case Arcus: - arcus(x); // arc - break; - - case Four: - four(); // 4 - break; - - case Five: - five(); // 5 - break; - - case Six: - six(); // 6 - break; - - case Add: - add(); // + - break; - - case Pi: - pi(x); // π - break; - - case One: - one(); // 1 - break; - - case Two: - two(); // 2 - break; - - case Three: - three(); // 3 - break; - - case Percent: - percent(x); // % - break; - - case Zero: - zero(); // 0 - break; - - case Decimal_point: - radix_point(); // . - break; - - case Change_sign: - change_sign(x); // ± - break; - - case Equals: - equals(); // = - break; - - default: - break; - } // end of switch + // Call the key function + (this->*key_map[key])(x); if ( ! input.isEmpty() ) { @@ -1228,7 +1072,7 @@ void Calc::cb_buttonClicked (FWidget*, data_ptr data) x = lDouble(input.toDouble()); else { - // remove trailing zeros + // Remove trailing zeros while ( ! input.includes(L'e') && input.includes(L'.') && input.back() == L'0' ) @@ -1255,6 +1099,89 @@ void Calc::adjustSize() FDialog::adjustSize(); } +//---------------------------------------------------------------------- +const wchar_t* Calc::getButtonText (int key) +{ + static const wchar_t* const button_text[Calc::NUM_OF_BUTTONS] = + { + L"&Sin", + L"&Cos", + L"&Tan", + L"1/&x", + L"&On", + L"L&n", + L"&e\x02e3", + L"&y\x02e3", + L"Sq&r", + L"&\xf7", + L"&Lg", + L"10&\x02e3", + L"&(", + L"&)", + L"&\xd7", + L"&Hyp", + L"&7", + L"&8", + L"&9", + L"&-", + L"&Arc", + L"&4", + L"&5", + L"&6", + L"&+", + L"&\x03c0", + L"&1", + L"&2", + L"&3", + L"&%", + L"&0", + L"&.", + L"&±", + L"&=" + }; + + return button_text[key]; +} + +//---------------------------------------------------------------------- +void Calc::mapKeyFunctions() +{ + key_map[Sine] = &Calc::sine; // sin + key_map[Cosine] = &Calc::cosine; // cos + key_map[Tangent] = &Calc::tangent; // tan + key_map[Reciprocal] = &Calc::reciprocal; // 1/x + key_map[On] = &Calc::clear; // On + key_map[Natural_logarithm] = &Calc::log_e; // ln + key_map[Powers_of_e] = &Calc::power_e; // eˣ + key_map[Power] = &Calc::power; // yˣ + key_map[Square_root] = &Calc::square_root; // sqrt + key_map[Divide] = &Calc::divide; // ÷ + key_map[Common_logarithm] = &Calc::log_10; // lg + key_map[Powers_of_ten] = &Calc::power_10; // 10ˣ + key_map[Parenthese_l] = &Calc::open_bracket; // ( + key_map[Parenthese_r] = &Calc::close_bracket; // ) + key_map[Multiply] = &Calc::multiply; // * + key_map[Hyperbolic] = &Calc::hyperbolic; // hyp + key_map[Seven] = &Calc::seven; // 7 + key_map[Eight] = &Calc::eight; // 8 + key_map[Nine] = &Calc::nine; // 9 + key_map[Subtract] = &Calc::subtract; // - + key_map[Arcus] = &Calc::arcus; // arc + key_map[Four] = &Calc::four; // 4 + key_map[Five] = &Calc::five; // 5 + key_map[Six] = &Calc::six; // 6 + key_map[Add] = &Calc::add; // + + key_map[Pi] = &Calc::pi; // π + key_map[One] = &Calc::one; // 1 + key_map[Two] = &Calc::two; // 2 + key_map[Three] = &Calc::three; // 3 + key_map[Percent] = &Calc::percent; // % + key_map[Zero] = &Calc::zero; // 0 + key_map[Decimal_point] = &Calc::radix_point; // . + key_map[Change_sign] = &Calc::change_sign; // ± + key_map[Equals] = &Calc::equals; // = +} + //---------------------------------------------------------------------- // main part diff --git a/examples/choice.cpp b/examples/choice.cpp index b8c2b1dc..d9b0fa0b 100644 --- a/examples/choice.cpp +++ b/examples/choice.cpp @@ -54,8 +54,8 @@ int main (int argc, char* argv[]) dgl->setText ("UNIX select"); w = 20; h = 13; - x = (app.getColumnNumber() - w) / 2; - y = (app.getLineNumber() - h) / 2; + x = (app.getDesktopWidth() - w) / 2; + y = (app.getDesktopHeight() - h) / 2; dgl->setGeometry (x, y, w, h); // Create a button group diff --git a/examples/keyboard.cpp b/examples/keyboard.cpp index 7d01db4a..6caa57da 100644 --- a/examples/keyboard.cpp +++ b/examples/keyboard.cpp @@ -44,8 +44,6 @@ class Keyboard : public FWidget Keyboard::Keyboard (FWidget* parent) : FWidget(parent) { - resetXTermForeground(); - resetXTermBackground(); wc.term_fg = fc::Default; wc.term_bg = fc::Default; } @@ -56,7 +54,7 @@ void Keyboard::onKeyPress (FKeyEvent* ev) int key_id = ev->key(); bool is_last_line = false; - if ( getPrintPos().getY() == getLineNumber() ) + if ( getPrintPos().getY() == getDesktopHeight() ) is_last_line = true; print() << "Key " << getKeyName(key_id).c_str() diff --git a/examples/opti-move.cpp b/examples/opti-move.cpp index 3e9a3685..dbf0e288 100644 --- a/examples/opti-move.cpp +++ b/examples/opti-move.cpp @@ -26,9 +26,12 @@ #include -// global FVTerm object +// Global FVTerm object static FVTerm* terminal; +// Global FApplication object +static FApplication* app; + // function prototype bool keyPressed(); void term_boundaries (int&, int&); @@ -63,8 +66,8 @@ bool keyPressed() void term_boundaries (int& x, int& y) { // checks and corrects the terminal boundaries - int term_width = terminal->getColumnNumber(); - int term_height = terminal->getLineNumber(); + int term_width = app->getDesktopWidth(); + int term_height = app->getDesktopHeight(); if ( x < 0 ) x = 0; @@ -156,10 +159,11 @@ int main (int argc, char* argv[]) // Pointer to the global virtual terminal object terminal = static_cast(&TermApp); + app = &TermApp; // Get screen dimension - xmax = TermApp.getColumnNumber() - 1; - ymax = TermApp.getLineNumber() - 1; + xmax = TermApp.getDesktopWidth() - 1; + ymax = TermApp.getDesktopHeight() - 1; FString line(xmax + 1, '-'); // Place the cursor in the upper left corner diff --git a/examples/scrollview.cpp b/examples/scrollview.cpp index f682ad40..28737e69 100644 --- a/examples/scrollview.cpp +++ b/examples/scrollview.cpp @@ -74,16 +74,16 @@ Scrollview::Scrollview (FWidget* parent) , go_north() { // Create the four navigation buttons - go_east = new FButton(wchar_t(fc::BlackRightPointingPointer) , this); + go_east = new FButton(wchar_t(fc::BlackRightPointingPointer), this); go_east->setGeometry (1, 1, 5, 1); - go_south = new FButton(wchar_t(fc::BlackDownPointingTriangle) , this); + go_south = new FButton(wchar_t(fc::BlackDownPointingTriangle), this); go_south->setGeometry (getScrollWidth() - 5, 1, 5, 1); - go_west = new FButton(wchar_t(fc::BlackLeftPointingPointer) , this); + go_west = new FButton(wchar_t(fc::BlackLeftPointingPointer), this); go_west->setGeometry (getScrollWidth() - 5, getScrollHeight() - 2, 5, 1); - go_north = new FButton(wchar_t(fc::BlackUpPointingTriangle) , this); + go_north = new FButton(wchar_t(fc::BlackUpPointingTriangle), this); go_north->setGeometry (1, getScrollHeight() - 2, 5, 1); // Add scroll function callbacks to the buttons @@ -199,7 +199,7 @@ class Scrollviewdemo : public FDialog explicit Scrollviewdemo (FWidget* = 0); // Destructor - ~Scrollviewdemo (); + ~Scrollviewdemo(); // Event handler void onClose (FCloseEvent*); diff --git a/examples/term-attributes.cpp b/examples/term-attributes.cpp index 276be06b..2aee1669 100644 --- a/examples/term-attributes.cpp +++ b/examples/term-attributes.cpp @@ -73,8 +73,6 @@ AttribDlg::AttribDlg (FWidget* parent) , next_button() , back_button() { - resetXTermForeground(); - resetXTermBackground(); setText ( "A terminal attributes test (" + FString(getTermType()) + ")"); diff --git a/examples/timer.cpp b/examples/timer.cpp index c195cff6..fc2ef822 100644 --- a/examples/timer.cpp +++ b/examples/timer.cpp @@ -52,8 +52,6 @@ Timer::Timer (FWidget* parent) delTimer (id); addTimer (250); // 250-millisecond timer - resetXTermForeground(); - resetXTermBackground(); wc.term_fg = fc::Default; wc.term_bg = fc::Default; } @@ -74,7 +72,7 @@ void Timer::onTimer (FTimerEvent* ev) bool is_last_line = false; int timer_id = ev->timerId(); - if ( getPrintPos().getY() == getLineNumber() ) + if ( getPrintPos().getY() == getDesktopHeight() ) is_last_line = true; setColor (short(1 + timer_id), fc::Default); diff --git a/examples/ui.cpp b/examples/ui.cpp index ea0b7d30..6637c345 100644 --- a/examples/ui.cpp +++ b/examples/ui.cpp @@ -789,8 +789,8 @@ void MyDialog::cb_about (FWidget*, data_ptr) //---------------------------------------------------------------------- void MyDialog::cb_terminfo (FWidget*, data_ptr) { - int x = getColumnNumber(); - int y = getLineNumber(); + int x = getDesktopWidth(); + int y = getDesktopHeight(); FMessageBox info1 ( "Environment" , FString() << " Type: " << getTermType() << "\n" diff --git a/include/final/fwidget.h b/include/final/fwidget.h index 5ff4e33a..39e6cb7d 100644 --- a/include/final/fwidget.h +++ b/include/final/fwidget.h @@ -181,6 +181,8 @@ class FWidget : public FVTerm, public FObject const FRect& getGeometryWithShadow(); const FRect& getTermGeometry(); const FRect& getTermGeometryWithShadow(); + int getDesktopWidth(); + int getDesktopHeight(); int getFlags() const; FPoint getCursorPos(); FPoint getPrintPos(); @@ -708,6 +710,14 @@ inline const FRect& FWidget::getTermGeometryWithShadow() return adjust_wsize_term_shadow; } +//---------------------------------------------------------------------- +inline int FWidget::getDesktopWidth() +{ return getColumnNumber(); } + +//---------------------------------------------------------------------- +inline int FWidget::getDesktopHeight() +{ return getLineNumber(); } + //---------------------------------------------------------------------- inline int FWidget::getFlags() const { return flags; } diff --git a/src/fapplication.cpp b/src/fapplication.cpp index e6834c90..9565ee27 100644 --- a/src/fapplication.cpp +++ b/src/fapplication.cpp @@ -1645,11 +1645,11 @@ bool FApplication::parseUrxvtMouse() if ( y_neg || y == 0 ) y = 1; - if ( x > getColumnNumber() ) - x = short(getColumnNumber()); + if ( x > getDesktopWidth() ) + x = short(getDesktopWidth()); - if ( y > getLineNumber() ) - y = short(getLineNumber()); + if ( y > getDesktopHeight() ) + y = short(getDesktopHeight()); new_mouse_position.setPoint (x, y); // fill bit field with 0 diff --git a/src/fmenu.cpp b/src/fmenu.cpp index 02ad4c8f..f3911b15 100644 --- a/src/fmenu.cpp +++ b/src/fmenu.cpp @@ -594,9 +594,9 @@ void FMenu::adjustItems() int FMenu::adjustX (int x_pos) { // Is menu outside on the right of the screen? - if ( x_pos + int(max_item_width) >= getColumnNumber() - 1 ) + if ( x_pos + int(max_item_width) >= getDesktopWidth() - 1 ) { - x_pos = getColumnNumber() - int(max_item_width + 1); + x_pos = getDesktopWidth() - int(max_item_width + 1); // Menu to large for the screen if ( x_pos < 1 ) x_pos = 1; diff --git a/src/fmenubar.cpp b/src/fmenubar.cpp index d01ccd36..02c51c9a 100644 --- a/src/fmenubar.cpp +++ b/src/fmenubar.cpp @@ -60,7 +60,7 @@ void FMenuBar::hide() fg = wc.term_fg; bg = wc.term_bg; setColor (fg, bg); - screenWidth = getColumnNumber(); + screenWidth = getDesktopWidth(); if ( screenWidth < 0 ) return; @@ -92,7 +92,7 @@ void FMenuBar::resetMenu() //---------------------------------------------------------------------- void FMenuBar::adjustSize() { - setGeometry (1, 1, getColumnNumber(), 1, false); + setGeometry (1, 1, getDesktopWidth(), 1, false); adjustItems(); } @@ -786,7 +786,7 @@ void FMenuBar::drawItems() if ( isMonochron() ) setReverse(true); - screenWidth = getColumnNumber(); + screenWidth = getDesktopWidth(); iter = item_list.begin(); last = item_list.end(); diff --git a/src/fstatusbar.cpp b/src/fstatusbar.cpp index 66476571..f3ab46c4 100644 --- a/src/fstatusbar.cpp +++ b/src/fstatusbar.cpp @@ -200,7 +200,7 @@ void FStatusBar::hide() fg = wc.term_fg; bg = wc.term_bg; setColor (fg, bg); - screenWidth = getColumnNumber(); + screenWidth = getDesktopWidth(); if ( screenWidth < 0 ) return; @@ -235,7 +235,7 @@ void FStatusBar::drawMessage() return; x = x_msg; - termWidth = getColumnNumber(); + termWidth = getDesktopWidth(); space_offset = 1; hasKeys = bool(! key_list.empty()); @@ -352,7 +352,7 @@ void FStatusBar::clear() //---------------------------------------------------------------------- void FStatusBar::adjustSize() { - setGeometry (1, getLineNumber(), getColumnNumber(), 1, false); + setGeometry (1, getDesktopHeight(), getDesktopWidth(), 1, false); } //---------------------------------------------------------------------- @@ -581,7 +581,7 @@ void FStatusBar::drawKeys() std::vector::const_iterator iter, last; int screenWidth; - screenWidth = getColumnNumber(); + screenWidth = getDesktopWidth(); x = 1; if ( key_list.empty() ) diff --git a/src/fwidget.cpp b/src/fwidget.cpp index dea5d170..9f6985d9 100644 --- a/src/fwidget.cpp +++ b/src/fwidget.cpp @@ -1385,14 +1385,14 @@ void FWidget::detectTermSize() { FWidget* r = rootObject; FTerm::detectTermSize(); - r->adjust_wsize.setRect (1, 1, getColumnNumber(), getLineNumber()); - r->offset.setRect (0, 0, getColumnNumber(), getLineNumber()); + r->adjust_wsize.setRect (1, 1, getDesktopWidth(), getDesktopHeight()); + r->offset.setRect (0, 0, getDesktopWidth(), getDesktopHeight()); r->client_offset.setCoordinates ( r->padding.left, r->padding.top, - getColumnNumber() - 1 - r->padding.right, - getLineNumber() - 1 - r->padding.bottom + getDesktopWidth() - 1 - r->padding.right, + getDesktopHeight() - 1 - r->padding.bottom ); } @@ -2303,9 +2303,9 @@ void FWidget::init() // Determine width and height of the terminal detectTermSize(); - wsize.setRect(1, 1, getColumnNumber(), getLineNumber()); + wsize.setRect(1, 1, getDesktopWidth(), getDesktopHeight()); adjust_wsize = wsize; - offset.setRect(0, 0, getColumnNumber(), getLineNumber()); + offset.setRect(0, 0, getDesktopWidth(), getDesktopHeight()); client_offset = offset; double_flatline_mask.top.resize (uLong(getWidth()), false);