Bug #1530 ยป 1530.patch
| client/gui-qt/shortcuts.cpp | ||
|---|---|---|
| 
     **************************************************************************/ 
   | 
||
| 
     void fc_shortcuts_dialog::init() 
   | 
||
| 
     { 
   | 
||
| 
       fc_shortcut *sc; 
   | 
||
| 
       QPushButton *but; 
   | 
||
| 
       QScrollArea *scroll; 
   | 
||
| 
       QSize size; 
   | 
||
| 
       QString desc; 
   | 
||
| 
       QWidget *widget; 
   | 
||
| 
       shortcut_id id; 
   | 
||
| 
       widget = new QWidget(this); 
   | 
||
| 
       scroll = new QScrollArea(this); 
   | 
||
| 
       scroll->setWidgetResizable(true); 
   | 
||
| 
       scroll_layout = new QVBoxLayout; 
   | 
||
| 
       populate_scroll_layout(); 
   | 
||
| 
       main_layout = new QVBoxLayout; 
   | 
||
| 
       foreach (sc, fc_shortcuts::sc()->hash) { 
   | 
||
| 
         id = fc_shortcuts::sc()->get_id(sc); 
   | 
||
| 
         desc = fc_shortcuts::sc()->get_desc(id); 
   | 
||
| 
         add_option(sc); 
   | 
||
| 
       } 
   | 
||
| 
       widget->setProperty("doomed", true); 
   | 
||
| 
       widget->setLayout(scroll_layout); 
   | 
||
| 
       scroll->setWidget(widget); 
   | 
||
| ... | ... | |
| 
     } 
   | 
||
| 
     /**********************************************************************//** 
   | 
||
| 
       Adds shortcut option for dialog 
   | 
||
| 
       Adds all the shortcut options to the dialog's scroll_layout 
   | 
||
| 
     **************************************************************************/ 
   | 
||
| 
     void fc_shortcuts_dialog::populate_scroll_layout() 
   | 
||
| 
     { 
   | 
||
| 
       fc_shortcut *sc; 
   | 
||
| 
       shortcut_id id; 
   | 
||
| 
       QString desc; 
   | 
||
| 
       foreach (sc, fc_shortcuts::sc()->hash) { 
   | 
||
| 
         id = fc_shortcuts::sc()->get_id(sc); 
   | 
||
| 
         desc = fc_shortcuts::sc()->get_desc(id); 
   | 
||
| 
         add_option(sc); 
   | 
||
| 
       } 
   | 
||
| 
     } 
   | 
||
| 
     /**********************************************************************//** 
   | 
||
| 
       Adds a shortcut option to the dialog's scroll_layout 
   | 
||
| 
     **************************************************************************/ 
   | 
||
| 
     void fc_shortcuts_dialog::add_option(fc_shortcut *sc) 
   | 
||
| 
     { 
   | 
||
| ... | ... | |
| 
     **************************************************************************/ 
   | 
||
| 
     void fc_shortcuts_dialog::refresh() 
   | 
||
| 
     { 
   | 
||
| 
       QLayout *layout; 
   | 
||
| 
       QLayoutItem *item; 
   | 
||
| 
       QLayoutItem *box_layout_item; 
   | 
||
| 
       QLayoutItem *row_layout_item; 
   | 
||
| 
       QWidget *widget; 
   | 
||
| 
       layout = main_layout; 
   | 
||
| 
       while ((item = layout->takeAt(0))) { 
   | 
||
| 
         if (item->layout() != nullptr) { 
   | 
||
| 
           // Nothing 
   | 
||
| 
         } else if ((widget = item->widget()) != nullptr) { 
   | 
||
| 
           widget->hide(); 
   | 
||
| 
           delete widget; 
   | 
||
| 
         } else { 
   | 
||
| 
           delete item; 
   | 
||
| 
       QLayout *box_layout; // corresponds to one of the hb's in add_option() 
   | 
||
| 
       // clear out the scroll_layout 
   | 
||
| 
       while ((row_layout_item = scroll_layout->takeAt(0)) != nullptr) { 
   | 
||
| 
         box_layout = row_layout_item->layout(); 
   | 
||
| 
         while ((box_layout_item = box_layout->takeAt(0)) != nullptr) { 
   | 
||
| 
           widget = box_layout_item->widget(); 
   | 
||
| 
           if (widget != nullptr) { // this test may not be needed 
   | 
||
| 
             delete widget; 
   | 
||
| 
           } 
   | 
||
| 
           delete box_layout_item; 
   | 
||
| 
         } 
   | 
||
| 
         delete row_layout_item; 
   | 
||
| 
       } 
   | 
||
| 
       delete main_layout; 
   | 
||
| 
       init(); 
   | 
||
| 
       // re-populate the scroll_layout 
   | 
||
| 
       populate_scroll_layout(); 
   | 
||
| 
     } 
   | 
||
| 
     /**********************************************************************//** 
   | 
||
| client/gui-qt/shortcuts.h | ||
|---|---|---|
| 
       QMap<shortcut_id, fc_shortcut*> *hashcopy; 
   | 
||
| 
       void add_option(fc_shortcut *sc); 
   | 
||
| 
       void init(); 
   | 
||
| 
       void populate_scroll_layout(); 
   | 
||
| 
       void refresh(); 
   | 
||
| 
     public: 
   | 
||
| 
       fc_shortcuts_dialog(QWidget *parent = 0); 
   | 
||