comparison src/view_file_icon.c @ 580:e27c374460d3

vficon_release_cb(): use switch() and cleanup.
author zas_
date Sun, 04 May 2008 23:57:20 +0000
parents 2ef88100cee2
children 9b43b8256afe
comparison
equal deleted inserted replaced
579:2ef88100cee2 580:e27c374460d3
1477 gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) 1477 gint vficon_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
1478 { 1478 {
1479 ViewFile *vf = data; 1479 ViewFile *vf = data;
1480 GtkTreeIter iter; 1480 GtkTreeIter iter;
1481 IconData *id = NULL; 1481 IconData *id = NULL;
1482 gint was_selected = FALSE; 1482 gint was_selected;
1483 1483
1484 tip_schedule(vf); 1484 tip_schedule(vf);
1485 1485
1486 if ((gint)bevent->x != 0 || (gint) bevent->y != 0) 1486 if ((gint)bevent->x != 0 || (gint)bevent->y != 0)
1487 { 1487 {
1488 id = vficon_find_data_by_coord(vf, (gint)bevent->x, (gint)bevent->y, &iter); 1488 id = vficon_find_data_by_coord(vf, (gint)bevent->x, (gint)bevent->y, &iter);
1489 } 1489 }
1490 1490
1491 if (VFICON_INFO(vf, click_id)) 1491 if (VFICON_INFO(vf, click_id))
1492 { 1492 {
1493 vficon_selection_remove(vf, VFICON_INFO(vf, click_id), SELECTION_PRELIGHT, NULL); 1493 vficon_selection_remove(vf, VFICON_INFO(vf, click_id), SELECTION_PRELIGHT, NULL);
1494 } 1494 }
1495 1495
1496 if (id) was_selected = (id->selected & SELECTION_SELECTED); 1496 if (!id || VFICON_INFO(vf, click_id) != id) return TRUE;
1497 1497
1498 if (bevent->button == MOUSE_BUTTON_LEFT && 1498 was_selected = (id->selected & SELECTION_SELECTED);
1499 id && VFICON_INFO(vf, click_id) == id) 1499
1500 { 1500 switch (bevent->button)
1501 vficon_set_focus(vf, id); 1501 {
1502 1502 case MOUSE_BUTTON_LEFT:
1503 if (bevent->state & GDK_CONTROL_MASK) 1503 {
1504 { 1504 vficon_set_focus(vf, id);
1505 gint select; 1505
1506 1506 if (bevent->state & GDK_CONTROL_MASK)
1507 select = !(id->selected & SELECTION_SELECTED);
1508 if ((bevent->state & GDK_SHIFT_MASK) && VFICON_INFO(vf, prev_selection))
1509 { 1507 {
1510 vficon_select_region_util(vf, VFICON_INFO(vf, prev_selection), id, select); 1508 gint select;
1509
1510 select = !(id->selected & SELECTION_SELECTED);
1511 if ((bevent->state & GDK_SHIFT_MASK) && VFICON_INFO(vf, prev_selection))
1512 {
1513 vficon_select_region_util(vf, VFICON_INFO(vf, prev_selection), id, select);
1514 }
1515 else
1516 {
1517 vficon_select_util(vf, id, select);
1518 }
1511 } 1519 }
1512 else 1520 else
1513 { 1521 {
1514 vficon_select_util(vf, id, select); 1522 vficon_select_none(vf);
1523
1524 if ((bevent->state & GDK_SHIFT_MASK) && VFICON_INFO(vf, prev_selection))
1525 {
1526 vficon_select_region_util(vf, VFICON_INFO(vf, prev_selection), id, TRUE);
1527 }
1528 else
1529 {
1530 vficon_select_util(vf, id, TRUE);
1531 was_selected = FALSE;
1532 }
1515 } 1533 }
1516 } 1534 }
1517 else 1535 break;
1518 { 1536 case MOUSE_BUTTON_MIDDLE:
1519 vficon_select_none(vf); 1537 {
1520 1538 vficon_select_util(vf, id, !(id->selected & SELECTION_SELECTED));
1521 if ((bevent->state & GDK_SHIFT_MASK) && 1539 }
1522 VFICON_INFO(vf, prev_selection)) 1540 break;
1523 { 1541 default:
1524 vficon_select_region_util(vf, VFICON_INFO(vf, prev_selection), id, TRUE); 1542 break;
1525 } 1543 }
1526 else 1544
1527 { 1545 if (!was_selected && (id->selected & SELECTION_SELECTED))
1528 vficon_select_util(vf, id, TRUE);
1529 was_selected = FALSE;
1530 }
1531 }
1532 }
1533 else if (bevent->button == MOUSE_BUTTON_MIDDLE &&
1534 id && VFICON_INFO(vf, click_id) == id)
1535 {
1536 vficon_select_util(vf, id, !(id->selected & SELECTION_SELECTED));
1537 }
1538
1539 if (id && !was_selected &&
1540 (id->selected & SELECTION_SELECTED))
1541 { 1546 {
1542 vficon_send_layout_select(vf, id); 1547 vficon_send_layout_select(vf, id);
1543 } 1548 }
1544 1549
1545 return TRUE; 1550 return TRUE;