Changeset View
Changeset View
Standalone View
Standalone View
addons/katebuild-plugin/plugin_katebuild.cpp
Show First 20 Lines • Show All 319 Lines • ▼ Show 20 Line(s) | 315 | { | |||
---|---|---|---|---|---|
320 | 320 | | |||
321 | QTreeWidgetItem *item = m_buildUi.errTreeWidget->currentItem(); | 321 | QTreeWidgetItem *item = m_buildUi.errTreeWidget->currentItem(); | ||
322 | if (item && item->isHidden()) item = nullptr; | 322 | if (item && item->isHidden()) item = nullptr; | ||
323 | 323 | | |||
324 | int i = (item == nullptr) ? -1 : m_buildUi.errTreeWidget->indexOfTopLevelItem(item); | 324 | int i = (item == nullptr) ? -1 : m_buildUi.errTreeWidget->indexOfTopLevelItem(item); | ||
325 | 325 | | |||
326 | while (++i < itemCount) { | 326 | while (++i < itemCount) { | ||
327 | item = m_buildUi.errTreeWidget->topLevelItem(i); | 327 | item = m_buildUi.errTreeWidget->topLevelItem(i); | ||
328 | if (!item->text(1).isEmpty() && !item->isHidden()) { | 328 | // Search item which fit view settings and has desired data | ||
329 | if (!item->text(1).isEmpty() && !item->isHidden() && item->data(1, Qt::UserRole).toInt()) { | ||||
329 | m_buildUi.errTreeWidget->setCurrentItem(item); | 330 | m_buildUi.errTreeWidget->setCurrentItem(item); | ||
330 | m_buildUi.errTreeWidget->scrollToItem(item); | 331 | m_buildUi.errTreeWidget->scrollToItem(item); | ||
331 | slotErrorSelected(item); | 332 | slotErrorSelected(item); | ||
332 | return; | 333 | return; | ||
333 | } | 334 | } | ||
334 | } | 335 | } | ||
335 | } | 336 | } | ||
336 | 337 | | |||
337 | /******************************************************************/ | 338 | /******************************************************************/ | ||
338 | void KateBuildView::slotPrev() | 339 | void KateBuildView::slotPrev() | ||
339 | { | 340 | { | ||
340 | const int itemCount = m_buildUi.errTreeWidget->topLevelItemCount(); | 341 | const int itemCount = m_buildUi.errTreeWidget->topLevelItemCount(); | ||
341 | if (itemCount == 0) { | 342 | if (itemCount == 0) { | ||
342 | return; | 343 | return; | ||
343 | } | 344 | } | ||
344 | 345 | | |||
345 | QTreeWidgetItem *item = m_buildUi.errTreeWidget->currentItem(); | 346 | QTreeWidgetItem *item = m_buildUi.errTreeWidget->currentItem(); | ||
346 | if (item && item->isHidden()) item = nullptr; | 347 | if (item && item->isHidden()) item = nullptr; | ||
347 | 348 | | |||
348 | int i = (item == nullptr) ? itemCount : m_buildUi.errTreeWidget->indexOfTopLevelItem(item); | 349 | int i = (item == nullptr) ? itemCount : m_buildUi.errTreeWidget->indexOfTopLevelItem(item); | ||
349 | 350 | | |||
350 | while (--i >= 0) { | 351 | while (--i >= 0) { | ||
351 | item = m_buildUi.errTreeWidget->topLevelItem(i); | 352 | item = m_buildUi.errTreeWidget->topLevelItem(i); | ||
352 | if (!item->text(1).isEmpty() && !item->isHidden()) { | 353 | // Search item which fit view settings and has desired data | ||
354 | if (!item->text(1).isEmpty() && !item->isHidden() && item->data(1, Qt::UserRole).toInt()) { | ||||
353 | m_buildUi.errTreeWidget->setCurrentItem(item); | 355 | m_buildUi.errTreeWidget->setCurrentItem(item); | ||
354 | m_buildUi.errTreeWidget->scrollToItem(item); | 356 | m_buildUi.errTreeWidget->scrollToItem(item); | ||
355 | slotErrorSelected(item); | 357 | slotErrorSelected(item); | ||
356 | return; | 358 | return; | ||
357 | } | 359 | } | ||
358 | } | 360 | } | ||
359 | } | 361 | } | ||
360 | 362 | | |||
361 | /******************************************************************/ | 363 | /******************************************************************/ | ||
362 | void KateBuildView::slotErrorSelected(QTreeWidgetItem *item) | 364 | void KateBuildView::slotErrorSelected(QTreeWidgetItem *item) | ||
363 | { | 365 | { | ||
366 | // any view active? | ||||
367 | if (!m_win->activeView()) { | ||||
368 | return; | ||||
369 | } | ||||
370 | | ||||
371 | // Avoid garish highlighting of the selected line | ||||
372 | m_win->activeView()->setFocus(); | ||||
373 | | ||||
374 | // Search the item where the data we need is stored | ||||
375 | while (!item->data(1, Qt::UserRole).toInt()) { | ||||
376 | item = m_buildUi.errTreeWidget->itemAbove(item); | ||||
377 | if (!item) { | ||||
378 | return; | ||||
379 | } | ||||
380 | } | ||||
381 | | ||||
364 | // get stuff | 382 | // get stuff | ||
365 | const QString filename = item->data(0, Qt::UserRole).toString(); | 383 | const QString filename = item->data(0, Qt::UserRole).toString(); | ||
366 | if (filename.isEmpty()) return; | 384 | if (filename.isEmpty()) { | ||
385 | return; | ||||
386 | } | ||||
387 | | ||||
367 | const int line = item->data(1, Qt::UserRole).toInt(); | 388 | const int line = item->data(1, Qt::UserRole).toInt(); | ||
368 | const int column = item->data(2, Qt::UserRole).toInt(); | 389 | const int column = item->data(2, Qt::UserRole).toInt(); | ||
369 | 390 | | |||
370 | // open file (if needed, otherwise, this will activate only the right view...) | 391 | // open file (if needed, otherwise, this will activate only the right view...) | ||
371 | m_win->openUrl(QUrl::fromLocalFile(filename)); | 392 | m_win->openUrl(QUrl::fromLocalFile(filename)); | ||
372 | 393 | | |||
373 | // any view active? | | |||
374 | if (!m_win->activeView()) { | | |||
375 | return; | | |||
376 | } | | |||
377 | | ||||
378 | // do it ;) | 394 | // do it ;) | ||
379 | m_win->activeView()->setCursorPosition(KTextEditor::Cursor(line-1, column-1)); | 395 | m_win->activeView()->setCursorPosition(KTextEditor::Cursor(line-1, column-1)); | ||
380 | m_win->activeView()->setFocus(); | | |||
381 | } | 396 | } | ||
382 | 397 | | |||
383 | 398 | | |||
384 | /******************************************************************/ | 399 | /******************************************************************/ | ||
385 | void KateBuildView::addError(const QString &filename, const QString &line, | 400 | void KateBuildView::addError(const QString &filename, const QString &line, | ||
386 | const QString &column, const QString &message) | 401 | const QString &column, const QString &message) | ||
387 | { | 402 | { | ||
388 | ErrorCategory errorCategory = CategoryInfo; | 403 | ErrorCategory errorCategory = CategoryInfo; | ||
▲ Show 20 Lines • Show All 662 Lines • Show Last 20 Lines |