| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/gtk/task_manager_gtk.h" | 5 #include "chrome/browser/gtk/task_manager_gtk.h" |
| 6 | 6 |
| 7 #include <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 | 42 |
| 43 enum TaskManagerColumn { | 43 enum TaskManagerColumn { |
| 44 kTaskManagerIcon, | 44 kTaskManagerIcon, |
| 45 kTaskManagerPage, | 45 kTaskManagerPage, |
| 46 kTaskManagerPhysicalMem, | 46 kTaskManagerPhysicalMem, |
| 47 kTaskManagerSharedMem, | 47 kTaskManagerSharedMem, |
| 48 kTaskManagerPrivateMem, | 48 kTaskManagerPrivateMem, |
| 49 kTaskManagerCPU, | 49 kTaskManagerCPU, |
| 50 kTaskManagerNetwork, | 50 kTaskManagerNetwork, |
| 51 kTaskManagerProcessID, | 51 kTaskManagerProcessID, |
| 52 kTaskManagerWebCoreImageCache, |
| 53 kTaskManagerWebCoreScriptsCache, |
| 54 kTaskManagerWebCoreCssCache, |
| 52 kTaskManagerGoatsTeleported, | 55 kTaskManagerGoatsTeleported, |
| 53 kTaskManagerColumnCount, | 56 kTaskManagerColumnCount, |
| 54 }; | 57 }; |
| 55 | 58 |
| 56 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) { | 59 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) { |
| 57 switch (id) { | 60 switch (id) { |
| 58 case IDS_TASK_MANAGER_PAGE_COLUMN: | 61 case IDS_TASK_MANAGER_PAGE_COLUMN: |
| 59 return kTaskManagerPage; | 62 return kTaskManagerPage; |
| 60 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: | 63 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: |
| 61 return kTaskManagerPhysicalMem; | 64 return kTaskManagerPhysicalMem; |
| 62 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: | 65 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: |
| 63 return kTaskManagerSharedMem; | 66 return kTaskManagerSharedMem; |
| 64 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: | 67 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: |
| 65 return kTaskManagerPrivateMem; | 68 return kTaskManagerPrivateMem; |
| 66 case IDS_TASK_MANAGER_CPU_COLUMN: | 69 case IDS_TASK_MANAGER_CPU_COLUMN: |
| 67 return kTaskManagerCPU; | 70 return kTaskManagerCPU; |
| 68 case IDS_TASK_MANAGER_NET_COLUMN: | 71 case IDS_TASK_MANAGER_NET_COLUMN: |
| 69 return kTaskManagerNetwork; | 72 return kTaskManagerNetwork; |
| 70 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: | 73 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: |
| 71 return kTaskManagerProcessID; | 74 return kTaskManagerProcessID; |
| 75 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: |
| 76 return kTaskManagerWebCoreImageCache; |
| 77 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: |
| 78 return kTaskManagerWebCoreScriptsCache; |
| 79 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: |
| 80 return kTaskManagerWebCoreCssCache; |
| 72 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: | 81 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: |
| 73 return kTaskManagerGoatsTeleported; | 82 return kTaskManagerGoatsTeleported; |
| 74 default: | 83 default: |
| 75 NOTREACHED(); | 84 NOTREACHED(); |
| 76 return static_cast<TaskManagerColumn>(-1); | 85 return static_cast<TaskManagerColumn>(-1); |
| 77 } | 86 } |
| 78 } | 87 } |
| 79 | 88 |
| 80 int TaskManagerColumnIDToResourceID(int id) { | 89 int TaskManagerColumnIDToResourceID(int id) { |
| 81 switch (id) { | 90 switch (id) { |
| 82 case kTaskManagerPage: | 91 case kTaskManagerPage: |
| 83 return IDS_TASK_MANAGER_PAGE_COLUMN; | 92 return IDS_TASK_MANAGER_PAGE_COLUMN; |
| 84 case kTaskManagerPhysicalMem: | 93 case kTaskManagerPhysicalMem: |
| 85 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; | 94 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; |
| 86 case kTaskManagerSharedMem: | 95 case kTaskManagerSharedMem: |
| 87 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; | 96 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; |
| 88 case kTaskManagerPrivateMem: | 97 case kTaskManagerPrivateMem: |
| 89 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; | 98 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; |
| 90 case kTaskManagerCPU: | 99 case kTaskManagerCPU: |
| 91 return IDS_TASK_MANAGER_CPU_COLUMN; | 100 return IDS_TASK_MANAGER_CPU_COLUMN; |
| 92 case kTaskManagerNetwork: | 101 case kTaskManagerNetwork: |
| 93 return IDS_TASK_MANAGER_NET_COLUMN; | 102 return IDS_TASK_MANAGER_NET_COLUMN; |
| 94 case kTaskManagerProcessID: | 103 case kTaskManagerProcessID: |
| 95 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN; | 104 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN; |
| 105 case kTaskManagerWebCoreImageCache: |
| 106 return IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN; |
| 107 case kTaskManagerWebCoreScriptsCache: |
| 108 return IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN; |
| 109 case kTaskManagerWebCoreCssCache: |
| 110 return IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN; |
| 96 case kTaskManagerGoatsTeleported: | 111 case kTaskManagerGoatsTeleported: |
| 97 return IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN; | 112 return IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN; |
| 98 default: | 113 default: |
| 99 NOTREACHED(); | 114 NOTREACHED(); |
| 100 return -1; | 115 return -1; |
| 101 } | 116 } |
| 102 } | 117 } |
| 103 | 118 |
| 104 // Should be used for all gtk_tree_view functions that require a column index on | 119 // Should be used for all gtk_tree_view functions that require a column index on |
| 105 // input. | 120 // input. |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 gtk_accel_group_connect(accel_group_, | 457 gtk_accel_group_connect(accel_group_, |
| 443 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), | 458 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), |
| 444 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), | 459 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), |
| 445 this, NULL)); | 460 this, NULL)); |
| 446 } | 461 } |
| 447 | 462 |
| 448 void TaskManagerGtk::CreateTaskManagerTreeview() { | 463 void TaskManagerGtk::CreateTaskManagerTreeview() { |
| 449 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, | 464 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, |
| 450 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, | 465 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, |
| 451 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, | 466 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, |
| 452 G_TYPE_STRING); | 467 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
| 453 | 468 |
| 454 // Support sorting on all columns. | 469 // Support sorting on all columns. |
| 455 process_list_sort_ = gtk_tree_model_sort_new_with_model( | 470 process_list_sort_ = gtk_tree_model_sort_new_with_model( |
| 456 GTK_TREE_MODEL(process_list_)); | 471 GTK_TREE_MODEL(process_list_)); |
| 457 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), | 472 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 458 kTaskManagerPage, | 473 kTaskManagerPage, |
| 459 ComparePage, this, NULL); | 474 ComparePage, this, NULL); |
| 460 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), | 475 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 461 kTaskManagerPhysicalMem, | 476 kTaskManagerPhysicalMem, |
| 462 ComparePhysicalMemory, this, NULL); | 477 ComparePhysicalMemory, this, NULL); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 481 treeview_ = gtk_tree_view_new_with_model(process_list_sort_); | 496 treeview_ = gtk_tree_view_new_with_model(process_list_sort_); |
| 482 | 497 |
| 483 // Insert all the columns. | 498 // Insert all the columns. |
| 484 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); | 499 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); |
| 485 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); | 500 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); |
| 486 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); | 501 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); |
| 487 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); | 502 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); |
| 488 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); | 503 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); |
| 489 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); | 504 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); |
| 490 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); | 505 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); |
| 506 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN); |
| 507 TreeViewInsertColumn(treeview_, |
| 508 IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN); |
| 509 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN); |
| 491 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); | 510 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); |
| 492 | 511 |
| 493 // Hide some columns by default. | 512 // Hide some columns by default. |
| 494 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); | 513 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); |
| 495 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); | 514 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); |
| 496 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); | 515 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); |
| 516 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreImageCache, false); |
| 517 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreScriptsCache, false); |
| 518 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreCssCache, false); |
| 497 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); | 519 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); |
| 498 | 520 |
| 499 g_object_unref(process_list_); | 521 g_object_unref(process_list_); |
| 500 g_object_unref(process_list_sort_); | 522 g_object_unref(process_list_sort_); |
| 501 } | 523 } |
| 502 | 524 |
| 503 std::string TaskManagerGtk::GetModelText(int row, int col_id) { | 525 std::string TaskManagerGtk::GetModelText(int row, int col_id) { |
| 504 switch (col_id) { | 526 switch (col_id) { |
| 505 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process | 527 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process |
| 506 return WideToUTF8(model_->GetResourceTitle(row)); | 528 return WideToUTF8(model_->GetResourceTitle(row)); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 526 return WideToUTF8(model_->GetResourceCPUUsage(row)); | 548 return WideToUTF8(model_->GetResourceCPUUsage(row)); |
| 527 | 549 |
| 528 case IDS_TASK_MANAGER_NET_COLUMN: // Net | 550 case IDS_TASK_MANAGER_NET_COLUMN: // Net |
| 529 return WideToUTF8(model_->GetResourceNetworkUsage(row)); | 551 return WideToUTF8(model_->GetResourceNetworkUsage(row)); |
| 530 | 552 |
| 531 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID | 553 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID |
| 532 if (!model_->IsResourceFirstInGroup(row)) | 554 if (!model_->IsResourceFirstInGroup(row)) |
| 533 return std::string(); | 555 return std::string(); |
| 534 return WideToUTF8(model_->GetResourceProcessId(row)); | 556 return WideToUTF8(model_->GetResourceProcessId(row)); |
| 535 | 557 |
| 558 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN: |
| 559 return WideToUTF8(model_->GetResourceWebCoreImageCacheSize(row)); |
| 560 |
| 561 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN: |
| 562 return WideToUTF8(model_->GetResourceWebCoreScriptsCacheSize(row)); |
| 563 |
| 564 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN: |
| 565 return WideToUTF8(model_->GetResourceWebCoreCSSCacheSize(row)); |
| 566 |
| 536 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: // Goats Teleported! | 567 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: // Goats Teleported! |
| 537 return WideToUTF8(model_->GetResourceGoatsTeleported(row)); | 568 return WideToUTF8(model_->GetResourceGoatsTeleported(row)); |
| 538 | 569 |
| 539 default: | 570 default: |
| 540 return WideToUTF8(model_->GetResourceStatsValue(row, col_id)); | 571 return WideToUTF8(model_->GetResourceStatsValue(row, col_id)); |
| 541 } | 572 } |
| 542 } | 573 } |
| 543 | 574 |
| 544 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) { | 575 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) { |
| 545 SkBitmap icon = model_->GetResourceIcon(row); | 576 SkBitmap icon = model_->GetResourceIcon(row); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 557 GdkPixbuf* icon = GetModelIcon(row); | 588 GdkPixbuf* icon = GetModelIcon(row); |
| 558 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN); | 589 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN); |
| 559 std::string phys_mem = GetModelText( | 590 std::string phys_mem = GetModelText( |
| 560 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); | 591 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); |
| 561 std::string shared_mem = GetModelText( | 592 std::string shared_mem = GetModelText( |
| 562 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); | 593 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); |
| 563 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); | 594 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); |
| 564 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN); | 595 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN); |
| 565 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN); | 596 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN); |
| 566 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); | 597 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); |
| 598 |
| 599 // Querying the WebCore metrics is slow as it has to do IPC, so only do it |
| 600 // when the columns are visible. |
| 601 std::string wk_img_cache; |
| 602 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreImageCache)) |
| 603 wk_img_cache = GetModelText( |
| 604 row, IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN); |
| 605 std::string wk_scripts_cache; |
| 606 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreScriptsCache)) |
| 607 wk_scripts_cache = GetModelText( |
| 608 row, IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN); |
| 609 std::string wk_css_cache; |
| 610 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreCssCache)) |
| 611 wk_css_cache = GetModelText( |
| 612 row, IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN); |
| 613 |
| 567 std::string goats = GetModelText( | 614 std::string goats = GetModelText( |
| 568 row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); | 615 row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); |
| 569 gtk_list_store_set(process_list_, iter, | 616 gtk_list_store_set(process_list_, iter, |
| 570 kTaskManagerIcon, icon, | 617 kTaskManagerIcon, icon, |
| 571 kTaskManagerPage, page.c_str(), | 618 kTaskManagerPage, page.c_str(), |
| 572 kTaskManagerPhysicalMem, phys_mem.c_str(), | 619 kTaskManagerPhysicalMem, phys_mem.c_str(), |
| 573 kTaskManagerSharedMem, shared_mem.c_str(), | 620 kTaskManagerSharedMem, shared_mem.c_str(), |
| 574 kTaskManagerPrivateMem, priv_mem.c_str(), | 621 kTaskManagerPrivateMem, priv_mem.c_str(), |
| 575 kTaskManagerCPU, cpu.c_str(), | 622 kTaskManagerCPU, cpu.c_str(), |
| 576 kTaskManagerNetwork, net.c_str(), | 623 kTaskManagerNetwork, net.c_str(), |
| 577 kTaskManagerProcessID, procid.c_str(), | 624 kTaskManagerProcessID, procid.c_str(), |
| 625 kTaskManagerWebCoreImageCache, wk_img_cache.c_str(), |
| 626 kTaskManagerWebCoreScriptsCache, wk_scripts_cache.c_str(), |
| 627 kTaskManagerWebCoreCssCache, wk_css_cache.c_str(), |
| 578 kTaskManagerGoatsTeleported, goats.c_str(), | 628 kTaskManagerGoatsTeleported, goats.c_str(), |
| 579 -1); | 629 -1); |
| 580 g_object_unref(icon); | 630 g_object_unref(icon); |
| 581 } | 631 } |
| 582 | 632 |
| 583 void TaskManagerGtk::KillSelectedProcesses() { | 633 void TaskManagerGtk::KillSelectedProcesses() { |
| 584 GtkTreeSelection* selection = gtk_tree_view_get_selection( | 634 GtkTreeSelection* selection = gtk_tree_view_get_selection( |
| 585 GTK_TREE_VIEW(treeview_)); | 635 GTK_TREE_VIEW(treeview_)); |
| 586 | 636 |
| 587 GtkTreeModel* model; | 637 GtkTreeModel* model; |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 TaskManagerGtk* task_manager) { | 805 TaskManagerGtk* task_manager) { |
| 756 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { | 806 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { |
| 757 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget | 807 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget |
| 758 // is destroyed. The deleted object will receive gtk signals otherwise. | 808 // is destroyed. The deleted object will receive gtk signals otherwise. |
| 759 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), | 809 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), |
| 760 GTK_RESPONSE_DELETE_EVENT); | 810 GTK_RESPONSE_DELETE_EVENT); |
| 761 } | 811 } |
| 762 | 812 |
| 763 return TRUE; | 813 return TRUE; |
| 764 } | 814 } |
| OLD | NEW |