@@ -87,6 +87,7 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
8787
8888 while (_state == kEditState ) {
8989 MAEvent event = getNextEvent ();
90+ bool exitHelp = false ;
9091 switch (event.type ) {
9192 case EVENT_TYPE_POINTER_PRESSED:
9293 if (!showStatus && widget == editWidget && event.point .x < editWidget->getMarginWidth ()) {
@@ -135,14 +136,11 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
135136 break ;
136137 case SB_KEY_F (1 ):
137138 if (widget == helpWidget) {
138- // end help mode
139- widget = editWidget;
140- helpWidget->hide ();
141- helpWidget->cancelMode ();
139+ exitHelp = true ;
142140 } else {
143141 widget = helpWidget;
144- helpWidget->createKeywordIndex ();
145142 helpWidget->showPopup (-4 , -2 );
143+ helpWidget->createKeywordIndex ();
146144 helpWidget->setFocus (true );
147145 }
148146 break ;
@@ -155,10 +153,7 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
155153 break ;
156154 case SB_KEY_CTRL (' f' ):
157155 if (widget == helpWidget) {
158- // end help mode
159- widget = editWidget;
160- helpWidget->hide ();
161- helpWidget->cancelMode ();
156+ exitHelp = true ;
162157 } else {
163158 widget = helpWidget;
164159 helpWidget->createSearch (false );
@@ -203,7 +198,7 @@ void Runtime::editSource(strlib::String loadPath, bool restoreOnExit) {
203198 }
204199 }
205200
206- if (isBack () && widget == helpWidget) {
201+ if ((exitHelp || isBack () ) && widget == helpWidget) {
207202 widget = editWidget;
208203 helpWidget->hide ();
209204 editWidget->setFocus (true );
0 commit comments