Пример #1
0
static gboolean
bst_canvas_link_child_event (GnomeCanvasItem *item,
			     GdkEvent        *event)
{
  BstCanvasLink *clink;
  GtkWidget *widget = GTK_WIDGET (item->canvas);
  gboolean handled = FALSE;
  
  clink = BST_CANVAS_LINK (item);

  switch (event->type)
    {
    case GDK_ENTER_NOTIFY:
      if (!GTK_WIDGET_HAS_FOCUS (widget))
	gtk_widget_grab_focus (widget);
      handled = TRUE;
      break;
    case GDK_LEAVE_NOTIFY:
      handled = TRUE;
      break;
    case GDK_KEY_PRESS:
      switch (event->key.keyval)
	{
	case 'L':
	  gnome_canvas_item_lower (item, 1);
	  GNOME_CANVAS_NOTIFY (item);
	  break;
	case 'l':
	  gnome_canvas_item_lower_to_bottom (item);
	  GNOME_CANVAS_NOTIFY (item);
	  break;
	case 'R':
	  gnome_canvas_item_raise (item, 1);
	  GNOME_CANVAS_NOTIFY (item);
	  break;
	case 'r':
	  gnome_canvas_item_raise_to_top (item);
	  GNOME_CANVAS_NOTIFY (item);
	  break;
	}
      handled = TRUE;
      break;
    case GDK_KEY_RELEASE:
      handled = TRUE;
      break;
    default:
      break;
    }
  
  return handled;
}
Пример #2
0
static int itemRaise( Tcl_Interp *interp, int objc, Tcl_Obj * const objv[], 
      CanvasParams *param, GPtrArray *items, int isRaise )
{
   int k;
   int position = 0;
   if( objc == 4 )
   {
      if( Tcl_GetIntFromObj( interp, objv[3], &position ) != TCL_OK )
         return TCL_ERROR;
      if( position == 0 )
         return TCL_OK;
      if( position < 0 )
      {
         position *= -1;
         isRaise = !isRaise;
      }
   }
   else if( objc > 4 )
   {
      Tcl_WrongNumArgs( interp, 3, objv, "?position?" );
      return TCL_ERROR;
   }

   if( items != NULL )
   {
      for( k = 0; k < items->len; ++k )
      {
         Gnocl_CanvasItemInfo *info = GET_INFO( items, k );
         if( isRaise )
         {
         /* TODO: with libgnomecanvas-2.2.1 raise_to_top works exactly once */
            if( objc == 3 )
               gnome_canvas_item_raise_to_top( info->item ); 
            else
               gnome_canvas_item_raise( info->item, position );
         }
         else
         {
            if( objc == 3 )
               gnome_canvas_item_lower_to_bottom( info->item );
            else
               gnome_canvas_item_lower( info->item, position );
         }
      }
   }

   return TCL_OK;
}