On Friday 04 July 2003 07:11, Christian B. Wiik wrote: > Easy reproducable: Utilities -> hostname -> Run -> Close window -> > crash.
my fix. -- Buenos Aires, Argentina 13°C with winds at 5 km/h WNW
Index: plugins/qt-gui//src/mainwin.cpp =================================================================== RCS file: /cvsroot/licq/qt-gui/src/mainwin.cpp,v retrieving revision 1.292 diff -u -d -p -r1.292 mainwin.cpp --- plugins/qt-gui//src/mainwin.cpp 2 Jul 2003 17:11:31 -0000 1.292 +++ plugins/qt-gui//src/mainwin.cpp 7 Jul 2003 00:00:54 -0000 @@ -3469,12 +3469,10 @@ void CMainWindow::changeDebug(int _nId) //-----CMainWindow::slot_utility---------------------------------------------- void CMainWindow::slot_utility(int _nId) { - int nUtility = mnuUtilities->indexOf(_nId); - CUtility *u = gUtilityManager.Utility(nUtility); - if (u == NULL) return; - //unsigned long nUin = userView->SelectedItemUin(); - unsigned long nUin = m_nUserMenuUin; - if (nUin != 0) (void) new CUtilityDlg(u, nUin, licqDaemon); + CUtility *u = gUtilityManager.Utility(mnuUtilities->indexOf(_nId)); + + if ( u && m_szUserMenuId ) + (void) new CUtilityDlg(u, m_szUserMenuId, m_nUserMenuPPID, licqDaemon); } Index: plugins/qt-gui//src/utilitydlg.cpp =================================================================== RCS file: /cvsroot/licq/qt-gui/src/utilitydlg.cpp,v retrieving revision 1.27 diff -u -d -p -r1.27 utilitydlg.cpp --- plugins/qt-gui//src/utilitydlg.cpp 2 Jul 2003 04:41:02 -0000 1.27 +++ plugins/qt-gui//src/utilitydlg.cpp 7 Jul 2003 00:01:03 -0000 @@ -120,92 +120,6 @@ CUtilityDlg::CUtilityDlg(CUtility *u, co show(); } -CUtilityDlg::CUtilityDlg(CUtility *u, unsigned long _nUin, CICQDaemon *_server) - : QWidget(0, "UtilityDialog", WDestructiveClose) -{ - m_nUin = _nUin; - m_xUtility = u; - server = _server; - m_bIntWin = false; - intwin = NULL; - snOut = snErr = NULL; - - m_xUtility->SetFields(m_nUin); - - QGridLayout *lay = new QGridLayout(this, 1, 3, 8, 4); - lay->setColStretch(2, 2); - lay->addColSpacing(1, 8); - setCaption(QString(tr("Licq Utility: %1")).arg(m_xUtility->Name())); - lblUtility = new QLabel(tr("Command:"), this); - lay->addWidget(lblUtility, 0, 0); - nfoUtility = new CInfoField(this, true); - nfoUtility->setMinimumWidth(nfoUtility->sizeHint().width()*2); - lay->addWidget(nfoUtility, 0, 2); - nfoUtility->setText(m_xUtility->FullCommand()); - - lay->addWidget(new QLabel(tr("Window:"), this), 1, 0); - nfoWinType = new CInfoField(this, true); - lay->addWidget(nfoWinType, 1, 2); - switch (m_xUtility->WinType()) - { - case UtilityWinGui: nfoWinType->setText(tr("GUI")); break; - case UtilityWinTerm: nfoWinType->setText(tr("Terminal")); break; - case UtilityWinLicq: nfoWinType->setText(tr("Internal")); break; - } - - lay->addWidget(new QLabel(tr("Description:"), this), 2, 0); - nfoDesc = new CInfoField(this, true); - lay->addWidget(nfoDesc, 2, 2); - nfoDesc->setText(m_xUtility->Description()); - - chkEditFinal = new QCheckBox(tr("Edit final command"), this); - lay->addMultiCellWidget(chkEditFinal, 3, 3, 0, 2); - - boxFields = new QGroupBox(1, Horizontal, tr("User Fields"), this); - lay->addMultiCellWidget(boxFields, 4, 4, 0, 2); - for (unsigned short i = 0; i < m_xUtility->NumUserFields(); i++) - { - QString s; - s.sprintf("%s (%%%d): ", m_xUtility->UserField(i)->Title(), i+1); - QLabel *lbl = new QLabel(s, boxFields); - lblFields.push_back(lbl); - QLineEdit *edt = new QLineEdit(boxFields); - edt->setText(m_xUtility->UserField(i)->FullDefault()); - edt->setMinimumSize(edt->sizeHint()); - edtFields.push_back(edt); - } - - splOutput = new QSplitter(Vertical, boxFields); - splOutput->setOpaqueResize(); - mleOut = new MLEditWrap(true, splOutput); - mleOut->setReadOnly(true); - mleErr = new MLEditWrap(true, splOutput); - mleErr->setReadOnly(true); - - splOutput->setResizeMode(mleErr, QSplitter::Stretch);//FollowSizeHint); - splOutput->setResizeMode(mleOut, QSplitter::Stretch); - splOutput->hide(); - if (m_xUtility->NumUserFields() == 0) boxFields->hide(); - - QHBoxLayout *hlay = new QHBoxLayout(); - lay->addMultiCell(hlay, 5, 5, 0, 2); - hlay->addStretch(1); - btnRun = new QPushButton(tr("&Run"), this); - btnRun->setDefault(true); - btnRun->setMinimumWidth(75); - hlay->addWidget(btnRun, 0, AlignRight); - hlay->addSpacing(20); - btnCancel = new QPushButton(tr("&Cancel"), this); - btnCancel->setMinimumWidth(75); - hlay->addWidget(btnCancel, 0, AlignLeft); - - connect(btnRun, SIGNAL(clicked()), SLOT(slot_run())); - connect(btnCancel, SIGNAL(clicked()), SLOT(slot_cancel())); - - show(); -} - - CUtilityDlg::~CUtilityDlg() { delete intwin; Index: plugins/qt-gui//src/utilitydlg.h =================================================================== RCS file: /cvsroot/licq/qt-gui/src/utilitydlg.h,v retrieving revision 1.14 diff -u -d -p -r1.14 utilitydlg.h --- plugins/qt-gui//src/utilitydlg.h 2 Jul 2003 04:41:02 -0000 1.14 +++ plugins/qt-gui//src/utilitydlg.h 7 Jul 2003 00:01:03 -0000 @@ -25,14 +25,12 @@ class CUtilityDlg : public QWidget { Q_OBJECT public: - CUtilityDlg(CUtility *u, unsigned long _nUin, CICQDaemon *_server); CUtilityDlg(CUtility *u, const char *szId, unsigned long nPPID, CICQDaemon *server); ~CUtilityDlg(); protected: CUtility *m_xUtility; CICQDaemon *server; - unsigned long m_nUin; char *m_szId; unsigned long m_nPPID; bool m_bIntWin, m_bStdOutClosed, m_bStdErrClosed;
pgp00000.pgp
Description: signature