Bug 141018

Summary: Bootloader configuration rendering issue
Product: [openSUSE] SUSE Linux 10.1 Reporter: Michael Stather <kontakt>
Component: InstallationAssignee: Joachim Plack <jplack>
Status: RESOLVED DUPLICATE QA Contact: Klaus Kämpf <kkaempf>
Severity: Normal    
Priority: P5 - None CC: lslezak
Version: Alpha 4   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Michael Stather 2005-12-24 23:22:46 UTC
When I go into the configuration of the bootloader (in "expert" mode) and I click one of the buttons in the second tab which show me advanced options, when I close that window I get back to the bootloader configuration, but the first tab is selected with no widgets inside it. This bug isn´t therre in 10.0
Comment 1 Ladislav Slezák 2006-01-06 08:02:46 UTC
I have observed the same problem.
Comment 2 Joachim Plack 2006-01-10 12:00:48 UTC
I think this is ppc only, will check
Comment 3 Ladislav Slezák 2006-01-10 12:04:27 UTC
No, I have reproduced it on i386.
Comment 4 Joachim Plack 2006-01-10 13:55:37 UTC
Thats bad to hear. There was almost no change in i386 code since then.
May be a change in CWMTab and such is the cause
Comment 5 Joachim Plack 2006-01-11 14:24:58 UTC
Yes it´s in  CWMTab

    bootloader/routines/dialogs.ycp:115 return_tab set to nil

Problem is somewhere here in CWMTab.ycp:

global define symbol Handle (map<string,any> widget, string key, map event) {
    list<string> all_tabs = widget["tabs_list"]:[];
    symbol h_ret = TabHandle (current_tab_map, event);
    if (h_ret != nil)
        return h_ret;
    any ret = event["ID"]:nil;
    if (is (ret, string) && contains (all_tabs, (string)ret) &&
        // At initialization, qt thinks it has switched to the same tab
        // So prevent unnecessary double initialization
        ret != current_tab_id)
    {
        if (! TabValidate (current_tab_map, event))
        {
            MarkCurrentTab ();
            return nil;
        }
        TabStore (current_tab_map, event);

        InitNewTab ((string) ret, widget);
    }
    return nil;
}

It looks like there are two events and the second has a bad "ID". 
Comment 6 Joachim Plack 2006-01-11 14:29:25 UTC
mvidner: Could you have a look. please? May be the Hnadle function needs some more
event filtering?
I do not fully understand the code but maybe it´s related to the new fake event:

r26170 | mvidner | 2005-11-15 18:52:45 +0100 (Tue, 15 Nov 2005) | 12 lines

CWM:
- added `menu_button
- explicitly specifying an empty help produces no errors, like no_help
- actually implemented validate_help
- added validate_type: `function_no_popup so that the function bodies
  can be shared and only validate_help needs to differ
CWMTab:
- widget_names is now optional
- generate a fake event when switching to a new tab to allow a handler
  to enabled/disable widgets before the first real UserInput takes place
- prevent double tab initialization at tab set initialization

Comment 7 Martin Vidner 2006-01-11 16:08:27 UTC
Actually the cause is the new CleanUp function of Nov 2. It was needlessly smashing current_tab_id. But thanks for the hint!

I'll join this one to the original report.

*** This bug has been marked as a duplicate of 134136 ***
Comment 8 Martin Vidner 2006-01-11 16:18:56 UTC
wrong number
Comment 9 Martin Vidner 2006-01-11 16:19:28 UTC

*** This bug has been marked as a duplicate of 134386 ***